diff options
author | Khaled Hosny <khaledhosny@eglug.org> | 2013-01-03 09:48:38 +0000 |
---|---|---|
committer | Khaled Hosny <khaledhosny@eglug.org> | 2013-01-03 09:48:38 +0000 |
commit | 56cfeda664bae608ccd21e46d36e867647ec770c (patch) | |
tree | 77a1fc0fd1cca97981b9d8c8bbbe836ba8775137 | |
parent | f1bd5839458f018b2c34831a49f52dd57dc00164 (diff) |
harfbuzz-0.9.10
git-svn-id: svn://tug.org/texlive/trunk@28708 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Build/source/libs/README | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/ChangeLog | 5 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/Makefile.in | 4 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/configure | 34 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10-PATCHES/ChangeLog (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8-PATCHES/ChangeLog) | 7 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10-PATCHES/TL-Changes (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8-PATCHES/TL-Changes) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/AUTHORS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/AUTHORS) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/Android.mk | 74 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/Makefile.am (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/Makefile.am) | 1 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/NEWS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/NEWS) | 32 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/README (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/README) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/THANKS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/THANKS) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/TODO (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/TODO) | 11 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.10/autogen.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/autogen.sh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/config.h.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/config.h.in) | 10 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/configure.ac (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/configure.ac) | 43 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/harfbuzz.doap (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/harfbuzz.doap) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/harfbuzz.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/harfbuzz.pc.in) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/Makefile.am (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/Makefile.am) | 4 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-c-linkage-decls.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-c-linkage-decls.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-exported-symbols.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-exported-symbols.sh) | 2 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-header-guards.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-header-guards.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-includes.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-includes.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-internal-symbols.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-internal-symbols.sh) | 2 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-libstdc++.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-libstdc++.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-static-inits.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-static-inits.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/gen-arabic-table.py (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/gen-arabic-table.py) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/gen-indic-table.py (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/gen-indic-table.py) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-atomic-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-atomic-private.hh) | 15 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-blob.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-blob.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-blob.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-blob.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-buffer-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-buffer-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-buffer.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-buffer.cc) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-buffer.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-buffer.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-cache-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-cache-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-common.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-common.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-common.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-common.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-coretext.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-coretext.cc) | 24 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-coretext.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-coretext.h) | 3 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-fallback-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-fallback-shape.cc) | 10 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-font-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-font-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-font.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-font.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-font.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-font.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ft.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ft.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ft.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ft.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-glib.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-glib.cc) | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-glib.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-glib.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-gobject-enums.cc.tmpl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-gobject-enums.cc.tmpl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-gobject-structs.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-gobject-structs.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-gobject.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-gobject.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-graphite2.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-graphite2.cc) | 30 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-graphite2.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-graphite2.h) | 8 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-icu-le.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-icu-le.cc) | 6 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-icu.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-icu.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-icu.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-icu.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-mutex-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-mutex-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-object-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-object-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-old.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-old.cc) | 14 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-open-file-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-open-file-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-open-type-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-open-type-private.hh) | 48 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-head-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-head-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-hhea-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-hhea-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-hmtx-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-hmtx-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-common-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-common-private.hh) | 258 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-gdef-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-gdef-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-gpos-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-gpos-table.hh) | 30 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-gsub-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-gsub-table.hh) | 30 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-gsubgpos-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-gsubgpos-private.hh) | 108 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout.cc) | 163 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout.h) | 8 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-map-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-map-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-map.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-map.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-maxp-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-maxp-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-name-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-name-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-arabic-fallback.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-arabic-fallback.hh) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-arabic-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-arabic-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-arabic.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-arabic.cc) | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-default.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-default.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic-machine.hh | 1443 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic-machine.rl) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic.cc) | 39 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-thai.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-thai.cc) | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-fallback-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-fallback-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-fallback.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-fallback.cc) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-normalize-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-normalize-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-normalize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-normalize.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-tag.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-tag.cc) | 214 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-tag.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-tag.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-private.hh) | 20 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-set-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-set-private.hh) | 19 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-set.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-set.cc) | 9 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-set.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-set.h) | 3 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shape-plan-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shape-plan-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shape-plan.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shape-plan.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shape-plan.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shape-plan.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shape.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shape.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shape.h) | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shaper-impl-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shaper-impl-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shaper-list.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shaper-list.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shaper-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shaper-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shaper.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shaper.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-tt-font.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-tt-font.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ucdn.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ucdn.cc) | 27 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-unicode-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-unicode-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-unicode.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-unicode.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-unicode.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-unicode.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-uniscribe.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-uniscribe.cc) | 33 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-uniscribe.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-uniscribe.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-utf-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-utf-private.hh) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-version.h.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-version.h.in) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-warning.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-warning.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/main.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/main.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/test-size-params.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/test-size-params.cc) | 13 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/test-would-substitute.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/test-would-substitute.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/test.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/test.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.8-PATCHES/patch-03-VOID | 57 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.8-PATCHES/patch-04-MSV | 14 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.8/git.mk | 224 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic-machine.hh | 1322 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/version.ac | 2 |
128 files changed, 2456 insertions, 2003 deletions
diff --git a/Build/source/libs/README b/Build/source/libs/README index dd578551ccf..588b5fb2726 100644 --- a/Build/source/libs/README +++ b/Build/source/libs/README @@ -30,8 +30,8 @@ graphite 2.4 - checked 15may12 graphite2 1.2.0 - checked 4dec12 http://sourceforge.net/projects/silgraphite/files/graphite2/ -harfbuzz 0.9.8 - checked 5dec12 - http://cgit.freedesktop.org/harfbuzz/ +harfbuzz 0.9.10 - checked 3jan13 + http://www.freedesktop.org/software/harfbuzz/release/ icu 50.1 (50_1) - checked 7nov12 http://download.icu-project.org/files/icu4c/ diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog index d1ed4aaaac3..130281a2a87 100644 --- a/Build/source/libs/harfbuzz/ChangeLog +++ b/Build/source/libs/harfbuzz/ChangeLog @@ -1,3 +1,8 @@ +2013-01-03 Khaled Hosny <khaledhosny@eglug.org> + + Import harfbuzz-0.9.10. + * version.ac: Adjust. + 2012-12-15 Peter Breitenlohner <peb@mppmu.mpg.de> * configure.ac: Use KPSE_BASIC to enable silent rules. diff --git a/Build/source/libs/harfbuzz/Makefile.in b/Build/source/libs/harfbuzz/Makefile.in index f81212a712a..4d3a14f4daa 100644 --- a/Build/source/libs/harfbuzz/Makefile.in +++ b/Build/source/libs/harfbuzz/Makefile.in @@ -54,7 +54,7 @@ subdir = . DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ $(srcdir)/config.h.in \ - $(top_srcdir)/harfbuzz-0.9.8/src/hb-version.h.in \ + $(top_srcdir)/harfbuzz-0.9.10/src/hb-version.h.in \ $(top_srcdir)/../../build-aux/depcomp ChangeLog \ ../../build-aux/config.guess ../../build-aux/config.sub \ ../../build-aux/depcomp ../../build-aux/install-sh \ @@ -514,7 +514,7 @@ $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) distclean-hdr: -rm -f config.h stamp-h1 -hb-version.h: $(top_builddir)/config.status $(top_srcdir)/harfbuzz-0.9.8/src/hb-version.h.in +hb-version.h: $(top_builddir)/config.status $(top_srcdir)/harfbuzz-0.9.10/src/hb-version.h.in cd $(top_builddir) && $(SHELL) ./config.status $@ clean-noinstLIBRARIES: diff --git a/Build/source/libs/harfbuzz/configure b/Build/source/libs/harfbuzz/configure index ac2977a3d67..9110243b246 100755 --- a/Build/source/libs/harfbuzz/configure +++ b/Build/source/libs/harfbuzz/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for harfbuzz for TeX Live 0.9.8. +# Generated by GNU Autoconf 2.69 for harfbuzz for TeX Live 0.9.10. # # Report bugs to <tex-k@tug.org>. # @@ -590,12 +590,12 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='harfbuzz for TeX Live' PACKAGE_TARNAME='harfbuzz-for-tex-live' -PACKAGE_VERSION='0.9.8' -PACKAGE_STRING='harfbuzz for TeX Live 0.9.8' +PACKAGE_VERSION='0.9.10' +PACKAGE_STRING='harfbuzz for TeX Live 0.9.10' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' -ac_unique_file="harfbuzz-0.9.8/harfbuzz.pc.in" +ac_unique_file="harfbuzz-0.9.10/harfbuzz.pc.in" # Factoring default headers for most tests. ac_includes_default="\ #include <stdio.h> @@ -1360,7 +1360,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures harfbuzz for TeX Live 0.9.8 to adapt to many kinds of systems. +\`configure' configures harfbuzz for TeX Live 0.9.10 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1431,7 +1431,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of harfbuzz for TeX Live 0.9.8:";; + short | recursive ) echo "Configuration of harfbuzz for TeX Live 0.9.10:";; esac cat <<\_ACEOF @@ -1555,7 +1555,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -harfbuzz for TeX Live configure 0.9.8 +harfbuzz for TeX Live configure 0.9.10 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2045,7 +2045,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by harfbuzz for TeX Live $as_me 0.9.8, which was +It was created by harfbuzz for TeX Live $as_me 0.9.10, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3909,7 +3909,7 @@ fi # Define the identity of the package. PACKAGE='harfbuzz-for-tex-live' - VERSION='0.9.8' + VERSION='0.9.10' cat >>confdefs.h <<_ACEOF @@ -4065,8 +4065,8 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags HB_VERSION_MAJOR=0 HB_VERSION_MINOR=9 -HB_VERSION_MICRO=8 -HB_VERSION=0.9.8 +HB_VERSION_MICRO=10 +HB_VERSION=0.9.10 ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -16486,7 +16486,7 @@ Usage: $0 [OPTIONS] Report bugs to <bug-libtool@gnu.org>." lt_cl_version="\ -harfbuzz for TeX Live config.lt 0.9.8 +harfbuzz for TeX Live config.lt 0.9.10 configured by $0, generated by GNU Autoconf 2.69. Copyright (C) 2011 Free Software Foundation, Inc. @@ -18302,14 +18302,14 @@ $as_echo "#define HAVE_INTEL_ATOMIC_PRIMITIVES 1" >>confdefs.h fi -HARFBUZZ_TREE=harfbuzz-0.9.8 +HARFBUZZ_TREE=harfbuzz-0.9.10 if test -f $srcdir/$HARFBUZZ_TREE/src/hb-version.h; then as_fn_error $? "Sorry, you must remove the file $HARFBUZZ_TREE/src/hb-version.h" "$LINENO" 5 fi -ac_config_files="$ac_config_files Makefile include/Makefile hb-version.h:harfbuzz-0.9.8/src/hb-version.h.in" +ac_config_files="$ac_config_files Makefile include/Makefile hb-version.h:harfbuzz-0.9.10/src/hb-version.h.in" cat >confcache <<\_ACEOF @@ -18858,7 +18858,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by harfbuzz for TeX Live $as_me 0.9.8, which was +This file was extended by harfbuzz for TeX Live $as_me 0.9.10, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -18924,7 +18924,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -harfbuzz for TeX Live config.status 0.9.8 +harfbuzz for TeX Live config.status 0.9.10 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -19434,7 +19434,7 @@ do "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; - "hb-version.h") CONFIG_FILES="$CONFIG_FILES hb-version.h:harfbuzz-0.9.8/src/hb-version.h.in" ;; + "hb-version.h") CONFIG_FILES="$CONFIG_FILES hb-version.h:harfbuzz-0.9.10/src/hb-version.h.in" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8-PATCHES/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-0.9.10-PATCHES/ChangeLog index 422c3774ea2..a81eff6bede 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8-PATCHES/ChangeLog +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10-PATCHES/ChangeLog @@ -1,3 +1,10 @@ +2013-01-03 Khaled Hosny <khaledhosny@eglug.org> + + Imported harfbuzz-0.9.10 source tree from: + http://www.freedesktop.org/software/harfbuzz/release/ + * patch-03-VOID (removed): Applied upstream. + * patch-04-MSV (removed): ditto. + 2012-12-06 Peter Breitenlohner <peb@mppmu.mpg.de> * patch-04-MSV (new): From Akira for MS Visual Studio 2005. diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8-PATCHES/TL-Changes b/Build/source/libs/harfbuzz/harfbuzz-0.9.10-PATCHES/TL-Changes index aff826c111f..be519ce4cc3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8-PATCHES/TL-Changes +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10-PATCHES/TL-Changes @@ -1,5 +1,5 @@ -Changes applied to the harfbuzz-0.9.8/ tree as obtained from: - http://cgit.freedesktop.org/harfbuzz/ +Changes applied to the harfbuzz-0.9.10/ tree as obtained from: + http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.10.tar.bz2 Removed: COPYING diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/AUTHORS b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/AUTHORS index c611d7d4769..c611d7d4769 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/AUTHORS +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/AUTHORS diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.10/Android.mk b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/Android.mk new file mode 100644 index 00000000000..832d55e475a --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/Android.mk @@ -0,0 +1,74 @@ +## +## Copyright (C) 2012 The Android Open Source Project +## +## Licensed under the Apache License, Version 2.0 (the "License"); +## you may not use this file except in compliance with the License. +## You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## + +LOCAL_PATH:= $(call my-dir) + +############################################################# +# build the harfbuzz library +# + +include $(CLEAR_VARS) + +LOCAL_ARM_MODE := arm + +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES:= \ + src/hb-blob.cc \ + src/hb-buffer.cc \ + src/hb-common.cc \ + src/hb-fallback-shape.cc \ + src/hb-font.cc \ + src/hb-ot-tag.cc \ + src/hb-set.cc \ + src/hb-shape.cc \ + src/hb-shape-plan.cc \ + src/hb-shaper.cc \ + src/hb-tt-font.cc \ + src/hb-unicode.cc \ + src/hb-warning.cc \ + src/hb-ot-layout.cc \ + src/hb-ot-map.cc \ + src/hb-ot-shape.cc \ + src/hb-ot-shape-complex-arabic.cc \ + src/hb-ot-shape-complex-default.cc \ + src/hb-ot-shape-complex-indic.cc \ + src/hb-ot-shape-complex-thai.cc \ + src/hb-ot-shape-normalize.cc \ + src/hb-ot-shape-fallback.cc \ + src/hb-icu.cc + +LOCAL_CPP_EXTENSION := .cc + +LOCAL_SHARED_LIBRARIES := \ + libcutils \ + libicuuc \ + libicui18n \ + libutils + +LOCAL_C_INCLUDES += \ + $(LOCAL_PATH)/src \ + external/icu4c/common + +LOCAL_CFLAGS += -DHB_NO_MT -DHAVE_OT -DHAVE_ICU + +LOCAL_LDLIBS += -lpthread + +LOCAL_MODULE:= libharfbuzz_ng + +include $(BUILD_SHARED_LIBRARY) + + diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/Makefile.am index 7717a0d4925..d7181268797 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/Makefile.am +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/Makefile.am @@ -12,6 +12,7 @@ pkgconfig_DATA = harfbuzz.pc EXTRA_DIST = \ autogen.sh \ harfbuzz.doap \ + Android.mk \ $(NULL) MAINTAINERCLEANFILES = \ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/NEWS b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/NEWS index 5b0f38a7b37..ef643f02134 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/NEWS +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/NEWS @@ -1,3 +1,35 @@ +Overview of changes leading to 0.9.10 +Thursday, January 3, 2013 +===================================== + +- [Indic] Fixed rendering of Malayalam dot-reph +- Updated OT language tags. +- Updated graphite2 backend. +- Improved hb_ot_layout_get_size_params() logic. +- Improve hb-shape/hb-view help output. +- Fixed hb-set.h implementation to not crash. +- Fixed various issues with hb_ot_layout_collect_lookups(). +- Various build fixes. + +New API: + +hb_graphite2_face_get_gr_face() +hb_graphite2_font_get_gr_font() +hb_coretext_face_get_cg_font() + +Modified API: + +hb_ot_layout_get_size_params() + + +Overview of changes leading to 0.9.9 +Wednesday, December 5, 2012 +==================================== + +- Fix build on Windows. +- Minor improvements. + + Overview of changes leading to 0.9.8 Tuesday, December 4, 2012 ==================================== diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/README b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/README index 74e739da52a..74e739da52a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/README +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/README diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/THANKS b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/THANKS index 940cfde5c39..940cfde5c39 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/THANKS +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/THANKS diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/TODO b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/TODO index 9f8ae3a9931..c93b33e62d7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/TODO +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/TODO @@ -55,16 +55,10 @@ API additions - Add glib GBoxedType stuff and introspection -- Finish Uniscribe / CoreText face / font get API - - BCP 47 language handling / API (language_matches?) -- Add hb_face_get_glyph_count()? - - Add hb_font_create_linear()? -- Add hb_shape_plan()/hb_shape_planned() - - Add query API for aalt-like features? - SFNT api? get_num_faces? get_table_tags? (there's something in stash) @@ -77,10 +71,7 @@ API additions hb-view / hb-shape enhancements: =============================== -- --output-format should list available formats. - Add --width, --height, --auto-size, --align, etc? -- Add XML and JSON formats to hb-shape -- --features="init=medi=isol=fina=0" Tests to write: @@ -94,8 +85,6 @@ Tests to write: - GObject, FreeType, etc -- hb_set_t - - hb_cache_t and relatives - hb_feature_to/from_string diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/autogen.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/autogen.sh index 47640c3e490..47640c3e490 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/autogen.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/autogen.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/config.h.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/config.h.in index 923970ccbe9..0973c936bb2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/config.h.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/config.h.in @@ -1,9 +1,5 @@ /* config.h.in. Generated from configure.ac by autoheader. */ -/* Define to 1 if you have the <ApplicationServices/ApplicationServices.h> - header file. */ -#undef HAVE_APPLICATIONSERVICES_APPLICATIONSERVICES_H - /* Define to 1 if you have the `atexit' function. */ #undef HAVE_ATEXIT @@ -118,12 +114,6 @@ /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H -/* Define to 1 if you have the <usp10.h> header file. */ -#undef HAVE_USP10_H - -/* Define to 1 if you have the <windows.h> header file. */ -#undef HAVE_WINDOWS_H - /* Define to 1 if you have the `_setmode' function. */ #undef HAVE__SETMODE diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/configure.ac index 08638f24dec..91ea7136938 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/configure.ac +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ([2.64]) AC_INIT([HarfBuzz], - [0.9.8], + [0.9.10], [http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz], [harfbuzz], [http://harfbuzz.org/]) @@ -208,7 +208,19 @@ AM_CONDITIONAL(HAVE_FREETYPE, $have_freetype) dnl =========================================================================== -AC_CHECK_HEADERS(usp10.h windows.h, have_uniscribe=true, have_uniscribe=false) +AC_MSG_CHECKING([for ScriptShapeOpenType in usp10]) +saved_LIBS=$LIBS +LIBS="$LIBS -lusp10 -lgdi32" +AC_LINK_IFELSE([AC_LANG_PROGRAM( + [[ + #define _WIN32_WINNT 0x0600 + #include <windows.h> + #include <usp10.h> + ]], + ScriptShapeOpenType)], + [have_uniscribe=true; AC_MSG_RESULT(yes)], + [have_uniscribe=false;AC_MSG_RESULT(no)]) +LIBS=$saved_LIBS if $have_uniscribe; then UNISCRIBE_CFLAGS= UNISCRIBE_LIBS="-lusp10 -lgdi32" @@ -220,7 +232,7 @@ AM_CONDITIONAL(HAVE_UNISCRIBE, $have_uniscribe) dnl =========================================================================== -AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, have_coretext=true, have_coretext=false) +AC_CHECK_TYPE(CTFontRef, have_coretext=true, have_coretext=false, [#include <ApplicationServices/ApplicationServices.h>]) if $have_coretext; then CORETEXT_CFLAGS= CORETEXT_LIBS="-framework ApplicationServices" @@ -263,3 +275,28 @@ test/shaping/Makefile ]) AC_OUTPUT + +AC_MSG_NOTICE([ + +Build configuration: + +Unicode callbacks (you want at least one): + Glib: ${have_glib} + ICU: ${have_icu} + UCDN: ${have_ucdn} + +Font callbacks (the more the better): + FreeType: ${have_freetype} + +Tools used for command-line utilities: + Cairo: ${have_cairo} + +Additional shapers (the more the better): + Graphite2: ${have_graphite} + +Test / platform shapers (not normally needed): + CoreText: ${have_coretext} + ICU Layout Engine: ${have_icu_le} + Old HarfBuzz: ${have_hb_old} + Uniscribe: ${have_uniscribe} +]) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/harfbuzz.doap b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/harfbuzz.doap index d2896ebefa8..d2896ebefa8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/harfbuzz.doap +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/harfbuzz.doap diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/harfbuzz.pc.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/harfbuzz.pc.in index e92319e156c..e92319e156c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/harfbuzz.pc.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/harfbuzz.pc.in diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/Makefile.am index b7896bf9c46..558ce08ead9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/Makefile.am +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/Makefile.am @@ -195,9 +195,13 @@ export_symbols = -export-symbols harfbuzz.def harfbuzz_def_dependency = harfbuzz.def libharfbuzz_la_LINK = $(CXXLINK) $(libharfbuzz_la_LDFLAGS) else +if HAVE_ICU +libharfbuzz_la_LINK = $(CXXLINK) $(libharfbuzz_la_LDFLAGS) +else # Use a C linker, not C++; Don't link to libstdc++ libharfbuzz_la_LINK = $(LINK) $(libharfbuzz_la_LDFLAGS) endif +endif libharfbuzz_la_SOURCES = $(HBSOURCES) $(HBHEADERS) nodist_libharfbuzz_la_SOURCES = $(nodist_HBSOURCES) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-c-linkage-decls.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-c-linkage-decls.sh index 44cdfa0f23c..44cdfa0f23c 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-c-linkage-decls.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-c-linkage-decls.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-exported-symbols.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-exported-symbols.sh index a7d6f9b6af9..6f0bf7fd823 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-exported-symbols.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-exported-symbols.sh @@ -24,7 +24,7 @@ for def in $defs; do echo "Checking that $so has the same symbol list as $def" { echo EXPORTS - nm "$so" | grep ' [BCDGINRSTVW] ' | grep -v ' T _fini\>\| T _init\>' | cut -d' ' -f3 + nm "$so" | grep ' [BCDGINRSTVW] ' | grep -v ' T _fini\>\| T _init\>\| __bss_start\>\| __bss_start__\>\| __bss_end__\>\| _edata\>\| _end\>\| _bss_end__\>\| __end__\>' | cut -d' ' -f3 stat=1 # cheat: copy the last line from the def file! tail -n1 "$def" diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-header-guards.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-header-guards.sh index af9fa7fc24e..af9fa7fc24e 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-header-guards.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-header-guards.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-includes.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-includes.sh index 79323a74fb2..79323a74fb2 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-includes.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-includes.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-internal-symbols.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-internal-symbols.sh index f48d1448e4b..a8fdc537dd7 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-internal-symbols.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-internal-symbols.sh @@ -19,7 +19,7 @@ for suffix in .so; do so=`echo .libs/libharfbuzz$suffix` if test -f "$so"; then echo "Checking that we are not exposing internal symbols" - if nm "$so" | grep ' [BCDGINRSTVW] ' | grep -v ' T _fini\>\| T _init\>\| T hb_'; then + if nm "$so" | grep ' [BCDGINRSTVW] ' | grep -v ' T _fini\>\| T _init\>\| T hb_\| __bss_start\>\| __bss_start__\>\| __bss_end__\>\| _edata\>\| _end\>\| _bss_end__\>\| __end__\>'; then echo "Ouch, internal symbols exposed" stat=1 fi diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-libstdc++.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-libstdc++.sh index e7e0e295e1a..e7e0e295e1a 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-libstdc++.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-libstdc++.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-static-inits.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-static-inits.sh index bb0a7ff630d..bb0a7ff630d 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/check-static-inits.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/check-static-inits.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/gen-arabic-table.py b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/gen-arabic-table.py index da5a4fcbf5c..da5a4fcbf5c 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/gen-arabic-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/gen-arabic-table.py diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/gen-indic-table.py b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/gen-indic-table.py index 94aa2ab0728..94aa2ab0728 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/gen-indic-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/gen-indic-table.py diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-atomic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-atomic-private.hh index 5861a7124b3..67579cdd442 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-atomic-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-atomic-private.hh @@ -59,7 +59,7 @@ static inline void HBMemoryBarrier (void) { } #endif -typedef long hb_atomic_int_t; +typedef LONG hb_atomic_int_t; #define hb_atomic_int_add(AI, V) InterlockedExchangeAdd (&(AI), (V)) #define hb_atomic_ptr_get(P) (HBMemoryBarrier (), (void *) *(P)) @@ -69,12 +69,25 @@ typedef long hb_atomic_int_t; #elif !defined(HB_NO_MT) && defined(__APPLE__) #include <libkern/OSAtomic.h> +#ifdef __MAC_OS_X_MIN_REQUIRED +#include <AvailabilityMacros.h> +#elif defined(__IPHONE_OS_MIN_REQUIRED) +#include <Availability.h> +#endif typedef int32_t hb_atomic_int_t; #define hb_atomic_int_add(AI, V) (OSAtomicAdd32Barrier ((V), &(AI)) - (V)) #define hb_atomic_ptr_get(P) (OSMemoryBarrier (), (void *) *(P)) +#if (MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_4 || __IPHONE_VERSION_MIN_REQUIRED >= 20100) #define hb_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwapPtrBarrier ((void *) (O), (void *) (N), (void **) (P)) +#else +#if __ppc64__ || __x86_64__ +#define hb_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwap64Barrier ((int64_t) (O), (int64_t) (N), (int64_t*) (P)) +#else +#define hb_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwap32Barrier ((int32_t) (O), (int32_t) (N), (int32_t*) (P)) +#endif +#endif #elif !defined(HB_NO_MT) && defined(HAVE_INTEL_ATOMIC_PRIMITIVES) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-blob.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-blob.cc index b6e696be322..b6e696be322 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-blob.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-blob.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-blob.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-blob.h index 1a93baa46dc..1a93baa46dc 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-blob.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-blob.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-buffer-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-buffer-private.hh index 13cf4bb0e9b..13cf4bb0e9b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-buffer-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-buffer-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-buffer.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-buffer.cc index 0a5600be0de..4b644e40217 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-buffer.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-buffer.cc @@ -1071,8 +1071,8 @@ hb_buffer_normalize_glyphs (hb_buffer_t *buffer) */ static const char *serialize_formats[] = { - "TEXT", - "JSON", + "text", + "json", NULL }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-buffer.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-buffer.h index 48ec4a527ad..48ec4a527ad 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-buffer.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-buffer.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-cache-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-cache-private.hh index 19b70b7e395..19b70b7e395 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-cache-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-cache-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-common.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-common.cc index 9422555cfbc..9422555cfbc 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-common.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-common.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-common.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-common.h index cc221d33be9..cc221d33be9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-common.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-common.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-coretext.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-coretext.cc index dfb6341dc61..8f94795928c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-coretext.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-coretext.cc @@ -29,10 +29,6 @@ #define HB_SHAPER coretext #include "hb-shaper-impl-private.hh" -#define GlyphID GlyphID_mac -#include <ApplicationServices/ApplicationServices.h> -#undef GlyphID - #include "hb-coretext.h" @@ -95,6 +91,14 @@ _hb_coretext_shaper_face_data_destroy (hb_coretext_shaper_face_data_t *data) free (data); } +CGFontRef +hb_coretext_face_get_cg_font (hb_face_t *face) +{ + if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return NULL; + hb_coretext_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face); + return face_data->cg_font; +} + /* * shaper font data @@ -153,19 +157,19 @@ _hb_coretext_shaper_shape_plan_data_destroy (hb_coretext_shaper_shape_plan_data_ { } - -/* - * shaper - */ - CTFontRef hb_coretext_font_get_ct_font (hb_font_t *font) { - if (unlikely (!hb_coretext_shaper_font_data_ensure (font))) return 0; + if (unlikely (!hb_coretext_shaper_font_data_ensure (font))) return NULL; hb_coretext_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); return font_data->ct_font; } + +/* + * shaper + */ + hb_bool_t _hb_coretext_shape (hb_shape_plan_t *shape_plan, hb_font_t *font, diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-coretext.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-coretext.h index 0b34203d991..c4954fa1b2c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-coretext.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-coretext.h @@ -34,6 +34,9 @@ HB_BEGIN_DECLS +CGFontRef +hb_coretext_face_get_cg_font (hb_face_t *face); + CTFontRef hb_coretext_font_get_ct_font (hb_font_t *font); diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-fallback-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-fallback-shape.cc index 989596ee55b..bdc8a80c4bd 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-fallback-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-fallback-shape.cc @@ -35,13 +35,13 @@ struct hb_fallback_shaper_face_data_t {}; hb_fallback_shaper_face_data_t * -_hb_fallback_shaper_face_data_create (hb_face_t *face) +_hb_fallback_shaper_face_data_create (hb_face_t *face HB_UNUSED) { return (hb_fallback_shaper_face_data_t *) HB_SHAPER_DATA_SUCCEEDED; } void -_hb_fallback_shaper_face_data_destroy (hb_fallback_shaper_face_data_t *data) +_hb_fallback_shaper_face_data_destroy (hb_fallback_shaper_face_data_t *data HB_UNUSED) { } @@ -53,13 +53,13 @@ _hb_fallback_shaper_face_data_destroy (hb_fallback_shaper_face_data_t *data) struct hb_fallback_shaper_font_data_t {}; hb_fallback_shaper_font_data_t * -_hb_fallback_shaper_font_data_create (hb_font_t *font) +_hb_fallback_shaper_font_data_create (hb_font_t *font HB_UNUSED) { return (hb_fallback_shaper_font_data_t *) HB_SHAPER_DATA_SUCCEEDED; } void -_hb_fallback_shaper_font_data_destroy (hb_fallback_shaper_font_data_t *data) +_hb_fallback_shaper_font_data_destroy (hb_fallback_shaper_font_data_t *data HB_UNUSED) { } @@ -89,7 +89,7 @@ _hb_fallback_shaper_shape_plan_data_destroy (hb_fallback_shaper_shape_plan_data_ */ hb_bool_t -_hb_fallback_shape (hb_shape_plan_t *shape_plan, +_hb_fallback_shape (hb_shape_plan_t *shape_plan HB_UNUSED, hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features HB_UNUSED, diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-font-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-font-private.hh index 48fbb0ee549..48fbb0ee549 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-font-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-font-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-font.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-font.cc index b59fdebaea7..b59fdebaea7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-font.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-font.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-font.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-font.h index 88d489551e8..88d489551e8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-font.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-font.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ft.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ft.cc index 6198185e9e4..6198185e9e4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ft.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ft.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ft.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ft.h index 696251e143f..696251e143f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ft.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ft.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-glib.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-glib.cc index 04627587989..676e6601628 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-glib.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-glib.cc @@ -334,7 +334,7 @@ hb_glib_unicode_decompose (hb_unicode_funcs_t *ufuncs HB_UNUSED, } static unsigned int -hb_glib_unicode_decompose_compatibility (hb_unicode_funcs_t *ufuncs, +hb_glib_unicode_decompose_compatibility (hb_unicode_funcs_t *ufuncs HB_UNUSED, hb_codepoint_t u, hb_codepoint_t *decomposed, void *user_data HB_UNUSED) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-glib.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-glib.h index 63a9d3366c5..63a9d3366c5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-glib.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-glib.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-gobject-enums.cc.tmpl b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-gobject-enums.cc.tmpl index 05abd898d4f..05abd898d4f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-gobject-enums.cc.tmpl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-gobject-enums.cc.tmpl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-gobject-structs.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-gobject-structs.cc index cec48542275..cec48542275 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-gobject-structs.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-gobject-structs.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-gobject.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-gobject.h index 4f23fdd385d..4f23fdd385d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-gobject.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-gobject.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-graphite2.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-graphite2.cc index 6c890d42c63..16ef9a4dabe 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-graphite2.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-graphite2.cc @@ -113,7 +113,7 @@ _hb_graphite2_shaper_face_data_create (hb_face_t *face) hb_blob_destroy (silf_blob); data->face = face; - data->grface = gr_make_face (data, &hb_graphite2_get_table, gr_face_default); + data->grface = gr_make_face (data, &hb_graphite2_get_table, gr_face_preloadAll); if (unlikely (!data->grface)) { free (data); @@ -141,6 +141,13 @@ _hb_graphite2_shaper_face_data_destroy (hb_graphite2_shaper_face_data_t *data) free (data); } +gr_face * +hb_graphite2_face_get_gr_face (hb_face_t *face) +{ + if (unlikely (!hb_graphite2_shaper_face_data_ensure (face))) return NULL; + return HB_SHAPER_DATA_GET (face)->grface; +} + /* * shaper font data @@ -168,6 +175,13 @@ _hb_graphite2_shaper_font_data_destroy (hb_graphite2_shaper_font_data_t *data) gr_font_destroy (data); } +gr_font * +hb_graphite2_font_get_gr_font (hb_font_t *font) +{ + if (unlikely (!hb_graphite2_shaper_font_data_ensure (font))) return NULL; + return HB_SHAPER_DATA_GET (font); +} + /* * shaper shape_plan data @@ -311,10 +325,18 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, } ci++; - buffer->clear_output (); + //buffer->clear_output (); for (unsigned int i = 0; i < ci; ++i) - buffer->replace_glyphs (clusters[i].num_chars, clusters[i].num_glyphs, gids + clusters[i].base_glyph); - buffer->swap_buffers (); + { + for (unsigned int j = 0; j < clusters[i].num_glyphs; ++j) + { + hb_glyph_info_t *info = &buffer->info[clusters[i].base_glyph + j]; + info->codepoint = gids[clusters[i].base_glyph + j]; + info->cluster = gr_cinfo_base(gr_seg_cinfo(seg, clusters[i].base_char)); + } + } + buffer->len = glyph_count; + //buffer->swap_buffers (); if (HB_DIRECTION_IS_BACKWARD(buffer->props.direction)) curradvx = gr_seg_advance_X(seg); diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-graphite2.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-graphite2.h index 81224955465..bea68f939b4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-graphite2.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-graphite2.h @@ -33,7 +33,13 @@ HB_BEGIN_DECLS #define HB_GRAPHITE2_TAG_SILF HB_TAG('S','i','l','f') -/* TODO add gr_font/face etc getters and other glue API */ + +gr_face * +hb_graphite2_face_get_gr_face (hb_face_t *face); + +gr_font * +hb_graphite2_font_get_gr_font (hb_font_t *font); + HB_END_DECLS diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-icu-le.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-icu-le.cc index 61099fedf74..c05d330b957 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-icu-le.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-icu-le.cc @@ -43,13 +43,13 @@ struct hb_icu_le_shaper_face_data_t {}; hb_icu_le_shaper_face_data_t * -_hb_icu_le_shaper_face_data_create (hb_face_t *face) +_hb_icu_le_shaper_face_data_create (hb_face_t *face HB_UNUSED) { return (hb_icu_le_shaper_face_data_t *) HB_SHAPER_DATA_SUCCEEDED; } void -_hb_icu_le_shaper_face_data_destroy (hb_icu_le_shaper_face_data_t *data) +_hb_icu_le_shaper_face_data_destroy (hb_icu_le_shaper_face_data_t *data HB_UNUSED) { } @@ -88,7 +88,7 @@ _hb_icu_le_shaper_font_data_destroy (hb_icu_le_shaper_font_data_t *data) struct hb_icu_le_shaper_shape_plan_data_t {}; hb_icu_le_shaper_shape_plan_data_t * -_hb_icu_le_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan, +_hb_icu_le_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan HB_UNUSED, const hb_feature_t *user_features, unsigned int num_user_features) { diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-icu.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-icu.cc index c177be2c4b2..c177be2c4b2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-icu.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-icu.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-icu.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-icu.h index f2f35f0f2ce..f2f35f0f2ce 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-icu.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-icu.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-mutex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-mutex-private.hh index 5b3a17e9174..5b3a17e9174 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-mutex-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-mutex-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-object-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-object-private.hh index 8a9ae34dbee..8a9ae34dbee 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-object-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-object-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-old.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-old.cc index 7c3e3702b46..a7ea8ed9bbe 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-old.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-old.cc @@ -110,7 +110,7 @@ hb_old_getGlyphAdvances (HB_Font old_font, const HB_Glyph *glyphs, hb_uint32 numGlyphs, HB_Fixed *advances, - int flags /*HB_ShaperFlag*/) + int flags /*HB_ShaperFlag*/ HB_UNUSED) { hb_font_t *font = (hb_font_t *) old_font->userData; @@ -251,15 +251,15 @@ _hb_old_shaper_font_data_destroy (hb_old_shaper_font_data_t *data) struct hb_old_shaper_shape_plan_data_t {}; hb_old_shaper_shape_plan_data_t * -_hb_old_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan, - const hb_feature_t *user_features, - unsigned int num_user_features) +_hb_old_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan HB_UNUSED, + const hb_feature_t *user_features HB_UNUSED, + unsigned int num_user_features HB_UNUSED) { return (hb_old_shaper_shape_plan_data_t *) HB_SHAPER_DATA_SUCCEEDED; } void -_hb_old_shaper_shape_plan_data_destroy (hb_old_shaper_shape_plan_data_t *data) +_hb_old_shaper_shape_plan_data_destroy (hb_old_shaper_shape_plan_data_t *data HB_UNUSED) { } @@ -269,7 +269,7 @@ _hb_old_shaper_shape_plan_data_destroy (hb_old_shaper_shape_plan_data_t *data) */ hb_bool_t -_hb_old_shape (hb_shape_plan_t *shape_plan, +_hb_old_shape (hb_shape_plan_t *shape_plan HB_UNUSED, hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, @@ -369,7 +369,7 @@ retry: *p = MIN (*p, buffer->info[i].cluster); } for (unsigned int i = 1; i < num_glyphs; i++) - if (vis_clusters[i] == -1) + if (vis_clusters[i] == (uint32_t) -1) vis_clusters[i] = vis_clusters[i - 1]; #undef utf16_index diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-open-file-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-open-file-private.hh index 250504ae20b..250504ae20b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-open-file-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-open-file-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-open-type-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-open-type-private.hh index 2372235a5ae..5bfeb165470 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-open-type-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-open-type-private.hh @@ -180,9 +180,7 @@ struct hb_sanitize_context_t template <typename T> inline return_t process (const T &obj) { return obj.sanitize (this); } static return_t default_return_value (void) { return true; } - bool stop_sublookup_iteration (const return_t r) const { return false; } - return_t recurse (unsigned int lookup_index) - { return default_return_value (); } + bool stop_sublookup_iteration (const return_t r HB_UNUSED) const { return false; } inline void init (hb_blob_t *b) { @@ -257,7 +255,8 @@ struct hb_sanitize_context_t "may_edit(%u) [%p..%p] (%d bytes) in [%p..%p] -> %s", this->edit_count, p, p + len, len, - this->start, this->end); + this->start, this->end, + this->writable ? "GRANTED" : "DENIED"); return TRACE_RETURN (this->writable); } @@ -536,32 +535,43 @@ struct BEInt<Type, 4> inline bool operator != (const BEInt<Type, 4>& o) const { return !(*this == o); } private: uint8_t v[4]; }; +template <typename Type> +struct BEInt<Type, 3> +{ + public: + inline void set (Type i) { hb_be_uint24_put (v,i); } + inline operator Type (void) const { return hb_be_uint24_get (v); } + inline bool operator == (const BEInt<Type, 3>& o) const { return hb_be_uint24_eq (v, o.v); } + inline bool operator != (const BEInt<Type, 3>& o) const { return !(*this == o); } + private: uint8_t v[3]; +}; /* Integer types in big-endian order and no alignment requirement */ -template <typename Type> +template <typename Type, unsigned int Size> struct IntType { inline void set (Type i) { v.set (i); } inline operator Type(void) const { return v; } - inline bool operator == (const IntType<Type> &o) const { return v == o.v; } - inline bool operator != (const IntType<Type> &o) const { return v != o.v; } - static inline int cmp (const IntType<Type> *a, const IntType<Type> *b) { return b->cmp (*a); } - inline int cmp (IntType<Type> va) const { Type a = va; Type b = v; return a < b ? -1 : a == b ? 0 : +1; } + inline bool operator == (const IntType<Type,Size> &o) const { return v == o.v; } + inline bool operator != (const IntType<Type,Size> &o) const { return v != o.v; } + static inline int cmp (const IntType<Type,Size> *a, const IntType<Type,Size> *b) { return b->cmp (*a); } + inline int cmp (IntType<Type,Size> va) const { Type a = va; Type b = v; return a < b ? -1 : a == b ? 0 : +1; } inline int cmp (Type a) const { Type b = v; return a < b ? -1 : a == b ? 0 : +1; } inline bool sanitize (hb_sanitize_context_t *c) { TRACE_SANITIZE (this); return TRACE_RETURN (likely (c->check_struct (this))); } protected: - BEInt<Type, sizeof (Type)> v; + BEInt<Type, Size> v; public: - DEFINE_SIZE_STATIC (sizeof (Type)); + DEFINE_SIZE_STATIC (Size); }; -typedef IntType<uint16_t> USHORT; /* 16-bit unsigned integer. */ -typedef IntType<int16_t> SHORT; /* 16-bit signed integer. */ -typedef IntType<uint32_t> ULONG; /* 32-bit unsigned integer. */ -typedef IntType<int32_t> LONG; /* 32-bit signed integer. */ +typedef IntType<uint16_t, 2> USHORT; /* 16-bit unsigned integer. */ +typedef IntType<int16_t, 2> SHORT; /* 16-bit signed integer. */ +typedef IntType<uint32_t, 4> ULONG; /* 32-bit unsigned integer. */ +typedef IntType<int32_t, 4> LONG; /* 32-bit signed integer. */ +typedef IntType<uint32_t, 3> UINT24; /* 24-bit unsigned integer. */ /* 16-bit signed integer (SHORT) that describes a quantity in FUnits. */ typedef SHORT FWORD; @@ -695,7 +705,13 @@ struct GenericOffsetTo : OffsetType return TRACE_RETURN (likely (obj.sanitize (c, user_data)) || neuter (c)); } - private: + inline bool try_set (hb_sanitize_context_t *c, const OffsetType &v) { + if (c->may_edit (this, this->static_size)) { + this->set (v); + return true; + } + return false; + } /* Set the offset to Null */ inline bool neuter (hb_sanitize_context_t *c) { if (c->may_edit (this, this->static_size)) { diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-head-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-head-table.hh index 3a9451295de..3a9451295de 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-head-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-head-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-hhea-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-hhea-table.hh index 2b89c4e0208..2b89c4e0208 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-hhea-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-hhea-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-hmtx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-hmtx-table.hh index b94337d0be7..b94337d0be7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-hmtx-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-hmtx-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-common-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-common-private.hh index 0b753b83346..e6018db1243 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-common-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-common-private.hh @@ -60,9 +60,14 @@ struct Record return tag.cmp (a); } + struct sanitize_closure_t { + hb_tag_t tag; + void *list_base; + }; inline bool sanitize (hb_sanitize_context_t *c, void *base) { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && offset.sanitize (c, base)); + const sanitize_closure_t closure = {tag, base}; + return TRACE_RETURN (c->check_struct (this) && offset.sanitize (c, base, &closure)); } Tag tag; /* 4-byte Tag identifier */ @@ -192,7 +197,8 @@ struct LangSys return reqFeatureIndex;; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c, + const Record<LangSys>::sanitize_closure_t * = NULL) { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && featureIndex.sanitize (c)); } @@ -230,7 +236,8 @@ struct Script inline bool has_default_lang_sys (void) const { return defaultLangSys != 0; } inline const LangSys& get_default_lang_sys (void) const { return this+defaultLangSys; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c, + const Record<Script>::sanitize_closure_t * = NULL) { TRACE_SANITIZE (this); return TRACE_RETURN (defaultLangSys.sanitize (c, this) && langSys.sanitize (c, this)); } @@ -248,32 +255,218 @@ struct Script typedef RecordListOf<Script> ScriptList; + +/* http://www.microsoft.com/typography/otspec/features_pt.htm#size */ struct FeatureParamsSize { inline bool sanitize (hb_sanitize_context_t *c) { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this)); + if (unlikely (!c->check_struct (this))) return TRACE_RETURN (false); + + /* This subtable has some "history", if you will. Some earlier versions of + * Adobe tools calculated the offset of the FeatureParams sutable from the + * beginning of the FeatureList table! Now, that is dealt with in the + * Feature implementation. But we still need to be able to tell junk from + * real data. Note: We don't check that the nameID actually exists. + * + * Read Roberts wrote on 9/15/06 on opentype-list@indx.co.uk : + * + * Yes, it is correct that a new version of the AFDKO (version 2.0) will be + * coming out soon, and that the makeotf program will build a font with a + * 'size' feature that is correct by the specification. + * + * The specification for this feature tag is in the "OpenType Layout Tag + * Registry". You can see a copy of this at: + * http://partners.adobe.com/public/developer/opentype/index_tag8.html#size + * + * Here is one set of rules to determine if the 'size' feature is built + * correctly, or as by the older versions of MakeOTF. You may be able to do + * better. + * + * Assume that the offset to the size feature is according to specification, + * and make the following value checks. If it fails, assume the the size + * feature is calculated as versions of MakeOTF before the AFDKO 2.0 built it. + * If this fails, reject the 'size' feature. The older makeOTF's calculated the + * offset from the beginning of the FeatureList table, rather than from the + * beginning of the 'size' Feature table. + * + * If "design size" == 0: + * fails check + * + * Else if ("subfamily identifier" == 0 and + * "range start" == 0 and + * "range end" == 0 and + * "range start" == 0 and + * "menu name ID" == 0) + * passes check: this is the format used when there is a design size + * specified, but there is no recommended size range. + * + * Else if ("design size" < "range start" or + * "design size" > "range end" or + * "range end" <= "range start" or + * "menu name ID" < 256 or + * "menu name ID" > 32767 or + * menu name ID is not a name ID which is actually in the name table) + * fails test + * Else + * passes test. + */ + + if (!designSize) + return TRACE_RETURN (false); + else if (subfamilyID == 0 && + subfamilyNameID == 0 && + rangeStart == 0 && + rangeEnd == 0) + return TRACE_RETURN (true); + else if (designSize < rangeStart || + designSize > rangeEnd || + subfamilyNameID < 256 || + subfamilyNameID > 32767) + return TRACE_RETURN (false); + else + return TRACE_RETURN (true); } - USHORT params[5]; + USHORT designSize; /* Represents the design size in 720/inch + * units (decipoints). The design size entry + * must be non-zero. When there is a design + * size but no recommended size range, the + * rest of the array will consist of zeros. */ + USHORT subfamilyID; /* Has no independent meaning, but serves + * as an identifier that associates fonts + * in a subfamily. All fonts which share a + * Preferred or Font Family name and which + * differ only by size range shall have the + * same subfamily value, and no fonts which + * differ in weight or style shall have the + * same subfamily value. If this value is + * zero, the remaining fields in the array + * will be ignored. */ + USHORT subfamilyNameID;/* If the preceding value is non-zero, this + * value must be set in the range 256 - 32767 + * (inclusive). It records the value of a + * field in the name table, which must + * contain English-language strings encoded + * in Windows Unicode and Macintosh Roman, + * and may contain additional strings + * localized to other scripts and languages. + * Each of these strings is the name an + * application should use, in combination + * with the family name, to represent the + * subfamily in a menu. Applications will + * choose the appropriate version based on + * their selection criteria. */ + USHORT rangeStart; /* Large end of the recommended usage range + * (inclusive), stored in 720/inch units + * (decipoints). */ + USHORT rangeEnd; /* Small end of the recommended usage range + (exclusive), stored in 720/inch units + * (decipoints). */ public: DEFINE_SIZE_STATIC (10); }; -struct FeatureParams +/* http://www.microsoft.com/typography/otspec/features_pt.htm#ssxx */ +struct FeatureParamsStylisticSet { - /* Note: currently the only feature with params is 'size', so we hardcode - * the length of the table to that of the FeatureParamsSize. */ - inline bool sanitize (hb_sanitize_context_t *c) { TRACE_SANITIZE (this); + /* Right now minorVersion is at zero. Which means, any table supports + * the uiNameID field. */ return TRACE_RETURN (c->check_struct (this)); } + USHORT minorVersion; /* (set to 0): This corresponds to a “minor” + * version number. Additional data may be + * added to the end of this Feature Parameters + * table in the future. */ + + USHORT uiNameID; /* The 'name' table name ID that specifies a + * string (or strings, for multiple languages) + * for a user-interface label for this + * feature. The values of uiLabelNameId and + * sampleTextNameId are expected to be in the + * font-specific name ID range (256-32767), + * though that is not a requirement in this + * Feature Parameters specification. The + * user-interface label for the feature can + * be provided in multiple languages. An + * English string should be included as a + * fallback. The string should be kept to a + * minimal length to fit comfortably with + * different application interfaces. */ + public: + DEFINE_SIZE_STATIC (4); +}; + +struct FeatureParamsCharacterVariants +{ + inline bool sanitize (hb_sanitize_context_t *c) { + TRACE_SANITIZE (this); + return TRACE_RETURN (c->check_struct (this) && + characters.sanitize (c)); + } + + USHORT format; /* Format number is set to 0. */ + USHORT featUILableNameID; /* The ‘name’ table name ID that + * specifies a string (or strings, + * for multiple languages) for a + * user-interface label for this + * feature. (May be NULL.) */ + USHORT featUITooltipTextNameID;/* The ‘name’ table name ID that + * specifies a string (or strings, + * for multiple languages) that an + * application can use for tooltip + * text for this feature. (May be + * NULL.) */ + USHORT sampleTextNameID; /* The ‘name’ table name ID that + * specifies sample text that + * illustrates the effect of this + * feature. (May be NULL.) */ + USHORT numNamedParameters; /* Number of named parameters. (May + * be zero.) */ + USHORT firstParamUILabelNameID;/* The first ‘name’ table name ID + * used to specify strings for + * user-interface labels for the + * feature parameters. (Must be zero + * if numParameters is zero.) */ + ArrayOf<UINT24> + characters; /* Array of the Unicode Scalar Value + * of the characters for which this + * feature provides glyph variants. + * (May be zero.) */ + public: + DEFINE_SIZE_ARRAY (14, characters); +}; + +struct FeatureParams +{ + inline bool sanitize (hb_sanitize_context_t *c, hb_tag_t tag) { + TRACE_SANITIZE (this); + if (tag == HB_TAG ('s','i','z','e')) + return TRACE_RETURN (u.size.sanitize (c)); + if ((tag & 0xFFFF0000) == HB_TAG ('s','s','\0','\0')) /* ssXX */ + return TRACE_RETURN (u.stylisticSet.sanitize (c)); + if ((tag & 0xFFFF0000) == HB_TAG ('c','v','\0','\0')) /* cvXX */ + return TRACE_RETURN (u.characterVariants.sanitize (c)); + return TRACE_RETURN (true); + } + + inline const FeatureParamsSize& get_size_params (hb_tag_t tag) const + { + if (tag == HB_TAG ('s','i','z','e')) + return u.size; + return Null(FeatureParamsSize); + } + + private: union { - FeatureParamsSize size; + FeatureParamsSize size; + FeatureParamsStylisticSet stylisticSet; + FeatureParamsCharacterVariants characterVariants; } u; - DEFINE_SIZE_STATIC (10); + DEFINE_SIZE_STATIC (17); }; struct Feature @@ -290,10 +483,47 @@ struct Feature inline const FeatureParams &get_feature_params (void) const { return this+featureParams; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c, + const Record<Feature>::sanitize_closure_t *closure) { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && lookupIndex.sanitize (c) && - featureParams.sanitize (c, this)); + if (unlikely (!(c->check_struct (this) && lookupIndex.sanitize (c)))) + return TRACE_RETURN (false); + + /* Some earlier versions of Adobe tools calculated the offset of the + * FeatureParams subtable from the beginning of the FeatureList table! + * + * If sanitizing "failed" for the FeatureParams subtable, try it with the + * alternative location. We would know sanitize "failed" if old value + * of the offset was non-zero, but it's zeroed now. + * + * Only do this for the 'size' feature, since at the time of the faulty + * Adobe tools, only the 'size' feature had FeatureParams defined. + */ + + Offset orig_offset = featureParams; + if (unlikely (!featureParams.sanitize (c, this, closure ? closure->tag : HB_TAG_NONE))) + return TRACE_RETURN (false); + + if (likely (!orig_offset)) + return TRACE_RETURN (true); + + if (featureParams == 0 && closure && + closure->tag == HB_TAG ('s','i','z','e') && + closure->list_base && closure->list_base < this) + { + unsigned int new_offset_int = (unsigned int) orig_offset - + ((char *) this - (char *) closure->list_base); + + Offset new_offset; + /* Check that it did not overflow. */ + new_offset.set (new_offset_int); + if (new_offset == new_offset_int && + featureParams.try_set (c, new_offset) && + !featureParams.sanitize (c, this, closure ? closure->tag : HB_TAG_NONE)) + return TRACE_RETURN (false); + } + + return TRACE_RETURN (true); } OffsetTo<FeatureParams> diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-gdef-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-gdef-table.hh index ff2d09c51f0..ff2d09c51f0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-gdef-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-gdef-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-gpos-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-gpos-table.hh index 5ec7e078801..d27ce4f71ee 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-gpos-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-gpos-table.hh @@ -422,7 +422,7 @@ struct SinglePosFormat1 inline void collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - (this+coverage).add_coverage (&c->input); + (this+coverage).add_coverage (c->input); } inline const Coverage &get_coverage (void) const @@ -467,7 +467,7 @@ struct SinglePosFormat2 inline void collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - (this+coverage).add_coverage (&c->input); + (this+coverage).add_coverage (c->input); } inline const Coverage &get_coverage (void) const @@ -572,7 +572,7 @@ struct PairSet unsigned int count = len; for (unsigned int i = 0; i < count; i++) { - c->input.add (record->secondGlyph); + c->input->add (record->secondGlyph); record = &StructAtOffset<PairValueRecord> (record, record_size); } } @@ -638,7 +638,7 @@ struct PairPosFormat1 inline void collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - (this+coverage).add_coverage (&c->input); + (this+coverage).add_coverage (c->input); unsigned int count = pairSet.len; for (unsigned int i = 0; i < count; i++) (this+pairSet[i]).collect_glyphs (c, &valueFormat1); @@ -701,19 +701,19 @@ struct PairPosFormat2 inline void collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - /* (this+coverage).add_coverage (&c->input); // Don't need this. */ + /* (this+coverage).add_coverage (c->input); // Don't need this. */ /* TODO only add values for pairs that have nonzero adjustments. */ unsigned int count1 = class1Count; const ClassDef &klass1 = this+classDef1; for (unsigned int i = 0; i < count1; i++) - klass1.add_class (&c->input, i); + klass1.add_class (c->input, i); unsigned int count2 = class2Count; const ClassDef &klass2 = this+classDef2; for (unsigned int i = 0; i < count2; i++) - klass2.add_class (&c->input, i); + klass2.add_class (c->input, i); } inline const Coverage &get_coverage (void) const @@ -859,7 +859,7 @@ struct CursivePosFormat1 inline void collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - (this+coverage).add_coverage (&c->input); + (this+coverage).add_coverage (c->input); } inline const Coverage &get_coverage (void) const @@ -1005,8 +1005,8 @@ struct MarkBasePosFormat1 inline void collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - (this+markCoverage).add_coverage (&c->input); - (this+baseCoverage).add_coverage (&c->input); + (this+markCoverage).add_coverage (c->input); + (this+baseCoverage).add_coverage (c->input); /* TODO only add combinations that have nonzero adjustment. */ } @@ -1109,8 +1109,8 @@ struct MarkLigPosFormat1 inline void collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - (this+markCoverage).add_coverage (&c->input); - (this+ligatureCoverage).add_coverage (&c->input); + (this+markCoverage).add_coverage (c->input); + (this+ligatureCoverage).add_coverage (c->input); /* TODO only add combinations that have nonzero adjustment. */ } @@ -1225,8 +1225,8 @@ struct MarkMarkPosFormat1 inline void collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - (this+mark1Coverage).add_coverage (&c->input); - (this+mark2Coverage).add_coverage (&c->input); + (this+mark1Coverage).add_coverage (c->input); + (this+mark2Coverage).add_coverage (c->input); /* TODO only add combinations that have nonzero adjustment. */ } @@ -1446,7 +1446,7 @@ struct PosLookup : Lookup inline hb_collect_glyphs_context_t::return_t collect_glyphs_lookup (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - c->set_recurse_func (process_recurse_func<hb_collect_glyphs_context_t>); + c->set_recurse_func (NULL); return TRACE_RETURN (process (c)); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-gsub-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-gsub-table.hh index 69572ef63dd..2642acbbb5c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-gsub-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-gsub-table.hh @@ -54,8 +54,8 @@ struct SingleSubstFormat1 Coverage::Iter iter; for (iter.init (this+coverage); iter.more (); iter.next ()) { hb_codepoint_t glyph_id = iter.get_glyph (); - c->input.add (glyph_id); - c->output.add ((glyph_id + deltaGlyphID) & 0xFFFF); + c->input->add (glyph_id); + c->output->add ((glyph_id + deltaGlyphID) & 0xFFFF); } } @@ -130,8 +130,8 @@ struct SingleSubstFormat2 TRACE_COLLECT_GLYPHS (this); Coverage::Iter iter; for (iter.init (this+coverage); iter.more (); iter.next ()) { - c->input.add (iter.get_glyph ()); - c->output.add (substitute[iter.get_coverage ()]); + c->input->add (iter.get_glyph ()); + c->output->add (substitute[iter.get_coverage ()]); } } @@ -264,7 +264,7 @@ struct Sequence TRACE_COLLECT_GLYPHS (this); unsigned int count = substitute.len; for (unsigned int i = 0; i < count; i++) - c->output.add (substitute[i]); + c->output->add (substitute[i]); } inline bool apply (hb_apply_context_t *c) const @@ -320,7 +320,7 @@ struct MultipleSubstFormat1 inline void collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - (this+coverage).add_coverage (&c->input); + (this+coverage).add_coverage (c->input); unsigned int count = sequence.len; for (unsigned int i = 0; i < count; i++) (this+sequence[i]).collect_glyphs (c); @@ -451,11 +451,11 @@ struct AlternateSubstFormat1 TRACE_COLLECT_GLYPHS (this); Coverage::Iter iter; for (iter.init (this+coverage); iter.more (); iter.next ()) { - c->input.add (iter.get_glyph ()); + c->input->add (iter.get_glyph ()); const AlternateSet &alt_set = this+alternateSet[iter.get_coverage ()]; unsigned int count = alt_set.len; for (unsigned int i = 0; i < count; i++) - c->output.add (alt_set[i]); + c->output->add (alt_set[i]); } } @@ -595,8 +595,8 @@ struct Ligature TRACE_COLLECT_GLYPHS (this); unsigned int count = component.len; for (unsigned int i = 1; i < count; i++) - c->input.add (component[i]); - c->output.add (ligGlyph); + c->input->add (component[i]); + c->output->add (ligGlyph); } inline bool would_apply (hb_would_apply_context_t *c) const @@ -767,7 +767,7 @@ struct LigatureSubstFormat1 TRACE_COLLECT_GLYPHS (this); Coverage::Iter iter; for (iter.init (this+coverage); iter.more (); iter.next ()) { - c->input.add (iter.get_glyph ()); + c->input->add (iter.get_glyph ()); (this+ligatureSet[iter.get_coverage ()]).collect_glyphs (c); } } @@ -933,20 +933,20 @@ struct ReverseChainSingleSubstFormat1 unsigned int count; - (this+coverage).add_coverage (&c->input); + (this+coverage).add_coverage (c->input); count = backtrack.len; for (unsigned int i = 0; i < count; i++) - (this+backtrack[i]).add_coverage (&c->before); + (this+backtrack[i]).add_coverage (c->before); count = lookahead.len; for (unsigned int i = 0; i < count; i++) - (this+lookahead[i]).add_coverage (&c->after); + (this+lookahead[i]).add_coverage (c->after); const ArrayOf<GlyphID> &substitute = StructAfter<ArrayOf<GlyphID> > (lookahead); count = substitute.len; for (unsigned int i = 0; i < count; i++) - c->output.add (substitute[i]); + c->output->add (substitute[i]); } inline const Coverage &get_coverage (void) const diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-gsubgpos-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-gsubgpos-private.hh index 779ae85bdc2..40be861f39c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-gsubgpos-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-gsubgpos-private.hh @@ -49,7 +49,7 @@ namespace OT { #endif #define TRACE_CLOSURE(this) \ - hb_auto_trace_t<HB_DEBUG_CLOSURE, void_t> trace \ + hb_auto_trace_t<HB_DEBUG_CLOSURE, hb_void_t> trace \ (&c->debug_depth, c->get_name (), this, HB_FUNC, \ ""); @@ -57,12 +57,12 @@ struct hb_closure_context_t { inline const char *get_name (void) { return "CLOSURE"; } static const unsigned int max_debug_depth = HB_DEBUG_CLOSURE; - typedef void_t return_t; + typedef hb_void_t return_t; typedef return_t (*recurse_func_t) (hb_closure_context_t *c, unsigned int lookup_index); template <typename T> inline return_t process (const T &obj) { obj.closure (this); return HB_VOID; } static return_t default_return_value (void) { return HB_VOID; } - bool stop_sublookup_iteration (const return_t r) const { return false; } + bool stop_sublookup_iteration (const return_t r HB_UNUSED) const { return false; } return_t recurse (unsigned int lookup_index) { if (unlikely (nesting_level_left == 0 || !recurse_func)) @@ -137,7 +137,7 @@ struct hb_would_apply_context_t #endif #define TRACE_COLLECT_GLYPHS(this) \ - hb_auto_trace_t<HB_DEBUG_COLLECT_GLYPHS, void_t> trace \ + hb_auto_trace_t<HB_DEBUG_COLLECT_GLYPHS, hb_void_t> trace \ (&c->debug_depth, c->get_name (), this, HB_FUNC, \ ""); @@ -145,30 +145,45 @@ struct hb_collect_glyphs_context_t { inline const char *get_name (void) { return "COLLECT_GLYPHS"; } static const unsigned int max_debug_depth = HB_DEBUG_COLLECT_GLYPHS; - typedef void_t return_t; + typedef hb_void_t return_t; typedef return_t (*recurse_func_t) (hb_collect_glyphs_context_t *c, unsigned int lookup_index); template <typename T> inline return_t process (const T &obj) { obj.collect_glyphs (this); return HB_VOID; } static return_t default_return_value (void) { return HB_VOID; } - bool stop_sublookup_iteration (const return_t r) const { return false; } + bool stop_sublookup_iteration (const return_t r HB_UNUSED) const { return false; } return_t recurse (unsigned int lookup_index) { if (unlikely (nesting_level_left == 0 || !recurse_func)) return default_return_value (); + /* Note that GPOS sets recurse_func to NULL already, so it doesn't get + * past the previous check. For GSUB, we only want to collect the output + * glyphs in the recursion. If output is not requested, we can go home now. */ + + if (output == hb_set_get_empty ()) + return HB_VOID; + + hb_set_t *old_before = before; + hb_set_t *old_input = input; + hb_set_t *old_after = after; + before = input = after = hb_set_get_empty (); + nesting_level_left--; - /* Only collect output glyphs in the recursion. */ - hb_collect_glyphs_context_t new_c (this->face, NULL, NULL, NULL, &output, nesting_level_left); - recurse_func (&new_c, lookup_index); + recurse_func (this, lookup_index); nesting_level_left++; + + before = old_before; + input = old_input; + after = old_after; + return HB_VOID; } hb_face_t *face; - hb_set_t &before; - hb_set_t &input; - hb_set_t &after; - hb_set_t &output; + hb_set_t *before; + hb_set_t *input; + hb_set_t *after; + hb_set_t *output; recurse_func_t recurse_func; unsigned int nesting_level_left; unsigned int debug_depth; @@ -180,10 +195,10 @@ struct hb_collect_glyphs_context_t hb_set_t *glyphs_output, /* OUT. May be NULL */ unsigned int nesting_level_left_ = MAX_NESTING_LEVEL) : face (face_), - before (glyphs_before ? *glyphs_before : *hb_set_get_empty ()), - input (glyphs_input ? *glyphs_input : *hb_set_get_empty ()), - after (glyphs_after ? *glyphs_after : *hb_set_get_empty ()), - output (glyphs_output ? *glyphs_output : *hb_set_get_empty ()), + before (glyphs_before ? glyphs_before : hb_set_get_empty ()), + input (glyphs_input ? glyphs_input : hb_set_get_empty ()), + after (glyphs_after ? glyphs_after : hb_set_get_empty ()), + output (glyphs_output ? glyphs_output : hb_set_get_empty ()), recurse_func (NULL), nesting_level_left (nesting_level_left_), debug_depth (0) {} @@ -534,7 +549,7 @@ static inline void collect_coverage (hb_set_t *glyphs, const USHORT &value, cons const OffsetTo<Coverage> &coverage = (const OffsetTo<Coverage>&)value; (data+coverage).add_coverage (glyphs); } -static inline void collect_array (hb_collect_glyphs_context_t *c, +static inline void collect_array (hb_collect_glyphs_context_t *c HB_UNUSED, hb_set_t *glyphs, unsigned int count, const USHORT values[], @@ -658,10 +673,10 @@ static inline bool match_input (hb_apply_context_t *c, } static inline void ligate_input (hb_apply_context_t *c, unsigned int count, /* Including the first glyph (not matched) */ - const USHORT input[], /* Array of input values--start with second glyph */ + const USHORT input[] HB_UNUSED, /* Array of input values--start with second glyph */ hb_codepoint_t lig_glyph, - match_func_t match_func, - const void *match_data, + match_func_t match_func HB_UNUSED, + const void *match_data HB_UNUSED, bool is_mark_ligature, unsigned int total_component_count) { @@ -914,7 +929,7 @@ static inline void context_collect_glyphs_lookup (hb_collect_glyphs_context_t *c const LookupRecord lookupRecord[], ContextCollectGlyphsLookupContext &lookup_context) { - collect_array (c, &c->input, + collect_array (c, c->input, inputCount ? inputCount - 1 : 0, input, lookup_context.funcs.collect, lookup_context.collect_data); recurse_lookups (c, @@ -924,8 +939,8 @@ static inline void context_collect_glyphs_lookup (hb_collect_glyphs_context_t *c static inline bool context_would_apply_lookup (hb_would_apply_context_t *c, unsigned int inputCount, /* Including the first glyph (not matched) */ const USHORT input[], /* Array of input values--start with second glyph */ - unsigned int lookupCount, - const LookupRecord lookupRecord[], + unsigned int lookupCount HB_UNUSED, + const LookupRecord lookupRecord[] HB_UNUSED, ContextApplyLookupContext &lookup_context) { return would_match_input (c, @@ -1086,7 +1101,7 @@ struct ContextFormat1 inline void collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - (this+coverage).add_coverage (&c->input); + (this+coverage).add_coverage (c->input); struct ContextCollectGlyphsLookupContext lookup_context = { {collect_glyph}, @@ -1160,7 +1175,7 @@ struct ContextFormat2 struct ContextClosureLookupContext lookup_context = { {intersects_class}, - NULL + &class_def }; unsigned int count = ruleSet.len; @@ -1174,11 +1189,12 @@ struct ContextFormat2 inline void collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - (this+coverage).add_coverage (&c->input); + (this+coverage).add_coverage (c->input); + const ClassDef &class_def = this+classDef; struct ContextCollectGlyphsLookupContext lookup_context = { {collect_class}, - NULL + &class_def }; unsigned int count = ruleSet.len; @@ -1264,7 +1280,7 @@ struct ContextFormat3 inline void collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - (this+coverage[0]).add_coverage (&c->input); + (this+coverage[0]).add_coverage (c->input); const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverage, coverage[0].static_size * glyphCount); struct ContextCollectGlyphsLookupContext lookup_context = { @@ -1424,13 +1440,13 @@ static inline void chain_context_collect_glyphs_lookup (hb_collect_glyphs_contex const LookupRecord lookupRecord[], ChainContextCollectGlyphsLookupContext &lookup_context) { - collect_array (c, &c->before, + collect_array (c, c->before, backtrackCount, backtrack, lookup_context.funcs.collect, lookup_context.collect_data[0]); - collect_array (c, &c->input, + collect_array (c, c->input, inputCount ? inputCount - 1 : 0, input, lookup_context.funcs.collect, lookup_context.collect_data[1]); - collect_array (c, &c->after, + collect_array (c, c->after, lookaheadCount, lookahead, lookup_context.funcs.collect, lookup_context.collect_data[2]); recurse_lookups (c, @@ -1439,13 +1455,13 @@ static inline void chain_context_collect_glyphs_lookup (hb_collect_glyphs_contex static inline bool chain_context_would_apply_lookup (hb_would_apply_context_t *c, unsigned int backtrackCount, - const USHORT backtrack[], + const USHORT backtrack[] HB_UNUSED, unsigned int inputCount, /* Including the first glyph (not matched) */ const USHORT input[], /* Array of input values--start with second glyph */ unsigned int lookaheadCount, - const USHORT lookahead[], - unsigned int lookupCount, - const LookupRecord lookupRecord[], + const USHORT lookahead[] HB_UNUSED, + unsigned int lookupCount HB_UNUSED, + const LookupRecord lookupRecord[] HB_UNUSED, ChainContextApplyLookupContext &lookup_context) { return (c->zero_context ? !backtrackCount && !lookaheadCount : true) @@ -1643,7 +1659,7 @@ struct ChainContextFormat1 inline void collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - (this+coverage).add_coverage (&c->input); + (this+coverage).add_coverage (c->input); struct ChainContextCollectGlyphsLookupContext lookup_context = { {collect_glyph}, @@ -1733,11 +1749,17 @@ struct ChainContextFormat2 inline void collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - (this+coverage).add_coverage (&c->input); + (this+coverage).add_coverage (c->input); + + const ClassDef &backtrack_class_def = this+backtrackClassDef; + const ClassDef &input_class_def = this+inputClassDef; + const ClassDef &lookahead_class_def = this+lookaheadClassDef; struct ChainContextCollectGlyphsLookupContext lookup_context = { {collect_class}, - {NULL, NULL, NULL} + {&backtrack_class_def, + &input_class_def, + &lookahead_class_def} }; unsigned int count = ruleSet.len; @@ -1749,13 +1771,17 @@ struct ChainContextFormat2 { TRACE_WOULD_APPLY (this); + const ClassDef &backtrack_class_def = this+backtrackClassDef; const ClassDef &input_class_def = this+inputClassDef; + const ClassDef &lookahead_class_def = this+lookaheadClassDef; unsigned int index = input_class_def.get_class (c->glyphs[0]); const ChainRuleSet &rule_set = this+ruleSet[index]; struct ChainContextApplyLookupContext lookup_context = { {match_class}, - {NULL, &input_class_def, NULL} + {&backtrack_class_def, + &input_class_def, + &lookahead_class_def} }; return TRACE_RETURN (rule_set.would_apply (c, lookup_context)); } @@ -1846,7 +1872,7 @@ struct ChainContextFormat3 TRACE_COLLECT_GLYPHS (this); const OffsetArrayOf<Coverage> &input = StructAfter<OffsetArrayOf<Coverage> > (backtrack); - (this+input[0]).add_coverage (&c->input); + (this+input[0]).add_coverage (c->input); const OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage> > (input); const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead); diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-private.hh index 49093de8a1e..49093de8a1e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout.cc index 441b3ea9bca..5c266e61942 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout.cc @@ -433,18 +433,57 @@ _hb_ot_layout_collect_lookups_features (hb_face_t *face, const hb_tag_t *features, hb_set_t *lookup_indexes /* OUT */) { + unsigned int required_feature_index; + if (hb_ot_layout_language_get_required_feature_index (face, + table_tag, + script_index, + language_index, + &required_feature_index)) + _hb_ot_layout_collect_lookups_lookups (face, + table_tag, + required_feature_index, + lookup_indexes); + if (!features) { /* All features */ - unsigned int count = hb_ot_layout_language_get_feature_tags (face, table_tag, script_index, language_index, 0, NULL, NULL); - for (unsigned int feature_index = 0; feature_index < count; feature_index++) - _hb_ot_layout_collect_lookups_lookups (face, table_tag, feature_index, lookup_indexes); - } else { + unsigned int feature_indices[32]; + unsigned int offset, len; + + offset = 0; + do { + len = ARRAY_LENGTH (feature_indices); + hb_ot_layout_language_get_feature_indexes (face, + table_tag, + script_index, + language_index, + offset, &len, + feature_indices); + + for (unsigned int i = 0; i < len; i++) + _hb_ot_layout_collect_lookups_lookups (face, + table_tag, + feature_indices[i], + lookup_indexes); + + offset += len; + } while (len == ARRAY_LENGTH (feature_indices)); + } + else + { for (; *features; features++) { unsigned int feature_index; - if (hb_ot_layout_language_find_feature (face, table_tag, script_index, language_index, *features, &feature_index)) - _hb_ot_layout_collect_lookups_lookups (face, table_tag, feature_index, lookup_indexes); + if (hb_ot_layout_language_find_feature (face, + table_tag, + script_index, + language_index, + *features, + &feature_index)) + _hb_ot_layout_collect_lookups_lookups (face, + table_tag, + feature_index, + lookup_indexes); } } } @@ -457,18 +496,44 @@ _hb_ot_layout_collect_lookups_languages (hb_face_t *face, const hb_tag_t *features, hb_set_t *lookup_indexes /* OUT */) { + _hb_ot_layout_collect_lookups_features (face, + table_tag, + script_index, + HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX, + features, + lookup_indexes); + if (!languages) { /* All languages */ - unsigned int count = hb_ot_layout_script_get_language_tags (face, table_tag, script_index, 0, NULL, NULL); + unsigned int count = hb_ot_layout_script_get_language_tags (face, + table_tag, + script_index, + 0, NULL, NULL); for (unsigned int language_index = 0; language_index < count; language_index++) - _hb_ot_layout_collect_lookups_features (face, table_tag, script_index, language_index, features, lookup_indexes); - } else { + _hb_ot_layout_collect_lookups_features (face, + table_tag, + script_index, + language_index, + features, + lookup_indexes); + } + else + { for (; *languages; languages++) { unsigned int language_index; - if (hb_ot_layout_script_find_language (face, table_tag, script_index, *languages, &language_index)) - _hb_ot_layout_collect_lookups_features (face, table_tag, script_index, language_index, features, lookup_indexes); + if (hb_ot_layout_script_find_language (face, + table_tag, + script_index, + *languages, + &language_index)) + _hb_ot_layout_collect_lookups_features (face, + table_tag, + script_index, + language_index, + features, + lookup_indexes); } } } @@ -484,15 +549,32 @@ hb_ot_layout_collect_lookups (hb_face_t *face, if (!scripts) { /* All scripts */ - unsigned int count = hb_ot_layout_table_get_script_tags (face, table_tag, 0, NULL, NULL); + unsigned int count = hb_ot_layout_table_get_script_tags (face, + table_tag, + 0, NULL, NULL); for (unsigned int script_index = 0; script_index < count; script_index++) - _hb_ot_layout_collect_lookups_languages (face, table_tag, script_index, languages, features, lookup_indexes); - } else { + _hb_ot_layout_collect_lookups_languages (face, + table_tag, + script_index, + languages, + features, + lookup_indexes); + } + else + { for (; *scripts; scripts++) { unsigned int script_index; - if (hb_ot_layout_table_find_script (face, table_tag, *scripts, &script_index)) - _hb_ot_layout_collect_lookups_languages (face, table_tag, script_index, languages, features, lookup_indexes); + if (hb_ot_layout_table_find_script (face, + table_tag, + *scripts, + &script_index)) + _hb_ot_layout_collect_lookups_languages (face, + table_tag, + script_index, + languages, + features, + lookup_indexes); } } } @@ -508,9 +590,14 @@ hb_ot_layout_lookup_collect_glyphs (hb_face_t *face, { if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return; - OT::hb_collect_glyphs_context_t c (face, glyphs_before, glyphs_input, glyphs_after, glyphs_output); + OT::hb_collect_glyphs_context_t c (face, + glyphs_before, + glyphs_input, + glyphs_after, + glyphs_output); - switch (table_tag) { + switch (table_tag) + { case HB_OT_TAG_GSUB: { const OT::SubstLookup& l = hb_ot_layout_from_face (face)->gsub->get_lookup (lookup_index); @@ -640,28 +727,46 @@ hb_ot_layout_position_finish (hb_font_t *font, hb_buffer_t *buffer, hb_bool_t ze } hb_bool_t -hb_ot_layout_get_size_params (hb_face_t *face, - uint16_t *data /* OUT, 5 items */) +hb_ot_layout_get_size_params (hb_face_t *face, + unsigned int *design_size, /* OUT. May be NULL */ + unsigned int *subfamily_id, /* OUT. May be NULL */ + unsigned int *subfamily_name_id, /* OUT. May be NULL */ + unsigned int *range_start, /* OUT. May be NULL */ + unsigned int *range_end /* OUT. May be NULL */) { const OT::GPOS &gpos = _get_gpos (face); + const hb_tag_t tag = HB_TAG ('s','i','z','e'); unsigned int num_features = gpos.get_feature_count (); for (unsigned int i = 0; i < num_features; i++) { - if (HB_TAG ('s','i','z','e') == gpos.get_feature_tag (i)) + if (tag == gpos.get_feature_tag (i)) { const OT::Feature &f = gpos.get_feature (i); - const OT::FeatureParams ¶ms = f.get_feature_params (); - - for (unsigned int i = 0; i < 5; i++) - data[i] = params.u.size.params[i]; - - return true; + const OT::FeatureParamsSize ¶ms = f.get_feature_params ().get_size_params (tag); + + if (params.designSize) + { +#define PARAM(a, A) if (a) *a = params.A + PARAM (design_size, designSize); + PARAM (subfamily_id, subfamilyID); + PARAM (subfamily_name_id, subfamilyNameID); + PARAM (range_start, rangeStart); + PARAM (range_end, rangeEnd); +#undef PARAM + + return true; + } } } - for (unsigned int i = 0; i < 5; i++) - data[i] = 0; +#define PARAM(a, A) if (a) *a = 0 + PARAM (design_size, designSize); + PARAM (subfamily_id, subfamilyID); + PARAM (subfamily_name_id, subfamilyNameID); + PARAM (range_start, rangeStart); + PARAM (range_end, rangeEnd); +#undef PARAM return false; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout.h index f8fab24bc26..134f1a6c164 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-layout.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-layout.h @@ -280,8 +280,12 @@ Xhb_ot_layout_lookup_position (hb_font_t *font, /* Optical 'size' feature info. Returns true if found. * http://www.microsoft.com/typography/otspec/features_pt.htm#size */ hb_bool_t -hb_ot_layout_get_size_params (hb_face_t *face, - uint16_t *data /* OUT, 5 items */); +hb_ot_layout_get_size_params (hb_face_t *face, + unsigned int *design_size, /* OUT. May be NULL */ + unsigned int *subfamily_id, /* OUT. May be NULL */ + unsigned int *subfamily_name_id, /* OUT. May be NULL */ + unsigned int *range_start, /* OUT. May be NULL */ + unsigned int *range_end /* OUT. May be NULL */); HB_END_DECLS diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-map-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-map-private.hh index b140207aa97..b140207aa97 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-map-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-map-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-map.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-map.cc index 62f7904b2f9..62f7904b2f9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-map.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-map.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-maxp-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-maxp-table.hh index 0ce3ebcc2a6..0ce3ebcc2a6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-maxp-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-maxp-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-name-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-name-table.hh index 75a1b94ea31..75a1b94ea31 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-name-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-name-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-arabic-fallback.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-arabic-fallback.hh index bf68561e161..4fcd0a2fd94 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-arabic-fallback.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-arabic-fallback.hh @@ -53,7 +53,7 @@ enum { }; static OT::SubstLookup * -arabic_fallback_synthesize_lookup_single (const hb_ot_shape_plan_t *plan, +arabic_fallback_synthesize_lookup_single (const hb_ot_shape_plan_t *plan HB_UNUSED, hb_font_t *font, unsigned int feature_index) { @@ -103,7 +103,7 @@ arabic_fallback_synthesize_lookup_single (const hb_ot_shape_plan_t *plan, } static OT::SubstLookup * -arabic_fallback_synthesize_lookup_ligature (const hb_ot_shape_plan_t *plan, +arabic_fallback_synthesize_lookup_ligature (const hb_ot_shape_plan_t *plan HB_UNUSED, hb_font_t *font) { OT::GlyphID first_glyphs[ARRAY_LENGTH_CONST (ligature_table)]; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-arabic-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-arabic-table.hh index 730a275bf0a..730a275bf0a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-arabic-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-arabic-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-arabic.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-arabic.cc index e9db005455f..35356fe97d3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-arabic.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-arabic.cc @@ -305,7 +305,7 @@ arabic_joining (hb_buffer_t *buffer) static void setup_masks_arabic (const hb_ot_shape_plan_t *plan, hb_buffer_t *buffer, - hb_font_t *font) + hb_font_t *font HB_UNUSED) { const arabic_shape_plan_t *arabic_plan = (const arabic_shape_plan_t *) plan->data; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-default.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-default.cc index 5340293db50..5340293db50 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-default.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-default.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic-machine.hh new file mode 100644 index 00000000000..ed40b968bcb --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic-machine.hh @@ -0,0 +1,1443 @@ + +#line 1 "../../src/hb-ot-shape-complex-indic-machine.rl" +/* + * Copyright © 2011,2012 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#ifndef HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH +#define HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH + +#include "hb-private.hh" + + +#line 36 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" +static const unsigned char _indic_syllable_machine_trans_keys[] = { + 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, + 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, + 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, + 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, + 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, + 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, + 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, + 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, + 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, + 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, + 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, + 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, + 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, + 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, + 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, + 7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, + 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, + 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, + 4u, 14u, 5u, 7u, 5u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, + 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 1u, 16u, 13u, 13u, 4u, 4u, 6u, 6u, + 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, + 6u, 6u, 16u, 16u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, + 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, + 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, + 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, + 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, + 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, + 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, + 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, + 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, + 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 3u, 14u, 3u, 14u, + 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, + 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, + 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, + 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, + 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, + 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, + 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, + 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, + 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 1u, 16u, 3u, 14u, + 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, + 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, + 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, + 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, + 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, + 6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, + 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, + 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, + 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, + 3u, 14u, 4u, 14u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, + 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, + 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, + 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, + 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, + 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, + 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, + 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, + 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, + 1u, 16u, 1u, 16u, 3u, 14u, 1u, 16u, 3u, 17u, 1u, 16u, 4u, 14u, 1u, 16u, + 3u, 17u, 3u, 14u, 4u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 14u, 3u, 14u, + 1u, 16u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, + 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 8u, 14u, 3u, 17u, 3u, 9u, 8u, 9u, + 3u, 9u, 3u, 13u, 1u, 16u, 0 +}; + +static const char _indic_syllable_machine_key_spans[] = { + 16, 1, 3, 3, 1, 3, 3, 1, + 3, 3, 1, 3, 3, 1, 1, 1, + 1, 4, 1, 1, 4, 1, 1, 4, + 1, 1, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 16, 1, 3, 3, + 1, 3, 3, 1, 3, 3, 1, 3, + 3, 1, 1, 1, 1, 4, 1, 1, + 4, 1, 1, 4, 1, 1, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, + 16, 1, 3, 3, 1, 3, 3, 1, + 3, 3, 1, 3, 3, 1, 1, 1, + 1, 4, 1, 1, 4, 1, 1, 4, + 1, 1, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 16, 1, 3, 3, 1, + 3, 3, 1, 3, 3, 1, 3, 3, + 1, 1, 1, 1, 4, 1, 1, 4, + 1, 1, 4, 1, 1, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 3, 3, 3, 3, 1, 3, 3, + 1, 3, 3, 1, 16, 1, 1, 1, + 1, 4, 1, 1, 4, 1, 1, 4, + 1, 1, 16, 15, 12, 11, 16, 15, + 12, 11, 16, 15, 12, 11, 16, 15, + 12, 11, 16, 15, 12, 11, 10, 7, + 5, 1, 1, 15, 7, 2, 7, 11, + 12, 12, 11, 10, 12, 11, 10, 12, + 11, 10, 12, 11, 9, 12, 11, 16, + 12, 12, 16, 16, 16, 16, 16, 12, + 12, 16, 16, 16, 16, 16, 12, 12, + 16, 16, 16, 16, 16, 12, 12, 16, + 16, 16, 16, 16, 12, 12, 12, 12, + 11, 16, 15, 12, 11, 16, 15, 12, + 11, 16, 15, 12, 11, 16, 15, 12, + 11, 10, 7, 5, 1, 1, 15, 7, + 2, 7, 11, 12, 12, 11, 10, 12, + 11, 10, 12, 11, 10, 12, 11, 9, + 12, 16, 12, 12, 16, 16, 16, 16, + 16, 12, 12, 16, 16, 16, 16, 16, + 12, 12, 16, 16, 16, 16, 16, 12, + 12, 16, 16, 16, 16, 11, 16, 12, + 12, 11, 16, 15, 12, 11, 16, 15, + 12, 11, 16, 15, 12, 11, 16, 15, + 12, 11, 10, 7, 5, 1, 1, 15, + 7, 2, 7, 11, 12, 12, 11, 10, + 12, 11, 10, 12, 11, 10, 12, 11, + 9, 12, 16, 12, 12, 16, 16, 16, + 16, 16, 12, 12, 16, 16, 16, 16, + 16, 12, 12, 16, 16, 16, 16, 16, + 12, 12, 16, 16, 16, 16, 16, 11, + 12, 11, 12, 12, 11, 16, 15, 12, + 11, 16, 15, 12, 11, 16, 15, 12, + 11, 16, 15, 12, 11, 10, 7, 5, + 1, 1, 15, 7, 2, 7, 11, 12, + 12, 11, 10, 12, 11, 10, 12, 11, + 10, 12, 11, 9, 12, 16, 12, 12, + 16, 16, 16, 16, 16, 12, 12, 16, + 16, 16, 16, 16, 12, 12, 16, 16, + 16, 16, 16, 12, 12, 16, 16, 16, + 16, 16, 12, 16, 15, 16, 11, 16, + 15, 12, 11, 5, 1, 1, 12, 12, + 16, 12, 11, 10, 12, 11, 10, 12, + 11, 10, 12, 11, 7, 15, 7, 2, + 7, 11, 16 +}; + +static const short _indic_syllable_machine_index_offsets[] = { + 0, 17, 19, 23, 27, 29, 33, 37, + 39, 43, 47, 49, 53, 57, 59, 61, + 63, 65, 70, 72, 74, 79, 81, 83, + 88, 90, 92, 104, 116, 128, 140, 152, + 164, 176, 188, 200, 212, 229, 231, 235, + 239, 241, 245, 249, 251, 255, 259, 261, + 265, 269, 271, 273, 275, 277, 282, 284, + 286, 291, 293, 295, 300, 302, 304, 316, + 328, 340, 352, 364, 376, 388, 400, 412, + 424, 441, 443, 447, 451, 453, 457, 461, + 463, 467, 471, 473, 477, 481, 483, 485, + 487, 489, 494, 496, 498, 503, 505, 507, + 512, 514, 516, 528, 540, 552, 564, 576, + 588, 600, 612, 624, 641, 643, 647, 651, + 653, 657, 661, 663, 667, 671, 673, 677, + 681, 683, 685, 687, 689, 694, 696, 698, + 703, 705, 707, 712, 714, 716, 728, 740, + 752, 764, 776, 788, 800, 812, 824, 836, + 848, 860, 864, 868, 872, 876, 878, 882, + 886, 888, 892, 896, 898, 915, 917, 919, + 921, 923, 928, 930, 932, 937, 939, 941, + 946, 948, 950, 967, 983, 996, 1008, 1025, + 1041, 1054, 1066, 1083, 1099, 1112, 1124, 1141, + 1157, 1170, 1182, 1199, 1215, 1228, 1240, 1251, + 1259, 1265, 1267, 1269, 1285, 1293, 1296, 1304, + 1316, 1329, 1342, 1354, 1365, 1378, 1390, 1401, + 1414, 1426, 1437, 1450, 1462, 1472, 1485, 1497, + 1514, 1527, 1540, 1557, 1574, 1591, 1608, 1625, + 1638, 1651, 1668, 1685, 1702, 1719, 1736, 1749, + 1762, 1779, 1796, 1813, 1830, 1847, 1860, 1873, + 1890, 1907, 1924, 1941, 1958, 1971, 1984, 1997, + 2010, 2022, 2039, 2055, 2068, 2080, 2097, 2113, + 2126, 2138, 2155, 2171, 2184, 2196, 2213, 2229, + 2242, 2254, 2265, 2273, 2279, 2281, 2283, 2299, + 2307, 2310, 2318, 2330, 2343, 2356, 2368, 2379, + 2392, 2404, 2415, 2428, 2440, 2451, 2464, 2476, + 2486, 2499, 2516, 2529, 2542, 2559, 2576, 2593, + 2610, 2627, 2640, 2653, 2670, 2687, 2704, 2721, + 2738, 2751, 2764, 2781, 2798, 2815, 2832, 2849, + 2862, 2875, 2892, 2909, 2926, 2943, 2955, 2972, + 2985, 2998, 3010, 3027, 3043, 3056, 3068, 3085, + 3101, 3114, 3126, 3143, 3159, 3172, 3184, 3201, + 3217, 3230, 3242, 3253, 3261, 3267, 3269, 3271, + 3287, 3295, 3298, 3306, 3318, 3331, 3344, 3356, + 3367, 3380, 3392, 3403, 3416, 3428, 3439, 3452, + 3464, 3474, 3487, 3504, 3517, 3530, 3547, 3564, + 3581, 3598, 3615, 3628, 3641, 3658, 3675, 3692, + 3709, 3726, 3739, 3752, 3769, 3786, 3803, 3820, + 3837, 3850, 3863, 3880, 3897, 3914, 3931, 3948, + 3960, 3973, 3985, 3998, 4011, 4023, 4040, 4056, + 4069, 4081, 4098, 4114, 4127, 4139, 4156, 4172, + 4185, 4197, 4214, 4230, 4243, 4255, 4266, 4274, + 4280, 4282, 4284, 4300, 4308, 4311, 4319, 4331, + 4344, 4357, 4369, 4380, 4393, 4405, 4416, 4429, + 4441, 4452, 4465, 4477, 4487, 4500, 4517, 4530, + 4543, 4560, 4577, 4594, 4611, 4628, 4641, 4654, + 4671, 4688, 4705, 4722, 4739, 4752, 4765, 4782, + 4799, 4816, 4833, 4850, 4863, 4876, 4893, 4910, + 4927, 4944, 4961, 4974, 4991, 5007, 5024, 5036, + 5053, 5069, 5082, 5094, 5100, 5102, 5104, 5117, + 5130, 5147, 5160, 5172, 5183, 5196, 5208, 5219, + 5232, 5244, 5255, 5268, 5280, 5288, 5304, 5312, + 5315, 5323, 5335 +}; + +static const short _indic_syllable_machine_indicies[] = { + 1, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, + 0, 3, 0, 4, 4, 5, 0, 6, + 6, 5, 0, 5, 0, 7, 7, 8, + 0, 9, 9, 8, 0, 8, 0, 10, + 10, 11, 0, 12, 12, 11, 0, 11, + 0, 13, 13, 14, 0, 15, 15, 14, + 0, 14, 0, 16, 0, 17, 0, 18, + 0, 19, 13, 13, 14, 0, 20, 0, + 21, 0, 22, 10, 10, 11, 0, 23, + 0, 24, 0, 25, 7, 7, 8, 0, + 26, 0, 27, 0, 28, 4, 4, 5, + 0, 0, 0, 0, 0, 0, 28, 0, + 28, 4, 4, 5, 0, 0, 0, 0, + 0, 29, 28, 0, 30, 4, 4, 5, + 0, 0, 0, 0, 0, 0, 30, 0, + 30, 4, 4, 5, 0, 0, 0, 0, + 0, 31, 30, 0, 32, 4, 4, 5, + 0, 0, 0, 0, 0, 0, 32, 0, + 32, 4, 4, 5, 0, 0, 0, 0, + 0, 33, 32, 0, 34, 4, 4, 5, + 0, 0, 0, 0, 0, 0, 34, 0, + 34, 4, 4, 5, 0, 0, 0, 0, + 0, 35, 34, 0, 36, 4, 4, 5, + 0, 0, 0, 0, 0, 0, 36, 0, + 36, 4, 4, 5, 0, 0, 0, 0, + 0, 37, 36, 0, 39, 40, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 39, 38, 41, 38, 42, + 42, 43, 38, 44, 44, 43, 38, 43, + 38, 45, 45, 46, 38, 47, 47, 46, + 38, 46, 38, 48, 48, 49, 38, 50, + 50, 49, 38, 49, 38, 51, 51, 52, + 38, 53, 53, 52, 38, 52, 38, 54, + 38, 55, 38, 56, 38, 57, 51, 51, + 52, 38, 58, 38, 59, 38, 60, 48, + 48, 49, 38, 61, 38, 62, 38, 63, + 45, 45, 46, 38, 64, 38, 65, 38, + 66, 42, 42, 43, 38, 38, 38, 38, + 38, 38, 66, 38, 66, 42, 42, 43, + 38, 38, 38, 38, 38, 67, 66, 38, + 68, 42, 42, 43, 38, 38, 38, 38, + 38, 38, 68, 38, 68, 42, 42, 43, + 38, 38, 38, 38, 38, 69, 68, 38, + 70, 42, 42, 43, 38, 38, 38, 38, + 38, 38, 70, 38, 70, 42, 42, 43, + 38, 38, 38, 38, 38, 71, 70, 38, + 72, 42, 42, 43, 38, 38, 38, 38, + 38, 38, 72, 38, 72, 42, 42, 43, + 38, 38, 38, 38, 38, 73, 72, 38, + 74, 42, 42, 43, 38, 38, 38, 38, + 38, 38, 74, 38, 74, 42, 42, 43, + 38, 38, 38, 38, 38, 75, 74, 38, + 77, 78, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 77, + 76, 79, 76, 80, 80, 81, 76, 83, + 83, 81, 82, 81, 82, 84, 84, 85, + 76, 86, 86, 85, 76, 85, 76, 87, + 87, 88, 76, 89, 89, 88, 76, 88, + 76, 90, 90, 91, 76, 92, 92, 91, + 76, 91, 76, 93, 76, 94, 76, 95, + 76, 96, 90, 90, 91, 76, 97, 76, + 98, 76, 99, 87, 87, 88, 76, 100, + 76, 101, 76, 102, 84, 84, 85, 76, + 103, 76, 104, 76, 105, 80, 80, 81, + 76, 76, 76, 76, 76, 76, 105, 76, + 105, 80, 80, 81, 76, 76, 76, 76, + 76, 106, 105, 76, 107, 80, 80, 81, + 76, 76, 76, 76, 76, 76, 107, 76, + 107, 80, 80, 81, 76, 76, 76, 76, + 76, 108, 107, 76, 109, 80, 80, 81, + 76, 76, 76, 76, 76, 76, 109, 76, + 109, 80, 80, 81, 76, 76, 76, 76, + 76, 110, 109, 76, 111, 80, 80, 81, + 82, 82, 82, 82, 82, 82, 111, 82, + 111, 80, 80, 81, 76, 76, 76, 76, + 76, 112, 111, 76, 113, 80, 80, 81, + 76, 76, 76, 76, 76, 76, 113, 76, + 115, 116, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 115, + 114, 117, 114, 118, 118, 119, 114, 120, + 120, 119, 114, 119, 114, 121, 121, 122, + 114, 123, 123, 122, 114, 122, 114, 124, + 124, 125, 114, 126, 126, 125, 114, 125, + 114, 127, 127, 128, 114, 129, 129, 128, + 114, 128, 114, 130, 114, 131, 114, 132, + 114, 133, 127, 127, 128, 114, 134, 114, + 135, 114, 136, 124, 124, 125, 114, 137, + 114, 138, 114, 139, 121, 121, 122, 114, + 140, 114, 141, 114, 142, 118, 118, 119, + 114, 114, 114, 114, 114, 114, 142, 114, + 142, 118, 118, 119, 114, 114, 114, 114, + 114, 143, 142, 114, 144, 118, 118, 119, + 114, 114, 114, 114, 114, 114, 144, 114, + 144, 118, 118, 119, 114, 114, 114, 114, + 114, 145, 144, 114, 146, 118, 118, 119, + 114, 114, 114, 114, 114, 114, 146, 114, + 146, 118, 118, 119, 114, 114, 114, 114, + 114, 147, 146, 114, 148, 118, 118, 119, + 114, 114, 114, 114, 114, 114, 148, 114, + 148, 118, 118, 119, 114, 114, 114, 114, + 114, 149, 148, 114, 150, 118, 118, 119, + 114, 114, 114, 114, 114, 114, 150, 114, + 150, 118, 118, 119, 114, 114, 114, 114, + 114, 151, 150, 114, 113, 80, 80, 81, + 76, 76, 76, 76, 76, 152, 113, 76, + 111, 80, 80, 81, 0, 0, 0, 0, + 0, 153, 111, 0, 154, 154, 155, 0, + 6, 6, 155, 0, 156, 156, 157, 0, + 158, 158, 157, 0, 157, 0, 159, 159, + 160, 0, 161, 161, 160, 0, 160, 0, + 162, 162, 163, 0, 164, 164, 163, 0, + 163, 0, 165, 166, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 165, 0, 167, 0, 168, 0, 169, + 0, 170, 0, 171, 162, 162, 163, 0, + 172, 0, 173, 0, 174, 159, 159, 160, + 0, 175, 0, 176, 0, 177, 156, 156, + 157, 0, 178, 0, 179, 0, 181, 182, + 183, 184, 185, 186, 81, 187, 188, 180, + 189, 189, 152, 190, 191, 192, 180, 194, + 195, 196, 197, 5, 198, 199, 200, 193, + 193, 37, 201, 193, 193, 181, 193, 202, + 195, 203, 203, 5, 198, 199, 200, 193, + 193, 193, 201, 193, 195, 203, 203, 5, + 198, 199, 200, 193, 193, 193, 201, 193, + 204, 193, 193, 193, 18, 205, 193, 198, + 199, 193, 193, 193, 193, 206, 193, 204, + 193, 207, 208, 209, 210, 5, 198, 199, + 200, 193, 193, 35, 211, 193, 193, 204, + 193, 212, 208, 213, 213, 5, 198, 199, + 200, 193, 193, 193, 211, 193, 208, 213, + 213, 5, 198, 199, 200, 193, 193, 193, + 211, 193, 214, 193, 193, 193, 18, 215, + 193, 198, 199, 193, 193, 193, 193, 206, + 193, 214, 193, 216, 217, 218, 219, 5, + 198, 199, 200, 193, 193, 33, 220, 193, + 193, 214, 193, 221, 217, 222, 222, 5, + 198, 199, 200, 193, 193, 193, 220, 193, + 217, 222, 222, 5, 198, 199, 200, 193, + 193, 193, 220, 193, 223, 193, 193, 193, + 18, 224, 193, 198, 199, 193, 193, 193, + 193, 206, 193, 223, 193, 225, 226, 227, + 228, 5, 198, 199, 200, 193, 193, 31, + 229, 193, 193, 223, 193, 230, 226, 231, + 231, 5, 198, 199, 200, 193, 193, 193, + 229, 193, 226, 231, 231, 5, 198, 199, + 200, 193, 193, 193, 229, 193, 232, 193, + 193, 193, 18, 233, 193, 198, 199, 193, + 193, 193, 193, 206, 193, 232, 193, 234, + 235, 236, 237, 5, 198, 199, 200, 193, + 193, 29, 238, 193, 193, 232, 193, 239, + 235, 240, 240, 5, 198, 199, 200, 193, + 193, 193, 238, 193, 235, 240, 240, 5, + 198, 199, 200, 193, 193, 193, 238, 193, + 18, 241, 193, 198, 199, 193, 193, 193, + 193, 206, 193, 198, 199, 193, 193, 193, + 193, 206, 193, 242, 193, 193, 193, 199, + 193, 199, 193, 243, 193, 244, 193, 245, + 246, 193, 198, 199, 193, 193, 193, 3, + 193, 193, 193, 1, 193, 2, 193, 193, + 193, 193, 198, 199, 193, 198, 199, 193, + 244, 193, 193, 193, 193, 198, 199, 193, + 244, 193, 245, 193, 193, 198, 199, 193, + 193, 193, 3, 193, 18, 193, 247, 247, + 5, 198, 199, 193, 193, 193, 193, 206, + 193, 248, 27, 249, 250, 8, 198, 199, + 193, 193, 193, 193, 206, 193, 27, 249, + 250, 8, 198, 199, 193, 193, 193, 193, + 206, 193, 249, 249, 8, 198, 199, 193, + 193, 193, 193, 206, 193, 251, 24, 252, + 253, 11, 198, 199, 193, 193, 193, 193, + 206, 193, 24, 252, 253, 11, 198, 199, + 193, 193, 193, 193, 206, 193, 252, 252, + 11, 198, 199, 193, 193, 193, 193, 206, + 193, 254, 21, 255, 256, 14, 198, 199, + 193, 193, 193, 193, 206, 193, 21, 255, + 256, 14, 198, 199, 193, 193, 193, 193, + 206, 193, 255, 255, 14, 198, 199, 193, + 193, 193, 193, 206, 193, 257, 18, 193, + 258, 193, 198, 199, 193, 193, 193, 193, + 206, 193, 18, 193, 258, 193, 198, 199, + 193, 193, 193, 193, 206, 193, 259, 193, + 198, 199, 193, 193, 193, 193, 206, 193, + 18, 193, 193, 193, 193, 198, 199, 193, + 193, 193, 193, 206, 193, 235, 240, 240, + 5, 198, 199, 193, 193, 193, 193, 238, + 193, 1, 2, 193, 193, 18, 241, 193, + 198, 199, 193, 193, 193, 193, 206, 193, + 1, 193, 234, 235, 240, 240, 5, 198, + 199, 200, 193, 193, 193, 238, 193, 234, + 235, 236, 240, 5, 198, 199, 200, 193, + 193, 29, 238, 193, 232, 193, 260, 193, + 247, 247, 5, 198, 199, 193, 193, 193, + 193, 206, 193, 232, 193, 232, 193, 193, + 193, 193, 193, 193, 198, 199, 193, 193, + 193, 193, 206, 193, 232, 193, 232, 193, + 193, 193, 193, 261, 193, 198, 199, 193, + 193, 193, 193, 206, 193, 232, 193, 232, + 193, 260, 193, 193, 193, 193, 198, 199, + 193, 193, 193, 193, 206, 193, 232, 193, + 232, 2, 193, 193, 18, 233, 193, 198, + 199, 193, 193, 193, 193, 206, 193, 232, + 193, 225, 226, 231, 231, 5, 198, 199, + 200, 193, 193, 193, 229, 193, 225, 226, + 227, 231, 5, 198, 199, 200, 193, 193, + 31, 229, 193, 223, 193, 262, 193, 247, + 247, 5, 198, 199, 193, 193, 193, 193, + 206, 193, 223, 193, 223, 193, 193, 193, + 193, 193, 193, 198, 199, 193, 193, 193, + 193, 206, 193, 223, 193, 223, 193, 193, + 193, 193, 263, 193, 198, 199, 193, 193, + 193, 193, 206, 193, 223, 193, 223, 193, + 262, 193, 193, 193, 193, 198, 199, 193, + 193, 193, 193, 206, 193, 223, 193, 223, + 2, 193, 193, 18, 224, 193, 198, 199, + 193, 193, 193, 193, 206, 193, 223, 193, + 216, 217, 222, 222, 5, 198, 199, 200, + 193, 193, 193, 220, 193, 216, 217, 218, + 222, 5, 198, 199, 200, 193, 193, 33, + 220, 193, 214, 193, 264, 193, 247, 247, + 5, 198, 199, 193, 193, 193, 193, 206, + 193, 214, 193, 214, 193, 193, 193, 193, + 193, 193, 198, 199, 193, 193, 193, 193, + 206, 193, 214, 193, 214, 193, 193, 193, + 193, 265, 193, 198, 199, 193, 193, 193, + 193, 206, 193, 214, 193, 214, 193, 264, + 193, 193, 193, 193, 198, 199, 193, 193, + 193, 193, 206, 193, 214, 193, 214, 2, + 193, 193, 18, 215, 193, 198, 199, 193, + 193, 193, 193, 206, 193, 214, 193, 207, + 208, 213, 213, 5, 198, 199, 200, 193, + 193, 193, 211, 193, 207, 208, 209, 213, + 5, 198, 199, 200, 193, 193, 35, 211, + 193, 204, 193, 266, 193, 247, 247, 5, + 198, 199, 193, 193, 193, 193, 206, 193, + 204, 193, 204, 193, 193, 193, 193, 193, + 193, 198, 199, 193, 193, 193, 193, 206, + 193, 204, 193, 204, 193, 193, 193, 193, + 267, 193, 198, 199, 193, 193, 193, 193, + 206, 193, 204, 193, 204, 193, 266, 193, + 193, 193, 193, 198, 199, 193, 193, 193, + 193, 206, 193, 204, 193, 204, 2, 193, + 193, 18, 205, 193, 198, 199, 193, 193, + 193, 193, 206, 193, 204, 193, 194, 195, + 203, 203, 5, 198, 199, 200, 193, 193, + 193, 201, 193, 194, 195, 196, 203, 5, + 198, 199, 200, 193, 193, 37, 201, 193, + 269, 270, 271, 272, 43, 273, 274, 268, + 268, 268, 75, 275, 268, 276, 270, 277, + 272, 43, 273, 274, 268, 268, 268, 268, + 275, 268, 270, 277, 272, 43, 273, 274, + 268, 268, 268, 268, 275, 268, 278, 268, + 268, 268, 56, 279, 268, 273, 274, 268, + 268, 268, 268, 280, 268, 278, 268, 281, + 282, 283, 284, 43, 273, 274, 268, 268, + 268, 73, 285, 268, 268, 278, 268, 286, + 282, 287, 287, 43, 273, 274, 268, 268, + 268, 268, 285, 268, 282, 287, 287, 43, + 273, 274, 268, 268, 268, 268, 285, 268, + 288, 268, 268, 268, 56, 289, 268, 273, + 274, 268, 268, 268, 268, 280, 268, 288, + 268, 290, 291, 292, 293, 43, 273, 274, + 268, 268, 268, 71, 294, 268, 268, 288, + 268, 295, 291, 296, 296, 43, 273, 274, + 268, 268, 268, 268, 294, 268, 291, 296, + 296, 43, 273, 274, 268, 268, 268, 268, + 294, 268, 297, 268, 268, 268, 56, 298, + 268, 273, 274, 268, 268, 268, 268, 280, + 268, 297, 268, 299, 300, 301, 302, 43, + 273, 274, 268, 268, 268, 69, 303, 268, + 268, 297, 268, 304, 300, 305, 305, 43, + 273, 274, 268, 268, 268, 268, 303, 268, + 300, 305, 305, 43, 273, 274, 268, 268, + 268, 268, 303, 268, 306, 268, 268, 268, + 56, 307, 268, 273, 274, 268, 268, 268, + 268, 280, 268, 306, 268, 308, 309, 310, + 311, 43, 273, 274, 268, 268, 268, 67, + 312, 268, 268, 306, 268, 313, 309, 314, + 314, 43, 273, 274, 268, 268, 268, 268, + 312, 268, 309, 314, 314, 43, 273, 274, + 268, 268, 268, 268, 312, 268, 56, 315, + 268, 273, 274, 268, 268, 268, 268, 280, + 268, 273, 274, 268, 268, 268, 268, 280, + 268, 316, 268, 268, 268, 274, 268, 274, + 268, 317, 268, 318, 268, 319, 320, 268, + 273, 274, 268, 268, 268, 41, 268, 268, + 268, 39, 268, 40, 268, 268, 268, 268, + 273, 274, 268, 273, 274, 268, 318, 268, + 268, 268, 268, 273, 274, 268, 318, 268, + 319, 268, 268, 273, 274, 268, 268, 268, + 41, 268, 56, 268, 321, 321, 43, 273, + 274, 268, 268, 268, 268, 280, 268, 322, + 65, 323, 324, 46, 273, 274, 268, 268, + 268, 268, 280, 268, 65, 323, 324, 46, + 273, 274, 268, 268, 268, 268, 280, 268, + 323, 323, 46, 273, 274, 268, 268, 268, + 268, 280, 268, 325, 62, 326, 327, 49, + 273, 274, 268, 268, 268, 268, 280, 268, + 62, 326, 327, 49, 273, 274, 268, 268, + 268, 268, 280, 268, 326, 326, 49, 273, + 274, 268, 268, 268, 268, 280, 268, 328, + 59, 329, 330, 52, 273, 274, 268, 268, + 268, 268, 280, 268, 59, 329, 330, 52, + 273, 274, 268, 268, 268, 268, 280, 268, + 329, 329, 52, 273, 274, 268, 268, 268, + 268, 280, 268, 331, 56, 268, 332, 268, + 273, 274, 268, 268, 268, 268, 280, 268, + 56, 268, 332, 268, 273, 274, 268, 268, + 268, 268, 280, 268, 333, 268, 273, 274, + 268, 268, 268, 268, 280, 268, 56, 268, + 268, 268, 268, 273, 274, 268, 268, 268, + 268, 280, 268, 39, 40, 268, 268, 56, + 315, 268, 273, 274, 268, 268, 268, 268, + 280, 268, 39, 268, 308, 309, 314, 314, + 43, 273, 274, 268, 268, 268, 268, 312, + 268, 308, 309, 310, 314, 43, 273, 274, + 268, 268, 268, 67, 312, 268, 306, 268, + 334, 268, 321, 321, 43, 273, 274, 268, + 268, 268, 268, 280, 268, 306, 268, 306, + 268, 268, 268, 268, 268, 268, 273, 274, + 268, 268, 268, 268, 280, 268, 306, 268, + 306, 268, 268, 268, 268, 335, 268, 273, + 274, 268, 268, 268, 268, 280, 268, 306, + 268, 306, 268, 334, 268, 268, 268, 268, + 273, 274, 268, 268, 268, 268, 280, 268, + 306, 268, 306, 40, 268, 268, 56, 307, + 268, 273, 274, 268, 268, 268, 268, 280, + 268, 306, 268, 299, 300, 305, 305, 43, + 273, 274, 268, 268, 268, 268, 303, 268, + 299, 300, 301, 305, 43, 273, 274, 268, + 268, 268, 69, 303, 268, 297, 268, 336, + 268, 321, 321, 43, 273, 274, 268, 268, + 268, 268, 280, 268, 297, 268, 297, 268, + 268, 268, 268, 268, 268, 273, 274, 268, + 268, 268, 268, 280, 268, 297, 268, 297, + 268, 268, 268, 268, 337, 268, 273, 274, + 268, 268, 268, 268, 280, 268, 297, 268, + 297, 268, 336, 268, 268, 268, 268, 273, + 274, 268, 268, 268, 268, 280, 268, 297, + 268, 297, 40, 268, 268, 56, 298, 268, + 273, 274, 268, 268, 268, 268, 280, 268, + 297, 268, 290, 291, 296, 296, 43, 273, + 274, 268, 268, 268, 268, 294, 268, 290, + 291, 292, 296, 43, 273, 274, 268, 268, + 268, 71, 294, 268, 288, 268, 338, 268, + 321, 321, 43, 273, 274, 268, 268, 268, + 268, 280, 268, 288, 268, 288, 268, 268, + 268, 268, 268, 268, 273, 274, 268, 268, + 268, 268, 280, 268, 288, 268, 288, 268, + 268, 268, 268, 339, 268, 273, 274, 268, + 268, 268, 268, 280, 268, 288, 268, 288, + 268, 338, 268, 268, 268, 268, 273, 274, + 268, 268, 268, 268, 280, 268, 288, 268, + 288, 40, 268, 268, 56, 289, 268, 273, + 274, 268, 268, 268, 268, 280, 268, 288, + 268, 281, 282, 287, 287, 43, 273, 274, + 268, 268, 268, 268, 285, 268, 281, 282, + 283, 287, 43, 273, 274, 268, 268, 268, + 73, 285, 268, 278, 268, 340, 268, 321, + 321, 43, 273, 274, 268, 268, 268, 268, + 280, 268, 278, 268, 278, 268, 268, 268, + 268, 268, 268, 273, 274, 268, 268, 268, + 268, 280, 268, 278, 268, 278, 268, 268, + 268, 268, 341, 268, 273, 274, 268, 268, + 268, 268, 280, 268, 278, 268, 278, 268, + 340, 268, 268, 268, 268, 273, 274, 268, + 268, 268, 268, 280, 268, 278, 268, 74, + 42, 42, 43, 268, 268, 268, 268, 268, + 268, 74, 268, 278, 40, 268, 268, 56, + 279, 268, 273, 274, 268, 268, 268, 268, + 280, 268, 278, 268, 269, 270, 277, 272, + 43, 273, 274, 268, 268, 268, 268, 275, + 268, 343, 184, 344, 344, 81, 187, 188, + 342, 342, 342, 342, 190, 342, 184, 344, + 344, 81, 187, 188, 342, 342, 342, 342, + 190, 342, 345, 342, 342, 342, 95, 346, + 342, 187, 188, 342, 342, 342, 342, 347, + 342, 345, 342, 348, 349, 350, 351, 81, + 187, 188, 342, 342, 342, 112, 352, 342, + 342, 345, 342, 353, 349, 354, 354, 81, + 187, 188, 342, 342, 342, 342, 352, 342, + 349, 354, 354, 81, 187, 188, 342, 342, + 342, 342, 352, 342, 355, 342, 342, 342, + 95, 356, 342, 187, 188, 342, 342, 342, + 342, 347, 342, 355, 342, 357, 358, 359, + 360, 81, 187, 188, 342, 342, 342, 110, + 361, 342, 342, 355, 342, 362, 358, 363, + 363, 81, 187, 188, 342, 342, 342, 342, + 361, 342, 358, 363, 363, 81, 187, 188, + 342, 342, 342, 342, 361, 342, 364, 342, + 342, 342, 95, 365, 342, 187, 188, 342, + 342, 342, 342, 347, 342, 364, 342, 366, + 367, 368, 369, 81, 187, 188, 342, 342, + 342, 108, 370, 342, 342, 364, 342, 371, + 367, 372, 372, 81, 187, 188, 342, 342, + 342, 342, 370, 342, 367, 372, 372, 81, + 187, 188, 342, 342, 342, 342, 370, 342, + 373, 342, 342, 342, 95, 374, 342, 187, + 188, 342, 342, 342, 342, 347, 342, 373, + 342, 375, 376, 377, 378, 81, 187, 188, + 342, 342, 342, 106, 379, 342, 342, 373, + 342, 380, 376, 381, 381, 81, 187, 188, + 342, 342, 342, 342, 379, 342, 376, 381, + 381, 81, 187, 188, 342, 342, 342, 342, + 379, 342, 95, 382, 342, 187, 188, 342, + 342, 342, 342, 347, 342, 187, 188, 342, + 342, 342, 342, 347, 342, 383, 342, 342, + 342, 188, 342, 188, 342, 384, 342, 385, + 342, 386, 387, 342, 187, 188, 342, 342, + 342, 79, 342, 342, 342, 77, 342, 78, + 342, 342, 342, 342, 187, 188, 342, 187, + 188, 342, 385, 342, 342, 342, 342, 187, + 188, 342, 385, 342, 386, 342, 342, 187, + 188, 342, 342, 342, 79, 342, 95, 342, + 388, 388, 81, 187, 188, 342, 342, 342, + 342, 347, 342, 389, 104, 390, 391, 85, + 187, 188, 342, 342, 342, 342, 347, 342, + 104, 390, 391, 85, 187, 188, 342, 342, + 342, 342, 347, 342, 390, 390, 85, 187, + 188, 342, 342, 342, 342, 347, 342, 392, + 101, 393, 394, 88, 187, 188, 342, 342, + 342, 342, 347, 342, 101, 393, 394, 88, + 187, 188, 342, 342, 342, 342, 347, 342, + 393, 393, 88, 187, 188, 342, 342, 342, + 342, 347, 342, 395, 98, 396, 397, 91, + 187, 188, 342, 342, 342, 342, 347, 342, + 98, 396, 397, 91, 187, 188, 342, 342, + 342, 342, 347, 342, 396, 396, 91, 187, + 188, 342, 342, 342, 342, 347, 342, 398, + 95, 342, 399, 342, 187, 188, 342, 342, + 342, 342, 347, 342, 95, 342, 399, 342, + 187, 188, 342, 342, 342, 342, 347, 342, + 400, 342, 187, 188, 342, 342, 342, 342, + 347, 342, 95, 342, 342, 342, 342, 187, + 188, 342, 342, 342, 342, 347, 342, 77, + 78, 342, 342, 95, 382, 342, 187, 188, + 342, 342, 342, 342, 347, 342, 77, 342, + 375, 376, 381, 381, 81, 187, 188, 342, + 342, 342, 342, 379, 342, 375, 376, 377, + 381, 81, 187, 188, 342, 342, 342, 106, + 379, 342, 373, 342, 401, 342, 388, 388, + 81, 187, 188, 342, 342, 342, 342, 347, + 342, 373, 342, 373, 342, 342, 342, 342, + 342, 342, 187, 188, 342, 342, 342, 342, + 347, 342, 373, 342, 373, 342, 342, 342, + 342, 402, 342, 187, 188, 342, 342, 342, + 342, 347, 342, 373, 342, 373, 342, 401, + 342, 342, 342, 342, 187, 188, 342, 342, + 342, 342, 347, 342, 373, 342, 373, 78, + 342, 342, 95, 374, 342, 187, 188, 342, + 342, 342, 342, 347, 342, 373, 342, 366, + 367, 372, 372, 81, 187, 188, 342, 342, + 342, 342, 370, 342, 366, 367, 368, 372, + 81, 187, 188, 342, 342, 342, 108, 370, + 342, 364, 342, 403, 342, 388, 388, 81, + 187, 188, 342, 342, 342, 342, 347, 342, + 364, 342, 364, 342, 342, 342, 342, 342, + 342, 187, 188, 342, 342, 342, 342, 347, + 342, 364, 342, 364, 342, 342, 342, 342, + 404, 342, 187, 188, 342, 342, 342, 342, + 347, 342, 364, 342, 364, 342, 403, 342, + 342, 342, 342, 187, 188, 342, 342, 342, + 342, 347, 342, 364, 342, 364, 78, 342, + 342, 95, 365, 342, 187, 188, 342, 342, + 342, 342, 347, 342, 364, 342, 357, 358, + 363, 363, 81, 187, 188, 342, 342, 342, + 342, 361, 342, 357, 358, 359, 363, 81, + 187, 188, 342, 342, 342, 110, 361, 342, + 355, 342, 405, 342, 388, 388, 81, 187, + 188, 342, 342, 342, 342, 347, 342, 355, + 342, 355, 342, 342, 342, 342, 342, 342, + 187, 188, 342, 342, 342, 342, 347, 342, + 355, 342, 355, 342, 342, 342, 342, 406, + 342, 187, 188, 342, 342, 342, 342, 347, + 342, 355, 342, 355, 342, 405, 342, 342, + 342, 342, 187, 188, 342, 342, 342, 342, + 347, 342, 355, 342, 355, 78, 342, 342, + 95, 356, 342, 187, 188, 342, 342, 342, + 342, 347, 342, 355, 342, 348, 349, 354, + 354, 81, 187, 188, 342, 342, 342, 342, + 352, 342, 348, 349, 350, 354, 81, 187, + 188, 342, 342, 342, 112, 352, 342, 345, + 342, 407, 342, 388, 388, 81, 187, 188, + 342, 342, 342, 342, 347, 342, 345, 342, + 345, 342, 342, 342, 342, 342, 342, 187, + 188, 342, 342, 342, 342, 347, 342, 345, + 342, 345, 342, 342, 342, 342, 408, 342, + 187, 188, 342, 342, 342, 342, 347, 342, + 345, 342, 345, 342, 407, 342, 342, 342, + 342, 187, 188, 342, 342, 342, 342, 347, + 342, 345, 342, 345, 78, 342, 342, 95, + 346, 342, 187, 188, 342, 342, 342, 342, + 347, 342, 345, 342, 113, 80, 80, 81, + 409, 409, 409, 409, 409, 152, 113, 409, + 183, 184, 344, 344, 81, 187, 188, 342, + 342, 342, 342, 190, 342, 113, 80, 80, + 81, 409, 409, 409, 409, 409, 409, 113, + 409, 411, 412, 413, 414, 119, 415, 416, + 410, 410, 410, 151, 417, 410, 418, 412, + 414, 414, 119, 415, 416, 410, 410, 410, + 410, 417, 410, 412, 414, 414, 119, 415, + 416, 410, 410, 410, 410, 417, 410, 419, + 410, 410, 410, 132, 420, 410, 415, 416, + 410, 410, 410, 410, 421, 410, 419, 410, + 422, 423, 424, 425, 119, 415, 416, 410, + 410, 410, 149, 426, 410, 410, 419, 410, + 427, 423, 428, 428, 119, 415, 416, 410, + 410, 410, 410, 426, 410, 423, 428, 428, + 119, 415, 416, 410, 410, 410, 410, 426, + 410, 429, 410, 410, 410, 132, 430, 410, + 415, 416, 410, 410, 410, 410, 421, 410, + 429, 410, 431, 432, 433, 434, 119, 415, + 416, 410, 410, 410, 147, 435, 410, 410, + 429, 410, 436, 432, 437, 437, 119, 415, + 416, 410, 410, 410, 410, 435, 410, 432, + 437, 437, 119, 415, 416, 410, 410, 410, + 410, 435, 410, 438, 410, 410, 410, 132, + 439, 410, 415, 416, 410, 410, 410, 410, + 421, 410, 438, 410, 440, 441, 442, 443, + 119, 415, 416, 410, 410, 410, 145, 444, + 410, 410, 438, 410, 445, 441, 446, 446, + 119, 415, 416, 410, 410, 410, 410, 444, + 410, 441, 446, 446, 119, 415, 416, 410, + 410, 410, 410, 444, 410, 447, 410, 410, + 410, 132, 448, 410, 415, 416, 410, 410, + 410, 410, 421, 410, 447, 410, 449, 450, + 451, 452, 119, 415, 416, 410, 410, 410, + 143, 453, 410, 410, 447, 410, 454, 450, + 455, 455, 119, 415, 416, 410, 410, 410, + 410, 453, 410, 450, 455, 455, 119, 415, + 416, 410, 410, 410, 410, 453, 410, 132, + 456, 410, 415, 416, 410, 410, 410, 410, + 421, 410, 415, 416, 410, 410, 410, 410, + 421, 410, 457, 410, 410, 410, 416, 410, + 416, 410, 458, 410, 459, 410, 460, 461, + 410, 415, 416, 410, 410, 410, 117, 410, + 410, 410, 115, 410, 116, 410, 410, 410, + 410, 415, 416, 410, 415, 416, 410, 459, + 410, 410, 410, 410, 415, 416, 410, 459, + 410, 460, 410, 410, 415, 416, 410, 410, + 410, 117, 410, 132, 410, 462, 462, 119, + 415, 416, 410, 410, 410, 410, 421, 410, + 463, 141, 464, 465, 122, 415, 416, 410, + 410, 410, 410, 421, 410, 141, 464, 465, + 122, 415, 416, 410, 410, 410, 410, 421, + 410, 464, 464, 122, 415, 416, 410, 410, + 410, 410, 421, 410, 466, 138, 467, 468, + 125, 415, 416, 410, 410, 410, 410, 421, + 410, 138, 467, 468, 125, 415, 416, 410, + 410, 410, 410, 421, 410, 467, 467, 125, + 415, 416, 410, 410, 410, 410, 421, 410, + 469, 135, 470, 471, 128, 415, 416, 410, + 410, 410, 410, 421, 410, 135, 470, 471, + 128, 415, 416, 410, 410, 410, 410, 421, + 410, 470, 470, 128, 415, 416, 410, 410, + 410, 410, 421, 410, 472, 132, 410, 473, + 410, 415, 416, 410, 410, 410, 410, 421, + 410, 132, 410, 473, 410, 415, 416, 410, + 410, 410, 410, 421, 410, 474, 410, 415, + 416, 410, 410, 410, 410, 421, 410, 132, + 410, 410, 410, 410, 415, 416, 410, 410, + 410, 410, 421, 410, 115, 116, 410, 410, + 132, 456, 410, 415, 416, 410, 410, 410, + 410, 421, 410, 115, 410, 449, 450, 455, + 455, 119, 415, 416, 410, 410, 410, 410, + 453, 410, 449, 450, 451, 455, 119, 415, + 416, 410, 410, 410, 143, 453, 410, 447, + 410, 475, 410, 462, 462, 119, 415, 416, + 410, 410, 410, 410, 421, 410, 447, 410, + 447, 410, 410, 410, 410, 410, 410, 415, + 416, 410, 410, 410, 410, 421, 410, 447, + 410, 447, 410, 410, 410, 410, 476, 410, + 415, 416, 410, 410, 410, 410, 421, 410, + 447, 410, 447, 410, 475, 410, 410, 410, + 410, 415, 416, 410, 410, 410, 410, 421, + 410, 447, 410, 447, 116, 410, 410, 132, + 448, 410, 415, 416, 410, 410, 410, 410, + 421, 410, 447, 410, 440, 441, 446, 446, + 119, 415, 416, 410, 410, 410, 410, 444, + 410, 440, 441, 442, 446, 119, 415, 416, + 410, 410, 410, 145, 444, 410, 438, 410, + 477, 410, 462, 462, 119, 415, 416, 410, + 410, 410, 410, 421, 410, 438, 410, 438, + 410, 410, 410, 410, 410, 410, 415, 416, + 410, 410, 410, 410, 421, 410, 438, 410, + 438, 410, 410, 410, 410, 478, 410, 415, + 416, 410, 410, 410, 410, 421, 410, 438, + 410, 438, 410, 477, 410, 410, 410, 410, + 415, 416, 410, 410, 410, 410, 421, 410, + 438, 410, 438, 116, 410, 410, 132, 439, + 410, 415, 416, 410, 410, 410, 410, 421, + 410, 438, 410, 431, 432, 437, 437, 119, + 415, 416, 410, 410, 410, 410, 435, 410, + 431, 432, 433, 437, 119, 415, 416, 410, + 410, 410, 147, 435, 410, 429, 410, 479, + 410, 462, 462, 119, 415, 416, 410, 410, + 410, 410, 421, 410, 429, 410, 429, 410, + 410, 410, 410, 410, 410, 415, 416, 410, + 410, 410, 410, 421, 410, 429, 410, 429, + 410, 410, 410, 410, 480, 410, 415, 416, + 410, 410, 410, 410, 421, 410, 429, 410, + 429, 410, 479, 410, 410, 410, 410, 415, + 416, 410, 410, 410, 410, 421, 410, 429, + 410, 429, 116, 410, 410, 132, 430, 410, + 415, 416, 410, 410, 410, 410, 421, 410, + 429, 410, 422, 423, 428, 428, 119, 415, + 416, 410, 410, 410, 410, 426, 410, 422, + 423, 424, 428, 119, 415, 416, 410, 410, + 410, 149, 426, 410, 419, 410, 481, 410, + 462, 462, 119, 415, 416, 410, 410, 410, + 410, 421, 410, 419, 410, 419, 410, 410, + 410, 410, 410, 410, 415, 416, 410, 410, + 410, 410, 421, 410, 419, 410, 419, 410, + 410, 410, 410, 482, 410, 415, 416, 410, + 410, 410, 410, 421, 410, 419, 410, 419, + 410, 481, 410, 410, 410, 410, 415, 416, + 410, 410, 410, 410, 421, 410, 419, 410, + 419, 116, 410, 410, 132, 420, 410, 415, + 416, 410, 410, 410, 410, 421, 410, 419, + 410, 411, 412, 414, 414, 119, 415, 416, + 410, 410, 410, 410, 417, 410, 181, 182, + 183, 184, 483, 344, 81, 187, 188, 342, + 189, 189, 152, 190, 342, 181, 342, 194, + 484, 196, 197, 5, 198, 199, 200, 193, + 193, 37, 201, 193, 193, 181, 193, 204, + 182, 183, 184, 485, 486, 81, 487, 488, + 193, 189, 189, 152, 489, 193, 204, 193, + 113, 80, 80, 81, 198, 199, 193, 193, + 193, 152, 490, 193, 491, 2, 342, 342, + 342, 408, 342, 187, 188, 342, 342, 342, + 342, 347, 342, 491, 342, 492, 349, 493, + 494, 81, 487, 488, 193, 193, 193, 153, + 352, 193, 193, 491, 193, 495, 349, 354, + 354, 81, 487, 488, 193, 193, 193, 193, + 352, 193, 349, 354, 354, 81, 487, 488, + 193, 193, 193, 193, 352, 193, 496, 193, + 193, 193, 488, 193, 488, 193, 243, 193, + 492, 349, 354, 354, 81, 487, 488, 193, + 193, 193, 193, 352, 193, 492, 349, 493, + 354, 81, 487, 488, 193, 193, 193, 153, + 352, 193, 204, 193, 266, 113, 497, 497, + 155, 198, 199, 193, 193, 193, 193, 490, + 193, 204, 193, 498, 179, 499, 500, 157, + 487, 488, 193, 193, 193, 193, 501, 193, + 179, 499, 500, 157, 487, 488, 193, 193, + 193, 193, 501, 193, 499, 499, 157, 487, + 488, 193, 193, 193, 193, 501, 193, 502, + 176, 503, 504, 160, 487, 488, 193, 193, + 193, 193, 501, 193, 176, 503, 504, 160, + 487, 488, 193, 193, 193, 193, 501, 193, + 503, 503, 160, 487, 488, 193, 193, 193, + 193, 501, 193, 505, 173, 506, 507, 163, + 487, 488, 193, 193, 193, 193, 501, 193, + 173, 506, 507, 163, 487, 488, 193, 193, + 193, 193, 501, 193, 506, 506, 163, 487, + 488, 193, 193, 193, 193, 501, 193, 508, + 170, 193, 509, 193, 487, 488, 193, 193, + 193, 193, 501, 193, 170, 193, 509, 193, + 487, 488, 193, 193, 193, 193, 501, 193, + 487, 488, 193, 193, 193, 193, 501, 193, + 510, 193, 511, 512, 193, 487, 488, 193, + 193, 193, 167, 193, 193, 193, 165, 193, + 166, 193, 193, 193, 193, 487, 488, 193, + 487, 488, 193, 510, 193, 193, 193, 193, + 487, 488, 193, 510, 193, 511, 193, 193, + 487, 488, 193, 193, 193, 167, 193, 491, + 166, 342, 342, 95, 346, 342, 187, 188, + 342, 342, 342, 342, 347, 342, 491, 342, + 0 +}; + +static const short _indic_syllable_machine_trans_targs[] = { + 170, 195, 197, 198, 3, 201, 4, 6, + 204, 7, 9, 207, 10, 12, 210, 13, + 15, 16, 191, 18, 19, 209, 21, 22, + 206, 24, 25, 203, 212, 216, 220, 223, + 227, 230, 234, 237, 241, 244, 170, 270, + 272, 273, 39, 276, 40, 42, 279, 43, + 45, 282, 46, 48, 285, 49, 51, 52, + 266, 54, 55, 284, 57, 58, 281, 60, + 61, 278, 287, 290, 294, 297, 301, 304, + 308, 311, 315, 319, 170, 343, 345, 346, + 75, 349, 170, 76, 78, 352, 79, 81, + 355, 82, 84, 358, 85, 87, 88, 339, + 90, 91, 357, 93, 94, 354, 96, 97, + 351, 360, 363, 367, 370, 374, 377, 381, + 384, 388, 170, 418, 420, 421, 110, 424, + 111, 113, 427, 114, 116, 430, 117, 119, + 433, 120, 122, 123, 414, 125, 126, 432, + 128, 129, 429, 131, 132, 426, 435, 438, + 442, 445, 449, 452, 456, 459, 463, 466, + 392, 478, 146, 481, 148, 484, 149, 151, + 487, 152, 154, 490, 155, 493, 495, 496, + 159, 160, 492, 162, 163, 489, 165, 166, + 486, 168, 169, 483, 170, 171, 246, 320, + 322, 391, 393, 340, 342, 394, 390, 467, + 468, 170, 172, 174, 35, 245, 192, 194, + 214, 243, 173, 34, 175, 239, 0, 176, + 178, 33, 238, 236, 177, 32, 179, 232, + 180, 182, 31, 231, 229, 181, 30, 183, + 225, 184, 186, 29, 224, 222, 185, 28, + 187, 218, 188, 190, 27, 217, 215, 189, + 26, 200, 193, 170, 196, 1, 199, 2, + 202, 5, 23, 205, 8, 20, 208, 11, + 17, 211, 14, 213, 219, 221, 226, 228, + 233, 235, 240, 242, 170, 247, 249, 71, + 317, 267, 269, 318, 248, 70, 250, 313, + 36, 251, 253, 69, 312, 310, 252, 68, + 254, 306, 255, 257, 67, 305, 303, 256, + 66, 258, 299, 259, 261, 65, 298, 296, + 260, 64, 262, 292, 263, 265, 63, 291, + 289, 264, 62, 275, 268, 170, 271, 37, + 274, 38, 277, 41, 59, 280, 44, 56, + 283, 47, 53, 286, 50, 288, 293, 295, + 300, 302, 307, 309, 314, 316, 170, 321, + 106, 323, 386, 72, 324, 326, 105, 385, + 383, 325, 104, 327, 379, 328, 330, 103, + 378, 376, 329, 102, 331, 372, 332, 334, + 101, 371, 369, 333, 100, 335, 365, 336, + 338, 99, 364, 362, 337, 98, 348, 341, + 170, 344, 73, 347, 74, 350, 77, 95, + 353, 80, 92, 356, 83, 89, 359, 86, + 361, 366, 368, 373, 375, 380, 382, 387, + 389, 170, 170, 395, 397, 142, 141, 415, + 417, 465, 396, 398, 461, 107, 399, 401, + 140, 460, 458, 400, 139, 402, 454, 403, + 405, 138, 453, 451, 404, 137, 406, 447, + 407, 409, 136, 446, 444, 408, 135, 410, + 440, 411, 413, 134, 439, 437, 412, 133, + 423, 416, 170, 419, 108, 422, 109, 425, + 112, 130, 428, 115, 127, 431, 118, 124, + 434, 121, 436, 441, 443, 448, 450, 455, + 457, 462, 464, 143, 469, 470, 480, 475, + 477, 498, 471, 472, 473, 144, 479, 474, + 476, 145, 482, 147, 167, 156, 485, 150, + 164, 488, 153, 161, 491, 158, 494, 157, + 497 +}; + +static const char _indic_syllable_machine_trans_actions[] = { + 1, 2, 0, 0, 0, 2, 0, 0, + 2, 0, 0, 2, 0, 0, 2, 0, + 0, 0, 2, 0, 0, 2, 0, 0, + 2, 0, 0, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 3, 2, + 0, 0, 0, 2, 0, 0, 2, 0, + 0, 2, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 2, 0, 0, 2, 0, + 0, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 4, 2, 0, 0, + 0, 2, 5, 0, 0, 2, 0, 0, + 2, 0, 0, 2, 0, 0, 0, 2, + 0, 0, 2, 0, 0, 2, 0, 0, + 2, 2, 6, 2, 6, 2, 6, 2, + 6, 2, 7, 2, 0, 0, 0, 2, + 0, 0, 2, 0, 0, 2, 0, 0, + 2, 0, 0, 0, 2, 0, 0, 2, + 0, 0, 2, 0, 0, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 6, 8, 0, 2, 0, 2, 0, 0, + 2, 0, 0, 2, 0, 2, 0, 0, + 0, 0, 2, 0, 0, 2, 0, 0, + 2, 0, 0, 2, 11, 2, 2, 6, + 2, 12, 12, 0, 0, 2, 2, 6, + 2, 13, 2, 2, 0, 2, 0, 0, + 2, 2, 2, 0, 2, 2, 0, 2, + 2, 0, 2, 2, 2, 0, 2, 2, + 2, 2, 0, 2, 2, 2, 0, 2, + 2, 2, 2, 0, 2, 2, 2, 0, + 2, 2, 2, 2, 0, 2, 2, 2, + 0, 2, 0, 14, 0, 0, 2, 0, + 2, 0, 0, 2, 0, 0, 2, 0, + 0, 2, 0, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 15, 2, 2, 0, + 2, 0, 0, 2, 2, 0, 2, 2, + 0, 2, 2, 0, 2, 2, 2, 0, + 2, 2, 2, 2, 0, 2, 2, 2, + 0, 2, 2, 2, 2, 0, 2, 2, + 2, 0, 2, 2, 2, 2, 0, 2, + 2, 2, 0, 2, 0, 16, 0, 0, + 2, 0, 2, 0, 0, 2, 0, 0, + 2, 0, 0, 2, 0, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 17, 6, + 0, 6, 6, 0, 6, 2, 0, 6, + 2, 6, 0, 6, 6, 6, 2, 0, + 6, 2, 6, 0, 6, 6, 6, 2, + 0, 6, 2, 6, 0, 6, 6, 6, + 2, 0, 6, 2, 6, 0, 6, 0, + 18, 0, 0, 2, 0, 2, 0, 0, + 2, 0, 0, 2, 0, 0, 2, 0, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 19, 20, 2, 2, 0, 0, 0, + 0, 2, 2, 2, 2, 0, 2, 2, + 0, 2, 2, 2, 0, 2, 2, 2, + 2, 0, 2, 2, 2, 0, 2, 2, + 2, 2, 0, 2, 2, 2, 0, 2, + 2, 2, 2, 0, 2, 2, 2, 0, + 2, 0, 21, 0, 0, 2, 0, 2, + 0, 0, 2, 0, 0, 2, 0, 0, + 2, 0, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 0, 0, 8, 2, 0, + 0, 2, 2, 8, 8, 0, 8, 8, + 0, 0, 2, 0, 0, 0, 2, 0, + 0, 2, 0, 0, 2, 0, 0, 0, + 2 +}; + +static const char _indic_syllable_machine_to_state_actions[] = { + 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, 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, 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, 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, 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, 0, 0, 0, + 0, 0, 9, 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, 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, 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, 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, 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, + 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, 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, 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, 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, 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 +}; + +static const char _indic_syllable_machine_from_state_actions[] = { + 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, 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, 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, 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, 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, 0, 0, 0, + 0, 0, 10, 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, 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, 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, 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, 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, + 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, 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, 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, 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, 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 +}; + +static const short _indic_syllable_machine_eof_trans[] = { + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 77, 77, 77, 83, 83, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, + 83, 77, 77, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 77, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 410, + 343, 410, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 343, 194, 194, 194, 343, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 343 +}; + +static const int indic_syllable_machine_start = 170; +static const int indic_syllable_machine_first_final = 170; +static const int indic_syllable_machine_error = -1; + +static const int indic_syllable_machine_en_main = 170; + + +#line 36 "../../src/hb-ot-shape-complex-indic-machine.rl" + + + +#line 91 "../../src/hb-ot-shape-complex-indic-machine.rl" + + +#define found_syllable(syllable_type) \ + HB_STMT_START { \ + if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \ + for (unsigned int i = last; i < p+1; i++) \ + info[i].syllable() = (syllable_serial << 4) | syllable_type; \ + last = p+1; \ + syllable_serial++; \ + if (unlikely (syllable_serial == 16)) syllable_serial = 1; \ + } HB_STMT_END + +static void +find_syllables (hb_buffer_t *buffer) +{ + unsigned int p, pe, eof, ts HB_UNUSED, te, act; + int cs; + hb_glyph_info_t *info = buffer->info; + +#line 1273 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" + { + cs = indic_syllable_machine_start; + ts = 0; + te = 0; + act = 0; + } + +#line 112 "../../src/hb-ot-shape-complex-indic-machine.rl" + + + p = 0; + pe = eof = buffer->len; + + unsigned int last = 0; + unsigned int syllable_serial = 1; + +#line 1290 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" + { + int _slen; + int _trans; + const unsigned char *_keys; + const short *_inds; + if ( p == pe ) + goto _test_eof; +_resume: + switch ( _indic_syllable_machine_from_state_actions[cs] ) { + case 10: +#line 1 "NONE" + {ts = p;} + break; +#line 1304 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" + } + + _keys = _indic_syllable_machine_trans_keys + (cs<<1); + _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index_offsets[cs]; + + _slen = _indic_syllable_machine_key_spans[cs]; + _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) && + ( info[p].indic_category()) <= _keys[1] ? + ( info[p].indic_category()) - _keys[0] : _slen ]; + +_eof_trans: + cs = _indic_syllable_machine_trans_targs[_trans]; + + if ( _indic_syllable_machine_trans_actions[_trans] == 0 ) + goto _again; + + switch ( _indic_syllable_machine_trans_actions[_trans] ) { + case 2: +#line 1 "NONE" + {te = p+1;} + break; + case 14: +#line 83 "../../src/hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ found_syllable (consonant_syllable); }} + break; + case 16: +#line 84 "../../src/hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ found_syllable (vowel_syllable); }} + break; + case 21: +#line 85 "../../src/hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ found_syllable (standalone_cluster); }} + break; + case 18: +#line 86 "../../src/hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ found_syllable (broken_cluster); }} + break; + case 11: +#line 87 "../../src/hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ found_syllable (non_indic_cluster); }} + break; + case 13: +#line 83 "../../src/hb-ot-shape-complex-indic-machine.rl" + {te = p;p--;{ found_syllable (consonant_syllable); }} + break; + case 15: +#line 84 "../../src/hb-ot-shape-complex-indic-machine.rl" + {te = p;p--;{ found_syllable (vowel_syllable); }} + break; + case 20: +#line 85 "../../src/hb-ot-shape-complex-indic-machine.rl" + {te = p;p--;{ found_syllable (standalone_cluster); }} + break; + case 17: +#line 86 "../../src/hb-ot-shape-complex-indic-machine.rl" + {te = p;p--;{ found_syllable (broken_cluster); }} + break; + case 19: +#line 87 "../../src/hb-ot-shape-complex-indic-machine.rl" + {te = p;p--;{ found_syllable (non_indic_cluster); }} + break; + case 1: +#line 83 "../../src/hb-ot-shape-complex-indic-machine.rl" + {{p = ((te))-1;}{ found_syllable (consonant_syllable); }} + break; + case 3: +#line 84 "../../src/hb-ot-shape-complex-indic-machine.rl" + {{p = ((te))-1;}{ found_syllable (vowel_syllable); }} + break; + case 7: +#line 85 "../../src/hb-ot-shape-complex-indic-machine.rl" + {{p = ((te))-1;}{ found_syllable (standalone_cluster); }} + break; + case 4: +#line 86 "../../src/hb-ot-shape-complex-indic-machine.rl" + {{p = ((te))-1;}{ found_syllable (broken_cluster); }} + break; + case 5: +#line 1 "NONE" + { switch( act ) { + case 1: + {{p = ((te))-1;} found_syllable (consonant_syllable); } + break; + case 4: + {{p = ((te))-1;} found_syllable (broken_cluster); } + break; + case 5: + {{p = ((te))-1;} found_syllable (non_indic_cluster); } + break; + } + } + break; + case 8: +#line 1 "NONE" + {te = p+1;} +#line 83 "../../src/hb-ot-shape-complex-indic-machine.rl" + {act = 1;} + break; + case 6: +#line 1 "NONE" + {te = p+1;} +#line 86 "../../src/hb-ot-shape-complex-indic-machine.rl" + {act = 4;} + break; + case 12: +#line 1 "NONE" + {te = p+1;} +#line 87 "../../src/hb-ot-shape-complex-indic-machine.rl" + {act = 5;} + break; +#line 1415 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" + } + +_again: + switch ( _indic_syllable_machine_to_state_actions[cs] ) { + case 9: +#line 1 "NONE" + {ts = 0;} + break; +#line 1424 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" + } + + if ( ++p != pe ) + goto _resume; + _test_eof: {} + if ( p == eof ) + { + if ( _indic_syllable_machine_eof_trans[cs] > 0 ) { + _trans = _indic_syllable_machine_eof_trans[cs] - 1; + goto _eof_trans; + } + } + + } + +#line 121 "../../src/hb-ot-shape-complex-indic-machine.rl" + +} + +#endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic-machine.rl index a536da55cff..11115c9cda4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic-machine.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic-machine.rl @@ -76,7 +76,7 @@ halant_or_matra_group = (final_halant_group | (h.ZWJ)? matra_group{0,4}); consonant_syllable = Repha? (cn.halant_group){0,4} cn A? halant_or_matra_group? syllable_tail; vowel_syllable = reph? V.n? (ZWJ | (halant_group.cn){0,4} halant_or_matra_group? syllable_tail); standalone_cluster = reph? place_holder.n? (halant_group.cn){0,4} halant_or_matra_group? syllable_tail; -broken_cluster = n? (halant_group.cn){0,4} halant_or_matra_group syllable_tail; +broken_cluster = reph? n? (halant_group.cn){0,4} halant_or_matra_group syllable_tail; other = any; main := |* @@ -103,7 +103,7 @@ main := |* static void find_syllables (hb_buffer_t *buffer) { - unsigned int p, pe, eof, ts, te, act; + unsigned int p, pe, eof, ts HB_UNUSED, te, act; int cs; hb_glyph_info_t *info = buffer->info; %%{ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic-private.hh index e36090e4837..e36090e4837 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic-table.hh index 70765b6d6f4..70765b6d6f4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic.cc index d924d1a5a92..1bc8a773e31 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic.cc @@ -124,7 +124,7 @@ static const indic_config_t indic_configs[] = {HB_SCRIPT_SINHALA, false,0x0DCA,BASE_POS_FIRST,REPH_POS_AFTER_MAIN, REPH_MODE_EXPLICIT}, {HB_SCRIPT_KHMER, false,0x17D2,BASE_POS_FIRST,REPH_POS_DEFAULT, REPH_MODE_VIS_REPHA}, /* Myanmar does not have the "old_indic" behavior, even though it has a "new" tag. */ - {HB_SCRIPT_MYANMAR, false, 0x1039,BASE_POS_LAST, REPH_POS_DEFAULT, REPH_MODE_EXPLICIT}, + {HB_SCRIPT_MYANMAR, false,0x1039,BASE_POS_LAST, REPH_POS_DEFAULT, REPH_MODE_EXPLICIT}, }; @@ -467,7 +467,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan, unsigned int limit = start; if (indic_plan->mask_array[RPHF] && start + 3 <= end && - (/* TODO Handle other Reph modes. */ + ( (indic_plan->config->reph_mode == REPH_MODE_IMPLICIT && !is_joiner (info[start + 2])) || (indic_plan->config->reph_mode == REPH_MODE_EXPLICIT && info[start + 2].indic_category() == OT_ZWJ) )) @@ -482,7 +482,14 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan, base = start; has_reph = true; } - }; + } else if (indic_plan->config->reph_mode == REPH_MODE_LOG_REPHA && info[start].indic_category() == OT_Repha) + { + limit += 1; + while (limit < end && is_joiner (info[limit])) + limit++; + base = start; + has_reph = true; + } switch (indic_plan->config->base_pos) { @@ -570,7 +577,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan, * base consonants. * * Only do this for unforced Reph. (ie. not for Ra,H,ZWJ. */ - if (has_reph && base == start && start + 2 == limit) { + if (has_reph && base == start && start - limit <= 2) { /* Have no other consonant, so Reph is not formed and Ra becomes base. */ has_reph = false; } @@ -852,7 +859,7 @@ initial_reordering_syllable (const hb_ot_shape_plan_t *plan, } static inline void -insert_dotted_circles (const hb_ot_shape_plan_t *plan, +insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED, hb_font_t *font, hb_buffer_t *buffer) { @@ -887,14 +894,23 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan, syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F); if (unlikely (last_syllable != syllable && syllable_type == broken_cluster)) { + last_syllable = syllable; + hb_glyph_info_t info = dottedcircle; info.cluster = buffer->cur().cluster; info.mask = buffer->cur().mask; info.syllable() = buffer->cur().syllable(); + + /* Insert dottedcircle after possible Repha. */ + while (buffer->idx < buffer->len && + last_syllable == buffer->cur().syllable() && + buffer->cur().indic_category() == OT_Repha) + buffer->next_glyph (); + buffer->output_info (info); - last_syllable = syllable; } - buffer->next_glyph (); + else + buffer->next_glyph (); } buffer->swap_buffers (); @@ -1246,7 +1262,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan, static void final_reordering (const hb_ot_shape_plan_t *plan, - hb_font_t *font, + hb_font_t *font HB_UNUSED, hb_buffer_t *buffer) { unsigned int count = buffer->len; @@ -1273,7 +1289,7 @@ final_reordering (const hb_ot_shape_plan_t *plan, static hb_ot_shape_normalization_mode_t -normalization_preference_indic (const hb_segment_properties_t *props) +normalization_preference_indic (const hb_segment_properties_t *props HB_UNUSED) { return HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT; } @@ -1338,6 +1354,11 @@ decompose_indic (const hb_ot_shape_normalize_context_t *c, * don't have positioning features for the Unicode-style decomposition. * * Argh... + * + * The Uniscribe behavior is now documented in the newly published Sinhala + * spec in 2012: + * + * http://www.microsoft.com/typography/OpenTypeDev/sinhala/intro.htm#shaping */ const indic_shape_plan_t *indic_plan = (const indic_shape_plan_t *) c->plan->data; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-private.hh index 26871c2fc09..26871c2fc09 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-thai.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-thai.cc index 07608918110..24d476a0ba3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-thai.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-complex-thai.cc @@ -215,7 +215,7 @@ static const struct thai_below_state_machine_edge_t { static void -do_thai_pua_shaping (const hb_ot_shape_plan_t *plan, +do_thai_pua_shaping (const hb_ot_shape_plan_t *plan HB_UNUSED, hb_buffer_t *buffer, hb_font_t *font) { diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-fallback-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-fallback-private.hh index 5e9cb061780..5e9cb061780 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-fallback-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-fallback-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-fallback.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-fallback.cc index f4463e4eeca..6f3426e6b49 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-fallback.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-fallback.cc @@ -161,8 +161,8 @@ recategorize_combining_class (hb_codepoint_t u, } void -_hb_ot_shape_fallback_position_recategorize_marks (const hb_ot_shape_plan_t *plan, - hb_font_t *font, +_hb_ot_shape_fallback_position_recategorize_marks (const hb_ot_shape_plan_t *plan HB_UNUSED, + hb_font_t *font HB_UNUSED, hb_buffer_t *buffer) { unsigned int count = buffer->len; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-normalize-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-normalize-private.hh index 8112f03aee9..8112f03aee9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-normalize-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-normalize-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-normalize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-normalize.cc index c5325e42b53..c5325e42b53 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-normalize.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-normalize.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-private.hh index 23e80b7bdfa..23e80b7bdfa 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape.cc index 96461d7079e..96461d7079e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-shape.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-tag.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-tag.cc index 0004a753647..91ebec76ee3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-tag.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-tag.cc @@ -23,7 +23,7 @@ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod - * Google Author(s): Behdad Esfahbod + * Google Author(s): Behdad Esfahbod, Roozbeh Pournader */ #include "hb-private.hh" @@ -169,7 +169,9 @@ typedef struct { * Draft OpenType 1.5 spec, with with the ISO 639-3 codes from * 2008/08/04, matching on name, and finally adjusted manually. * - * Many items still missing. Those are commented out at the end. + * Updated on 2012/12/07 with more research into remaining codes. + * + * Some items still missing. Those are commented out at the end. * Keep sorted for bsearch. */ @@ -177,43 +179,63 @@ static const LangTag ot_languages[] = { {"aa", HB_TAG('A','F','R',' ')}, /* Afar */ {"ab", HB_TAG('A','B','K',' ')}, /* Abkhazian */ {"abq", HB_TAG('A','B','A',' ')}, /* Abaza */ + {"ada", HB_TAG('D','N','G',' ')}, /* Dangme */ {"ady", HB_TAG('A','D','Y',' ')}, /* Adyghe */ {"af", HB_TAG('A','F','K',' ')}, /* Afrikaans */ + {"aii", HB_TAG('S','W','A',' ')}, /* Swadaya Aramaic */ {"aiw", HB_TAG('A','R','I',' ')}, /* Aari */ + {"alt", HB_TAG('A','L','T',' ')}, /* [Southern] Altai */ {"am", HB_TAG('A','M','H',' ')}, /* Amharic */ + {"amf", HB_TAG('H','B','N',' ')}, /* Hammer-Banna */ {"ar", HB_TAG('A','R','A',' ')}, /* Arabic */ {"arn", HB_TAG('M','A','P',' ')}, /* Mapudungun */ {"as", HB_TAG('A','S','M',' ')}, /* Assamese */ + {"ath", HB_TAG('A','T','H',' ')}, /* Athapaskan [family] */ + {"atv", HB_TAG('A','L','T',' ')}, /* [Northern] Altai */ {"av", HB_TAG('A','V','R',' ')}, /* Avaric */ {"awa", HB_TAG('A','W','A',' ')}, /* Awadhi */ {"ay", HB_TAG('A','Y','M',' ')}, /* Aymara */ {"az", HB_TAG('A','Z','E',' ')}, /* Azerbaijani */ {"ba", HB_TAG('B','S','H',' ')}, /* Bashkir */ + {"bai", HB_TAG('B','M','L',' ')}, /* Bamileke [family] */ {"bal", HB_TAG('B','L','I',' ')}, /* Baluchi */ + {"bci", HB_TAG('B','A','U',' ')}, /* Baule */ {"bcq", HB_TAG('B','C','H',' ')}, /* Bench */ + {"be", HB_TAG('B','E','L',' ')}, /* Belarussian */ {"bem", HB_TAG('B','E','M',' ')}, /* Bemba (Zambia) */ + {"ber", HB_TAG('B','E','R',' ')}, /* Berber [family] */ {"bfq", HB_TAG('B','A','D',' ')}, /* Badaga */ {"bft", HB_TAG('B','L','T',' ')}, /* Balti */ + {"bfy", HB_TAG('B','A','G',' ')}, /* Baghelkhandi */ {"bg", HB_TAG('B','G','R',' ')}, /* Bulgarian */ {"bhb", HB_TAG('B','H','I',' ')}, /* Bhili */ {"bho", HB_TAG('B','H','O',' ')}, /* Bhojpuri */ {"bik", HB_TAG('B','I','K',' ')}, /* Bikol */ {"bin", HB_TAG('E','D','O',' ')}, /* Bini */ + {"bjt", HB_TAG('B','L','N',' ')}, /* Balanta-Ganja */ + {"bla", HB_TAG('B','K','F',' ')}, /* Blackfoot */ + {"ble", HB_TAG('B','L','N',' ')}, /* Balanta-Kentohe */ {"bm", HB_TAG('B','M','B',' ')}, /* Bambara */ {"bn", HB_TAG('B','E','N',' ')}, /* Bengali */ {"bo", HB_TAG('T','I','B',' ')}, /* Tibetan */ {"br", HB_TAG('B','R','E',' ')}, /* Breton */ + {"bra", HB_TAG('B','R','I',' ')}, /* Braj Bhasha */ {"brh", HB_TAG('B','R','H',' ')}, /* Brahui */ {"bs", HB_TAG('B','O','S',' ')}, /* Bosnian */ {"btb", HB_TAG('B','T','I',' ')}, /* Beti (Cameroon) */ + {"bxr", HB_TAG('R','B','U',' ')}, /* Russian Buriat */ + {"byn", HB_TAG('B','I','L',' ')}, /* Bilen */ {"ca", HB_TAG('C','A','T',' ')}, /* Catalan */ {"ce", HB_TAG('C','H','E',' ')}, /* Chechen */ {"ceb", HB_TAG('C','E','B',' ')}, /* Cebuano */ {"chp", HB_TAG('C','H','P',' ')}, /* Chipewyan */ {"chr", HB_TAG('C','H','R',' ')}, /* Cherokee */ + {"ckt", HB_TAG('C','H','K',' ')}, /* Chukchi */ {"cop", HB_TAG('C','O','P',' ')}, /* Coptic */ {"cr", HB_TAG('C','R','E',' ')}, /* Cree */ {"crh", HB_TAG('C','R','T',' ')}, /* Crimean Tatar */ + {"crj", HB_TAG('E','C','R',' ')}, /* [Southern] East Cree */ + {"crl", HB_TAG('E','C','R',' ')}, /* [Northern] East Cree */ {"crm", HB_TAG('M','C','R',' ')}, /* Moose Cree */ {"crx", HB_TAG('C','R','R',' ')}, /* Carrier */ {"cs", HB_TAG('C','S','Y',' ')}, /* Czech */ @@ -226,10 +248,12 @@ static const LangTag ot_languages[] = { {"dar", HB_TAG('D','A','R',' ')}, /* Dargwa */ {"de", HB_TAG('D','E','U',' ')}, /* German */ {"din", HB_TAG('D','N','K',' ')}, /* Dinka */ + {"dje", HB_TAG('D','J','R',' ')}, /* Djerma */ {"dng", HB_TAG('D','U','N',' ')}, /* Dungan */ {"doi", HB_TAG('D','G','R',' ')}, /* Dogri */ {"dsb", HB_TAG('L','S','B',' ')}, /* Lower Sorbian */ {"dv", HB_TAG('D','I','V',' ')}, /* Dhivehi */ + {"dyu", HB_TAG('J','U','L',' ')}, /* Jula */ {"dz", HB_TAG('D','Z','N',' ')}, /* Dzongkha */ {"ee", HB_TAG('E','W','E',' ')}, /* Ewe */ {"efi", HB_TAG('E','F','I',' ')}, /* Efik */ @@ -257,20 +281,27 @@ static const LangTag ot_languages[] = { {"gag", HB_TAG('G','A','G',' ')}, /* Gagauz */ {"gbm", HB_TAG('G','A','W',' ')}, /* Garhwali */ {"gd", HB_TAG('G','A','E',' ')}, /* Scottish Gaelic */ + {"gez", HB_TAG('G','E','Z',' ')}, /* Ge'ez */ {"gl", HB_TAG('G','A','L',' ')}, /* Galician */ {"gld", HB_TAG('N','A','N',' ')}, /* Nanai */ {"gn", HB_TAG('G','U','A',' ')}, /* Guarani */ {"gon", HB_TAG('G','O','N',' ')}, /* Gondi */ {"grt", HB_TAG('G','R','O',' ')}, /* Garo */ + {"gru", HB_TAG('S','O','G',' ')}, /* Sodo Gurage */ {"gu", HB_TAG('G','U','J',' ')}, /* Gujarati */ {"guk", HB_TAG('G','M','Z',' ')}, /* Gumuz */ {"gv", HB_TAG('M','N','X',' ')}, /* Manx Gaelic */ {"ha", HB_TAG('H','A','U',' ')}, /* Hausa */ {"har", HB_TAG('H','R','I',' ')}, /* Harari */ + {"haw", HB_TAG('H','A','W',' ')}, /* Hawaiin */ {"he", HB_TAG('I','W','R',' ')}, /* Hebrew */ {"hi", HB_TAG('H','I','N',' ')}, /* Hindi */ {"hil", HB_TAG('H','I','L',' ')}, /* Hiligaynon */ + {"hnd", HB_TAG('H','N','D',' ')}, /* [Southern] Hindko */ + {"hne", HB_TAG('C','H','H',' ')}, /* Chattisgarhi */ + {"hno", HB_TAG('H','N','D',' ')}, /* [Northern] Hindko */ {"hoc", HB_TAG('H','O',' ',' ')}, /* Ho */ + {"hoj", HB_TAG('H','A','R',' ')}, /* Harauti */ {"hr", HB_TAG('H','R','V',' ')}, /* Croatian */ {"hsb", HB_TAG('U','S','B',' ')}, /* Upper Sorbian */ {"ht", HB_TAG('H','A','I',' ')}, /* Haitian */ @@ -279,6 +310,8 @@ static const LangTag ot_languages[] = { {"id", HB_TAG('I','N','D',' ')}, /* Indonesian */ {"ig", HB_TAG('I','B','O',' ')}, /* Igbo */ {"igb", HB_TAG('E','B','I',' ')}, /* Ebira */ + {"ijo", HB_TAG('I','J','O',' ')}, /* Ijo [family] */ + {"ilo", HB_TAG('I','L','O',' ')}, /* Ilokano */ {"inh", HB_TAG('I','N','G',' ')}, /* Ingush */ {"is", HB_TAG('I','S','L',' ')}, /* Icelandic */ {"it", HB_TAG('I','T','A',' ')}, /* Italian */ @@ -286,19 +319,25 @@ static const LangTag ot_languages[] = { {"ja", HB_TAG('J','A','N',' ')}, /* Japanese */ {"jv", HB_TAG('J','A','V',' ')}, /* Javanese */ {"ka", HB_TAG('K','A','T',' ')}, /* Georgian */ + {"kaa", HB_TAG('K','R','K',' ')}, /* Karakalpak */ {"kam", HB_TAG('K','M','B',' ')}, /* Kamba (Kenya) */ + {"kar", HB_TAG('K','R','N',' ')}, /* Karen [family] */ {"kbd", HB_TAG('K','A','B',' ')}, /* Kabardian */ {"kdr", HB_TAG('K','R','M',' ')}, /* Karaim */ {"kdt", HB_TAG('K','U','Y',' ')}, /* Kuy */ + {"kex", HB_TAG('K','K','N',' ')}, /* Kokni */ {"kfr", HB_TAG('K','A','C',' ')}, /* Kachchi */ {"kfy", HB_TAG('K','M','N',' ')}, /* Kumaoni */ {"kha", HB_TAG('K','S','I',' ')}, /* Khasi */ + {"khb", HB_TAG('X','B','D',' ')}, /* Tai Lue */ {"khw", HB_TAG('K','H','W',' ')}, /* Khowar */ {"ki", HB_TAG('K','I','K',' ')}, /* Kikuyu */ + {"kjh", HB_TAG('K','H','A',' ')}, /* Khakass */ {"kk", HB_TAG('K','A','Z',' ')}, /* Kazakh */ {"kl", HB_TAG('G','R','N',' ')}, /* Kalaallisut */ {"kln", HB_TAG('K','A','L',' ')}, /* Kalenjin */ {"km", HB_TAG('K','H','M',' ')}, /* Central Khmer */ + {"kmb", HB_TAG('M','B','N',' ')}, /* [North] Mbundu */ {"kmw", HB_TAG('K','M','O',' ')}, /* Komo (Democratic Republic of Congo) */ {"kn", HB_TAG('K','A','N',' ')}, /* Kannada */ {"ko", HB_TAG('K','O','R',' ')}, /* Korean */ @@ -316,6 +355,7 @@ static const LangTag ot_languages[] = { {"ku", HB_TAG('K','U','R',' ')}, /* Kurdish */ {"kum", HB_TAG('K','U','M',' ')}, /* Kumyk */ {"kvd", HB_TAG('K','U','I',' ')}, /* Kui (Indonesia) */ + {"kxc", HB_TAG('K','M','S',' ')}, /* Komso */ {"kxu", HB_TAG('K','U','I',' ')}, /* Kui (India) */ {"ky", HB_TAG('K','I','R',' ')}, /* Kirghiz */ {"la", HB_TAG('L','A','T',' ')}, /* Latin */ @@ -323,13 +363,19 @@ static const LangTag ot_languages[] = { {"lb", HB_TAG('L','T','Z',' ')}, /* Luxembourgish */ {"lbe", HB_TAG('L','A','K',' ')}, /* Lak */ {"lbj", HB_TAG('L','D','K',' ')}, /* Ladakhi */ + {"lez", HB_TAG('L','E','Z',' ')}, /* Lezgi */ + {"lg", HB_TAG('L','U','G',' ')}, /* Luganda */ {"lif", HB_TAG('L','M','B',' ')}, /* Limbu */ {"lld", HB_TAG('L','A','D',' ')}, /* Ladin */ + {"lmn", HB_TAG('L','A','M',' ')}, /* Lambani */ {"ln", HB_TAG('L','I','N',' ')}, /* Lingala */ {"lo", HB_TAG('L','A','O',' ')}, /* Lao */ {"lt", HB_TAG('L','T','H',' ')}, /* Lithuanian */ + {"lu", HB_TAG('L','U','B',' ')}, /* Luba-Katanga */ + {"lua", HB_TAG('L','U','B',' ')}, /* Luba-Kasai */ {"luo", HB_TAG('L','U','O',' ')}, /* Luo (Kenya and Tanzania) */ - {"luw", HB_TAG('L','U','O',' ')}, /* Luo (Cameroon) */ + {"lus", HB_TAG('M','I','Z',' ')}, /* Mizo */ + {"luy", HB_TAG('L','U','H',' ')}, /* Luhya [macrolanguage] */ {"lv", HB_TAG('L','V','I',' ')}, /* Latvian */ {"lzz", HB_TAG('L','A','Z',' ')}, /* Laz */ {"mai", HB_TAG('M','T','H',' ')}, /* Maithili */ @@ -338,6 +384,7 @@ static const LangTag ot_languages[] = { {"mdy", HB_TAG('M','L','E',' ')}, /* Male (Ethiopia) */ {"men", HB_TAG('M','D','E',' ')}, /* Mende (Sierra Leone) */ {"mg", HB_TAG('M','L','G',' ')}, /* Malagasy */ + {"mhr", HB_TAG('L','M','A',' ')}, /* Low Mari */ {"mi", HB_TAG('M','R','I',' ')}, /* Maori */ {"mk", HB_TAG('M','K','D',' ')}, /* Macedonian */ {"ml", HB_TAG('M','L','R',' ')}, /* Malayalam */ @@ -351,14 +398,17 @@ static const LangTag ot_languages[] = { {"moh", HB_TAG('M','O','H',' ')}, /* Mohawk */ {"mpe", HB_TAG('M','A','J',' ')}, /* Majang */ {"mr", HB_TAG('M','A','R',' ')}, /* Marathi */ + {"mrj", HB_TAG('H','M','A',' ')}, /* High Mari */ {"ms", HB_TAG('M','L','Y',' ')}, /* Malay */ {"mt", HB_TAG('M','T','S',' ')}, /* Maltese */ {"mwr", HB_TAG('M','A','W',' ')}, /* Marwari */ {"my", HB_TAG('B','R','M',' ')}, /* Burmese */ {"mym", HB_TAG('M','E','N',' ')}, /* Me'en */ {"myv", HB_TAG('E','R','Z',' ')}, /* Erzya */ + {"nag", HB_TAG('N','A','G',' ')}, /* Naga-Assamese */ {"nb", HB_TAG('N','O','R',' ')}, /* Norwegian Bokmål */ {"nco", HB_TAG('S','I','B',' ')}, /* Sibe */ + {"nd", HB_TAG('N','D','B',' ')}, /* [North] Ndebele */ {"ne", HB_TAG('N','E','P',' ')}, /* Nepali */ {"new", HB_TAG('N','E','W',' ')}, /* Newari */ {"ng", HB_TAG('N','D','G',' ')}, /* Ndonga */ @@ -368,33 +418,45 @@ static const LangTag ot_languages[] = { {"nl", HB_TAG('N','L','D',' ')}, /* Dutch */ {"nn", HB_TAG('N','Y','N',' ')}, /* Norwegian Nynorsk */ {"no", HB_TAG('N','O','R',' ')}, /* Norwegian (deprecated) */ + {"nod", HB_TAG('N','T','A',' ')}, /* Northern Tai */ {"nog", HB_TAG('N','O','G',' ')}, /* Nogai */ {"nqo", HB_TAG('N','K','O',' ')}, /* N'Ko */ + {"nr", HB_TAG('N','D','B',' ')}, /* [South] Ndebele */ {"nsk", HB_TAG('N','A','S',' ')}, /* Naskapi */ + {"nso", HB_TAG('S','O','T',' ')}, /* [Northern] Sotho */ {"ny", HB_TAG('C','H','I',' ')}, /* Nyanja */ + {"nyn", HB_TAG('N','K','L',' ')}, /* Nkole */ {"oc", HB_TAG('O','C','I',' ')}, /* Occitan (post 1500) */ {"oj", HB_TAG('O','J','B',' ')}, /* Ojibwa */ + {"ojs", HB_TAG('O','C','R',' ')}, /* Oji-Cree */ {"om", HB_TAG('O','R','O',' ')}, /* Oromo */ {"or", HB_TAG('O','R','I',' ')}, /* Oriya */ {"os", HB_TAG('O','S','S',' ')}, /* Ossetian */ {"pa", HB_TAG('P','A','N',' ')}, /* Panjabi */ + {"pce", HB_TAG('P','L','G',' ')}, /* [Ruching] Palaung */ {"pi", HB_TAG('P','A','L',' ')}, /* Pali */ {"pl", HB_TAG('P','L','K',' ')}, /* Polish */ + {"pll", HB_TAG('P','L','G',' ')}, /* [Shwe] Palaung */ {"plp", HB_TAG('P','A','P',' ')}, /* Palpa */ {"prs", HB_TAG('D','R','I',' ')}, /* Dari */ {"ps", HB_TAG('P','A','S',' ')}, /* Pushto */ {"pt", HB_TAG('P','T','G',' ')}, /* Portuguese */ {"raj", HB_TAG('R','A','J',' ')}, /* Rajasthani */ + {"rbb", HB_TAG('P','L','G',' ')}, /* [Rumai] Palaung */ {"ria", HB_TAG('R','I','A',' ')}, /* Riang (India) */ {"ril", HB_TAG('R','I','A',' ')}, /* Riang (Myanmar) */ + {"rki", HB_TAG('A','R','K',' ')}, /* Arakanese */ + {"rm", HB_TAG('R','M','S',' ')}, /* Rhaeto-Romanic */ {"ro", HB_TAG('R','O','M',' ')}, /* Romanian */ {"rom", HB_TAG('R','O','Y',' ')}, /* Romany */ {"ru", HB_TAG('R','U','S',' ')}, /* Russian */ {"rue", HB_TAG('R','S','Y',' ')}, /* Rusyn */ + {"rw", HB_TAG('R','U','A',' ')}, /* Ruanda */ {"sa", HB_TAG('S','A','N',' ')}, /* Sanskrit */ {"sah", HB_TAG('Y','A','K',' ')}, /* Yakut */ {"sat", HB_TAG('S','A','T',' ')}, /* Santali */ {"sck", HB_TAG('S','A','D',' ')}, /* Sadri */ + {"scs", HB_TAG('S','L','A',' ')}, /* [North] Slavey */ {"sd", HB_TAG('S','N','D',' ')}, /* Sindhi */ {"se", HB_TAG('N','S','M',' ')}, /* Northern Sami */ {"seh", HB_TAG('S','N','A',' ')}, /* Sena */ @@ -417,6 +479,8 @@ static const LangTag ot_languages[] = { {"sq", HB_TAG('S','Q','I',' ')}, /* Albanian */ {"sr", HB_TAG('S','R','B',' ')}, /* Serbian */ {"srr", HB_TAG('S','R','R',' ')}, /* Serer */ + {"ss", HB_TAG('S','W','Z',' ')}, /* Swazi */ + {"st", HB_TAG('S','O','T',' ')}, /* [Southern] Sotho */ {"suq", HB_TAG('S','U','R',' ')}, /* Suri */ {"sv", HB_TAG('S','V','E',' ')}, /* Swedish */ {"sva", HB_TAG('S','V','A',' ')}, /* Svan */ @@ -424,31 +488,34 @@ static const LangTag ot_languages[] = { {"swb", HB_TAG('C','M','R',' ')}, /* Comorian */ {"syr", HB_TAG('S','Y','R',' ')}, /* Syriac */ {"ta", HB_TAG('T','A','M',' ')}, /* Tamil */ + {"tab", HB_TAG('T','A','B',' ')}, /* Tabasaran */ {"tcy", HB_TAG('T','U','L',' ')}, /* Tulu */ {"te", HB_TAG('T','E','L',' ')}, /* Telugu */ + {"tem", HB_TAG('T','M','N',' ')}, /* Temne */ {"tg", HB_TAG('T','A','J',' ')}, /* Tajik */ {"th", HB_TAG('T','H','A',' ')}, /* Thai */ {"ti", HB_TAG('T','G','Y',' ')}, /* Tigrinya */ {"tig", HB_TAG('T','G','R',' ')}, /* Tigre */ {"tk", HB_TAG('T','K','M',' ')}, /* Turkmen */ {"tn", HB_TAG('T','N','A',' ')}, /* Tswana */ - {"tnz", HB_TAG('T','N','G',' ')}, /* Tonga (Thailand) */ - {"to", HB_TAG('T','N','G',' ')}, /* Tonga (Tonga Islands) */ - {"tog", HB_TAG('T','N','G',' ')}, /* Tonga (Nyasa) */ - {"toi", HB_TAG('T','N','G',' ')}, /* Tonga (Zambia) */ + {"to", HB_TAG('T','G','N',' ')}, /* Tonga (Tonga Islands) */ {"tr", HB_TAG('T','R','K',' ')}, /* Turkish */ + {"tru", HB_TAG('T','U','A',' ')}, /* Turoyo Aramaic */ {"ts", HB_TAG('T','S','G',' ')}, /* Tsonga */ {"tt", HB_TAG('T','A','T',' ')}, /* Tatar */ {"tw", HB_TAG('T','W','I',' ')}, /* Twi */ {"ty", HB_TAG('T','H','T',' ')}, /* Tahitian */ + {"tyv", HB_TAG('T','U','V',' ')}, /* Tuvin */ {"udm", HB_TAG('U','D','M',' ')}, /* Udmurt */ {"ug", HB_TAG('U','Y','G',' ')}, /* Uighur */ {"uk", HB_TAG('U','K','R',' ')}, /* Ukrainian */ + {"umb", HB_TAG('M','B','N',' ')}, /* [South] Mbundu */ {"unr", HB_TAG('M','U','N',' ')}, /* Mundari */ {"ur", HB_TAG('U','R','D',' ')}, /* Urdu */ {"uz", HB_TAG('U','Z','B',' ')}, /* Uzbek */ {"ve", HB_TAG('V','E','N',' ')}, /* Venda */ {"vi", HB_TAG('V','I','T',' ')}, /* Vietnamese */ + {"vmw", HB_TAG('M','A','K',' ')}, /* Makua */ {"wbm", HB_TAG('W','A',' ',' ')}, /* Wa */ {"wbr", HB_TAG('W','A','G',' ')}, /* Wagdi */ {"wo", HB_TAG('W','L','F',' ')}, /* Wolof */ @@ -462,115 +529,56 @@ static const LangTag ot_languages[] = { {"zne", HB_TAG('Z','N','D',' ')}, /* Zande */ {"zu", HB_TAG('Z','U','L',' ')} /* Zulu */ - /* I couldn't find the language id for these */ - -/*{"??", HB_TAG('A','G','W',' ')},*/ /* Agaw */ -/*{"??", HB_TAG('A','L','S',' ')},*/ /* Alsatian */ -/*{"??", HB_TAG('A','L','T',' ')},*/ /* Altai */ -/*{"??", HB_TAG('A','R','K',' ')},*/ /* Arakanese */ -/*{"??", HB_TAG('A','T','H',' ')},*/ /* Athapaskan */ -/*{"??", HB_TAG('B','A','G',' ')},*/ /* Baghelkhandi */ -/*{"??", HB_TAG('B','A','L',' ')},*/ /* Balkar */ -/*{"??", HB_TAG('B','A','U',' ')},*/ /* Baule */ -/*{"??", HB_TAG('B','B','R',' ')},*/ /* Berber */ + /* The corresponding languages IDs for the following IDs are unclear, + * overlap, or are architecturally weird. Needs more research. */ + +/*{"ahg/awn/xan?", HB_TAG('A','G','W',' ')},*/ /* Agaw */ +/*{"gsw?/gsw-FR?", HB_TAG('A','L','S',' ')},*/ /* Alsatian */ +/*{"krc", HB_TAG('B','A','L',' ')},*/ /* Balkar */ /*{"??", HB_TAG('B','C','R',' ')},*/ /* Bible Cree */ -/*{"??", HB_TAG('B','E','L',' ')},*/ /* Belarussian */ -/*{"??", HB_TAG('B','I','L',' ')},*/ /* Bilen */ -/*{"??", HB_TAG('B','K','F',' ')},*/ /* Blackfoot */ -/*{"??", HB_TAG('B','L','N',' ')},*/ /* Balante */ -/*{"??", HB_TAG('B','M','L',' ')},*/ /* Bamileke */ -/*{"??", HB_TAG('B','R','I',' ')},*/ /* Braj Bhasha */ -/*{"??", HB_TAG('C','H','G',' ')},*/ /* Chaha Gurage */ -/*{"??", HB_TAG('C','H','H',' ')},*/ /* Chattisgarhi */ -/*{"??", HB_TAG('C','H','K',' ')},*/ /* Chukchi */ -/*{"??", HB_TAG('D','J','R',' ')},*/ /* Djerma */ -/*{"??", HB_TAG('D','N','G',' ')},*/ /* Dangme */ -/*{"??", HB_TAG('E','C','R',' ')},*/ /* Eastern Cree */ -/*{"??", HB_TAG('F','A','N',' ')},*/ /* French Antillean */ -/*{"??", HB_TAG('F','L','E',' ')},*/ /* Flemish */ -/*{"??", HB_TAG('F','N','E',' ')},*/ /* Forest Nenets */ -/*{"??", HB_TAG('F','T','A',' ')},*/ /* Futa */ -/*{"??", HB_TAG('G','A','R',' ')},*/ /* Garshuni */ -/*{"??", HB_TAG('G','E','Z',' ')},*/ /* Ge'ez */ -/*{"??", HB_TAG('H','A','L',' ')},*/ /* Halam */ -/*{"??", HB_TAG('H','A','R',' ')},*/ /* Harauti */ -/*{"??", HB_TAG('H','A','W',' ')},*/ /* Hawaiin */ -/*{"??", HB_TAG('H','B','N',' ')},*/ /* Hammer-Banna */ -/*{"??", HB_TAG('H','M','A',' ')},*/ /* High Mari */ -/*{"??", HB_TAG('H','N','D',' ')},*/ /* Hindko */ -/*{"??", HB_TAG('I','J','O',' ')},*/ /* Ijo */ -/*{"??", HB_TAG('I','L','O',' ')},*/ /* Ilokano */ -/*{"??", HB_TAG('I','R','T',' ')},*/ /* Irish Traditional */ -/*{"??", HB_TAG('J','U','L',' ')},*/ /* Jula */ -/*{"??", HB_TAG('K','A','R',' ')},*/ /* Karachay */ -/*{"??", HB_TAG('K','E','B',' ')},*/ /* Kebena */ -/*{"??", HB_TAG('K','G','E',' ')},*/ /* Khutsuri Georgian */ -/*{"??", HB_TAG('K','H','A',' ')},*/ /* Khakass */ -/*{"??", HB_TAG('K','H','K',' ')},*/ /* Khanty-Kazim */ -/*{"??", HB_TAG('K','H','S',' ')},*/ /* Khanty-Shurishkar */ -/*{"??", HB_TAG('K','H','V',' ')},*/ /* Khanty-Vakhi */ -/*{"??", HB_TAG('K','I','S',' ')},*/ /* Kisii */ -/*{"??", HB_TAG('K','K','N',' ')},*/ /* Kokni */ -/*{"??", HB_TAG('K','M','S',' ')},*/ /* Komso */ -/*{"??", HB_TAG('K','O','D',' ')},*/ /* Kodagu */ -/*{"??", HB_TAG('K','O','H',' ')},*/ /* Korean Old Hangul */ -/*{"??", HB_TAG('K','O','N',' ')},*/ /* Kikongo */ -/*{"??", HB_TAG('K','R','K',' ')},*/ /* Karakalpak */ -/*{"??", HB_TAG('K','R','N',' ')},*/ /* Karen */ -/*{"??", HB_TAG('K','U','L',' ')},*/ /* Kulvi */ +/*{"sgw?", HB_TAG('C','H','G',' ')},*/ /* Chaha Gurage */ +/*{"acf/gcf?", HB_TAG('F','A','N',' ')},*/ /* French Antillean */ +/*{"vls/nl-be", HB_TAG('F','L','E',' ')},*/ /* Flemish */ +/*{"enf?/yrk?", HB_TAG('F','N','E',' ')},*/ /* Forest Nenets */ +/*{"fuf?", HB_TAG('F','T','A',' ')},*/ /* Futa */ +/*{"ar-Syrc?", HB_TAG('G','A','R',' ')},*/ /* Garshuni */ +/*{"cfm/rnl?", HB_TAG('H','A','L',' ')},*/ /* Halam */ +/*{"ga-Latg?/Latg?", HB_TAG('I','R','T',' ')},*/ /* Irish Traditional */ +/*{"krc", HB_TAG('K','A','R',' ')},*/ /* Karachay */ +/*{"alw?/ktb?", HB_TAG('K','E','B',' ')},*/ /* Kebena */ +/*{"Geok", HB_TAG('K','G','E',' ')},*/ /* Khutsuri Georgian */ +/*{"kca", HB_TAG('K','H','K',' ')},*/ /* Khanty-Kazim */ +/*{"kca", HB_TAG('K','H','S',' ')},*/ /* Khanty-Shurishkar */ +/*{"kca", HB_TAG('K','H','V',' ')},*/ /* Khanty-Vakhi */ +/*{"guz?/kqs?/kss?", HB_TAG('K','I','S',' ')},*/ /* Kisii */ +/*{"kfa/kfi?/kpb?/xua?/xuj?", HB_TAG('K','O','D',' ')},*/ /* Kodagu */ +/*{"okm?/oko?", HB_TAG('K','O','H',' ')},*/ /* Korean Old Hangul */ +/*{"kon?/ktu?/...", HB_TAG('K','O','N',' ')},*/ /* Kikongo */ +/*{"kfx?", HB_TAG('K','U','L',' ')},*/ /* Kulvi */ /*{"??", HB_TAG('L','A','H',' ')},*/ /* Lahuli */ -/*{"??", HB_TAG('L','A','M',' ')},*/ /* Lambani */ /*{"??", HB_TAG('L','C','R',' ')},*/ /* L-Cree */ -/*{"??", HB_TAG('L','E','Z',' ')},*/ /* Lezgi */ -/*{"??", HB_TAG('L','M','A',' ')},*/ /* Low Mari */ -/*{"??", HB_TAG('L','U','B',' ')},*/ /* Luba */ -/*{"??", HB_TAG('L','U','G',' ')},*/ /* Luganda */ -/*{"??", HB_TAG('L','U','H',' ')},*/ /* Luhya */ -/*{"??", HB_TAG('M','A','K',' ')},*/ /* Makua */ /*{"??", HB_TAG('M','A','L',' ')},*/ /* Malayalam Traditional */ -/*{"??", HB_TAG('M','B','N',' ')},*/ /* Mbundu */ -/*{"??", HB_TAG('M','I','Z',' ')},*/ /* Mizo */ -/*{"??", HB_TAG('M','L','N',' ')},*/ /* Malinke */ -/*{"??", HB_TAG('M','N','K',' ')},*/ /* Maninka */ +/*{"mnk?/mlq?/...", HB_TAG('M','L','N',' ')},*/ /* Malinke */ +/*{"man?/myq?/mku?/msc?/...", HB_TAG('M','N','K',' ')},*/ /* Maninka */ /*{"??", HB_TAG('M','O','R',' ')},*/ /* Moroccan */ -/*{"??", HB_TAG('N','A','G',' ')},*/ /* Naga-Assamese */ /*{"??", HB_TAG('N','C','R',' ')},*/ /* N-Cree */ -/*{"??", HB_TAG('N','D','B',' ')},*/ /* Ndebele */ -/*{"??", HB_TAG('N','G','R',' ')},*/ /* Nagari */ /*{"??", HB_TAG('N','H','C',' ')},*/ /* Norway House Cree */ -/*{"??", HB_TAG('N','K','L',' ')},*/ /* Nkole */ -/*{"??", HB_TAG('N','T','A',' ')},*/ /* Northern Tai */ -/*{"??", HB_TAG('O','C','R',' ')},*/ /* Oji-Cree */ -/*{"??", HB_TAG('P','A','A',' ')},*/ /* Palestinian Aramaic */ -/*{"??", HB_TAG('P','G','R',' ')},*/ /* Polytonic Greek */ -/*{"??", HB_TAG('P','L','G',' ')},*/ /* Palaung */ -/*{"??", HB_TAG('Q','I','N',' ')},*/ /* Chin */ -/*{"??", HB_TAG('R','B','U',' ')},*/ /* Russian Buriat */ +/*{"jpa?/sam?", HB_TAG('P','A','A',' ')},*/ /* Palestinian Aramaic */ +/*{"polyton", HB_TAG('P','G','R',' ')},*/ /* Polytonic Greek */ +/*{"??", HB_TAG('Q','I','N',' ')},*/ /* Asho Chin */ /*{"??", HB_TAG('R','C','R',' ')},*/ /* R-Cree */ -/*{"??", HB_TAG('R','M','S',' ')},*/ /* Rhaeto-Romanic */ -/*{"??", HB_TAG('R','U','A',' ')},*/ /* Ruanda */ -/*{"??", HB_TAG('S','A','Y',' ')},*/ /* Sayisi */ -/*{"??", HB_TAG('S','E','K',' ')},*/ /* Sekota */ -/*{"??", HB_TAG('S','I','G',' ')},*/ /* Silte Gurage */ -/*{"??", HB_TAG('S','L','A',' ')},*/ /* Slavey */ -/*{"??", HB_TAG('S','O','G',' ')},*/ /* Sodo Gurage */ -/*{"??", HB_TAG('S','O','T',' ')},*/ /* Sotho */ -/*{"??", HB_TAG('S','W','A',' ')},*/ /* Swadaya Aramaic */ -/*{"??", HB_TAG('S','W','Z',' ')},*/ /* Swazi */ -/*{"??", HB_TAG('S','X','T',' ')},*/ /* Sutu */ -/*{"??", HB_TAG('T','A','B',' ')},*/ /* Tabasaran */ +/*{"chp?", HB_TAG('S','A','Y',' ')},*/ /* Sayisi */ +/*{"xan?", HB_TAG('S','E','K',' ')},*/ /* Sekota */ +/*{"stv/wle?/xst?", HB_TAG('S','I','G',' ')},*/ /* Silte Gurage */ +/*{"ngo?", HB_TAG('S','X','T',' ')},*/ /* Sutu */ /*{"??", HB_TAG('T','C','R',' ')},*/ /* TH-Cree */ -/*{"??", HB_TAG('T','G','N',' ')},*/ /* Tongan */ -/*{"??", HB_TAG('T','M','N',' ')},*/ /* Temne */ -/*{"??", HB_TAG('T','N','E',' ')},*/ /* Tundra Nenets */ +/*{"tnz?/tog?/toi?", HB_TAG('T','N','G',' ')},*/ /* Tonga */ +/*{"enh?/yrk?", HB_TAG('T','N','E',' ')},*/ /* Tundra Nenets */ /*{"??", HB_TAG('T','O','D',' ')},*/ /* Todo */ -/*{"??", HB_TAG('T','U','A',' ')},*/ /* Turoyo Aramaic */ -/*{"??", HB_TAG('T','U','V',' ')},*/ /* Tuvin */ /*{"??", HB_TAG('W','C','R',' ')},*/ /* West-Cree */ -/*{"??", HB_TAG('X','B','D',' ')},*/ /* Tai Lue */ /*{"??", HB_TAG('Y','C','R',' ')},*/ /* Y-Cree */ /*{"??", HB_TAG('Y','I','C',' ')},*/ /* Yi Classic */ -/*{"??", HB_TAG('Y','I','M',' ')},*/ /* Yi Modern */ +/*{"ii?/Yiii?", HB_TAG('Y','I','M',' ')},*/ /* Yi Modern */ /*{"??", HB_TAG('Z','H','P',' ')},*/ /* Chinese Phonetic */ }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-tag.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-tag.h index 1bf12ab3c09..1bf12ab3c09 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-tag.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot-tag.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot.h index 80739063991..80739063991 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ot.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-private.hh index fc555d5a0a6..be0d505f7b5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-private.hh @@ -63,9 +63,9 @@ /* Void! */ -struct _void_t {}; -typedef const _void_t &void_t; -#define HB_VOID (* (const _void_t *) NULL) +struct _hb_void_t {}; +typedef const _hb_void_t &hb_void_t; +#define HB_VOID (* (const _hb_void_t *) NULL) /* Basics */ @@ -82,7 +82,7 @@ static inline Type MAX (const Type &a, const Type &b) { return a > b ? a : b; } #undef ARRAY_LENGTH template <typename Type, unsigned int n> -static inline unsigned int ARRAY_LENGTH (const Type (&a)[n]) { return n; } +static inline unsigned int ARRAY_LENGTH (const Type (&)[n]) { return n; } /* A const version, but does not detect erratically being called on pointers. */ #define ARRAY_LENGTH_CONST(__array) ((signed int) (sizeof (__array) / sizeof (__array[0]))) @@ -509,6 +509,10 @@ static inline uint32_t hb_uint32_swap (const uint32_t v) #define hb_be_uint32_get(v) (uint32_t) ((v[0] << 24) + (v[1] << 16) + (v[2] << 8) + v[3]) #define hb_be_uint32_eq(a,b) (a[0] == b[0] && a[1] == b[1] && a[2] == b[2] && a[3] == b[3]) +#define hb_be_uint24_put(v,V) HB_STMT_START { v[0] = (V>>16); v[1] = (V>>8); v[2] (V); } HB_STMT_END +#define hb_be_uint24_get(v) (uint32_t) ((v[0] << 16) + (v[1] << 8) + v[2]) +#define hb_be_uint24_eq(a,b) (a[0] == b[0] && a[1] == b[1] && a[2] == b[2]) + /* ASCII tag/character handling */ @@ -679,8 +683,8 @@ struct hb_printer_t<bool> { }; template <> -struct hb_printer_t<void_t> { - const char *print (void_t v) { return ""; } +struct hb_printer_t<hb_void_t> { + const char *print (hb_void_t) { return ""; } }; @@ -696,7 +700,7 @@ static inline void _hb_warn_no_return (bool returned) } } template <> -inline void _hb_warn_no_return<void_t> (bool returned) +inline void _hb_warn_no_return<hb_void_t> (bool returned HB_UNUSED) {} template <int max_level, typename ret_t> @@ -755,7 +759,7 @@ struct hb_auto_trace_t<0, ret_t> { const char *message HB_UNUSED, ...) {} - inline ret_t ret (ret_t v, unsigned int line = 0) { return v; } + inline ret_t ret (ret_t v, unsigned int line HB_UNUSED = 0) { return v; } }; #define TRACE_RETURN(RET) trace.ret (RET, __LINE__) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-set-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-set-private.hh index c736b69936c..5e30a7e3616 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-set-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-set-private.hh @@ -137,6 +137,7 @@ struct hb_set_t { hb_object_header_t header; ASSERT_POD (); + bool in_error; inline void init (void) { header.init (); @@ -145,6 +146,9 @@ struct hb_set_t inline void fini (void) { } inline void clear (void) { + if (unlikely (hb_object_is_inert (this))) + return; + in_error = false; memset (elts, 0, sizeof elts); } inline bool is_empty (void) const { @@ -155,23 +159,27 @@ struct hb_set_t } inline void add (hb_codepoint_t g) { + if (unlikely (in_error)) return; if (unlikely (g == SENTINEL)) return; if (unlikely (g > MAX_G)) return; elt (g) |= mask (g); } inline void add_range (hb_codepoint_t a, hb_codepoint_t b) { + if (unlikely (in_error)) return; /* TODO Speedup */ for (unsigned int i = a; i < b + 1; i++) add (i); } inline void del (hb_codepoint_t g) { + if (unlikely (in_error)) return; if (unlikely (g > MAX_G)) return; elt (g) &= ~mask (g); } inline void del_range (hb_codepoint_t a, hb_codepoint_t b) { + if (unlikely (in_error)) return; /* TODO Speedup */ for (unsigned int i = a; i < b + 1; i++) del (i); @@ -201,29 +209,40 @@ struct hb_set_t } inline void set (const hb_set_t *other) { + if (unlikely (in_error)) return; for (unsigned int i = 0; i < ELTS; i++) elts[i] = other->elts[i]; } inline void union_ (const hb_set_t *other) { + if (unlikely (in_error)) return; for (unsigned int i = 0; i < ELTS; i++) elts[i] |= other->elts[i]; } inline void intersect (const hb_set_t *other) { + if (unlikely (in_error)) return; for (unsigned int i = 0; i < ELTS; i++) elts[i] &= other->elts[i]; } inline void subtract (const hb_set_t *other) { + if (unlikely (in_error)) return; for (unsigned int i = 0; i < ELTS; i++) elts[i] &= ~other->elts[i]; } inline void symmetric_difference (const hb_set_t *other) { + if (unlikely (in_error)) return; for (unsigned int i = 0; i < ELTS; i++) elts[i] ^= other->elts[i]; } + inline void invert (void) + { + if (unlikely (in_error)) return; + for (unsigned int i = 0; i < ELTS; i++) + elts[i] = ~elts[i]; + } inline bool next (hb_codepoint_t *codepoint) const { if (unlikely (*codepoint == SENTINEL)) { diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-set.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-set.cc index 93f983aeb77..5f427a5d8e0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-set.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-set.cc @@ -49,6 +49,7 @@ hb_set_get_empty (void) { static const hb_set_t _hb_set_nil = { HB_OBJECT_HEADER_STATIC, + true, /* in_error */ {0} /* elts */ }; @@ -93,7 +94,7 @@ hb_set_get_user_data (hb_set_t *set, hb_bool_t hb_set_allocation_successful (const hb_set_t *set HB_UNUSED) { - return true; + return !set->in_error; } void @@ -187,6 +188,12 @@ hb_set_symmetric_difference (hb_set_t *set, set->symmetric_difference (other); } +void +hb_set_invert (hb_set_t *set) +{ + set->invert (); +} + unsigned int hb_set_get_population (const hb_set_t *set) { diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-set.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-set.h index ec3d119e1e3..291e24974e6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-set.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-set.h @@ -121,6 +121,9 @@ void hb_set_symmetric_difference (hb_set_t *set, const hb_set_t *other); +void +hb_set_invert (hb_set_t *set); + unsigned int hb_set_get_population (const hb_set_t *set); diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shape-plan-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shape-plan-private.hh index dd014e38d01..dd014e38d01 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shape-plan-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shape-plan-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shape-plan.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shape-plan.cc index 22a226f3a6c..22a226f3a6c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shape-plan.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shape-plan.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shape-plan.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shape-plan.h index 8f54552f90b..8f54552f90b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shape-plan.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shape-plan.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shape.cc index 389ce3e34b1..389ce3e34b1 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shape.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shape.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shape.h index 90a188d2a9c..10a35cb517e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shape.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shape.h @@ -52,7 +52,7 @@ hb_bool_t hb_feature_from_string (const char *str, int len, hb_feature_t *feature); -/* something like 128 bytes is more than enough. +/* Something like 128 bytes is more than enough. * nul-terminates. */ void hb_feature_to_string (hb_feature_t *feature, diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shaper-impl-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shaper-impl-private.hh index 7844081e95b..7844081e95b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shaper-impl-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shaper-impl-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shaper-list.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shaper-list.hh index b9c029e58f1..b9c029e58f1 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shaper-list.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shaper-list.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shaper-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shaper-private.hh index 9d30c1ea0c2..9d30c1ea0c2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shaper-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shaper-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shaper.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shaper.cc index 1c1aed9034a..1c1aed9034a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-shaper.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-shaper.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-tt-font.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-tt-font.cc index c503a404380..c503a404380 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-tt-font.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-tt-font.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ucdn.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ucdn.cc index 35063043fd6..61e6ad36229 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ucdn.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-ucdn.cc @@ -129,57 +129,60 @@ static const hb_script_t ucdn_script_translate[] = static hb_unicode_combining_class_t hb_ucdn_combining_class(hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, - void *user_data) + void *user_data HB_UNUSED) { return (hb_unicode_combining_class_t) ucdn_get_combining_class(unicode); } static unsigned int hb_ucdn_eastasian_width(hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, - void *user_data) + void *user_data HB_UNUSED) { int w = ucdn_get_east_asian_width(unicode); return (w == UCDN_EAST_ASIAN_F || w == UCDN_EAST_ASIAN_W) ? 2 : 1; } static hb_unicode_general_category_t -hb_ucdn_general_category(hb_unicode_funcs_t *ufuncs, - hb_codepoint_t unicode, void *user_data) +hb_ucdn_general_category(hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, + void *user_data HB_UNUSED) { return (hb_unicode_general_category_t)ucdn_get_general_category(unicode); } static hb_codepoint_t hb_ucdn_mirroring(hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, - void *user_data) + void *user_data HB_UNUSED) { return ucdn_mirror(unicode); } static hb_script_t hb_ucdn_script(hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, - void *user_data) + void *user_data HB_UNUSED) { return ucdn_script_translate[ucdn_get_script(unicode)]; } static hb_bool_t -hb_ucdn_compose(hb_unicode_funcs_t *ufuncs, hb_codepoint_t a, - hb_codepoint_t b, hb_codepoint_t *ab, void *user_data) +hb_ucdn_compose(hb_unicode_funcs_t *ufuncs, + hb_codepoint_t a, hb_codepoint_t b, hb_codepoint_t *ab, + void *user_data HB_UNUSED) { return ucdn_compose(ab, a, b); } static hb_bool_t -hb_ucdn_decompose(hb_unicode_funcs_t *ufuncs, hb_codepoint_t ab, - hb_codepoint_t *a, hb_codepoint_t *b, void *user_data) +hb_ucdn_decompose(hb_unicode_funcs_t *ufuncs, + hb_codepoint_t ab, hb_codepoint_t *a, hb_codepoint_t *b, + void *user_data HB_UNUSED) { return ucdn_decompose(ab, a, b); } static unsigned int -hb_ucdn_decompose_compatibility(hb_unicode_funcs_t *ufuncs, hb_codepoint_t u, - hb_codepoint_t *decomposed, void *user_data) +hb_ucdn_decompose_compatibility(hb_unicode_funcs_t *ufuncs, + hb_codepoint_t u, hb_codepoint_t *decomposed, + void *user_data HB_UNUSED) { return ucdn_compat_decompose(u, decomposed); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-unicode-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-unicode-private.hh index 7be4b04da6b..7be4b04da6b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-unicode-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-unicode-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-unicode.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-unicode.cc index 0a3907eec8c..0a3907eec8c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-unicode.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-unicode.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-unicode.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-unicode.h index 2e10d98a3b3..2e10d98a3b3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-unicode.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-unicode.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-uniscribe.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-uniscribe.cc index 18b88b2234f..2f01c28778f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-uniscribe.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-uniscribe.cc @@ -188,6 +188,22 @@ _hb_uniscribe_shaper_font_data_destroy (hb_uniscribe_shaper_font_data_t *data) free (data); } +LOGFONTW * +hb_uniscribe_font_get_logfontw (hb_font_t *font) +{ + if (unlikely (!hb_uniscribe_shaper_font_data_ensure (font))) return NULL; + hb_uniscribe_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); + return &font_data->log_font; +} + +HFONT +hb_uniscribe_font_get_hfont (hb_font_t *font) +{ + if (unlikely (!hb_uniscribe_shaper_font_data_ensure (font))) return NULL; + hb_uniscribe_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); + return font_data->hfont; +} + /* * shaper shape_plan data @@ -213,23 +229,6 @@ _hb_uniscribe_shaper_shape_plan_data_destroy (hb_uniscribe_shaper_shape_plan_dat * shaper */ -LOGFONTW * -hb_uniscribe_font_get_logfontw (hb_font_t *font) -{ - if (unlikely (!hb_uniscribe_shaper_font_data_ensure (font))) return NULL; - return NULL; - hb_uniscribe_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); - return &font_data->log_font; -} - -HFONT -hb_uniscribe_font_get_hfont (hb_font_t *font) -{ - if (unlikely (!hb_uniscribe_shaper_font_data_ensure (font))) return NULL; - hb_uniscribe_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); - return font_data->hfont; -} - hb_bool_t _hb_uniscribe_shape (hb_shape_plan_t *shape_plan, diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-uniscribe.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-uniscribe.h index 51887c8794b..51887c8794b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-uniscribe.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-uniscribe.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-utf-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-utf-private.hh index ae36ef864e6..b9a6519d28e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-utf-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-utf-private.hh @@ -176,7 +176,7 @@ hb_utf_strlen (const uint16_t *text) static inline const uint32_t * hb_utf_next (const uint32_t *text, - const uint32_t *end, + const uint32_t *end HB_UNUSED, hb_codepoint_t *unicode) { *unicode = *text++; @@ -185,7 +185,7 @@ hb_utf_next (const uint32_t *text, static inline const uint32_t * hb_utf_prev (const uint32_t *text, - const uint32_t *start, + const uint32_t *start HB_UNUSED, hb_codepoint_t *unicode) { *unicode = *--text; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-version.h.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-version.h.in index 43634f91ce8..43634f91ce8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-version.h.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-version.h.in diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-warning.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-warning.cc index 01adceac325..01adceac325 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-warning.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb-warning.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb.h index 52c479cc2e5..52c479cc2e5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/hb.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/main.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/main.cc index b362744e213..b362744e213 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/main.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/main.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/test-size-params.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/test-size-params.cc index a60aa10e1be..947b5669a14 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/test-size-params.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/test-size-params.cc @@ -84,15 +84,10 @@ main (int argc, char **argv) hb_blob_destroy (blob); blob = NULL; - uint16_t params[5]; - if (!hb_ot_layout_get_size_params (face, params)) - return 1; + unsigned int p[5]; + bool ret = hb_ot_layout_get_size_params (face, p, p+1, p+2, p+3, p+4); - for (unsigned int i = 0; i < 5; i++) { - if (i) printf (" "); - printf ("%u", params[i]); - } - printf ("\n"); + printf ("%g %u %u %g %g\n", p[0]/10., p[1], p[2], p[3]/10., p[4]/10.); - return 0; + return !ret; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/test-would-substitute.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/test-would-substitute.cc index 4731e265607..4731e265607 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/test-would-substitute.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/test-would-substitute.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/test.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/test.cc index 22108b86b7a..22108b86b7a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/test.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.10/src/test.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8-PATCHES/patch-03-VOID b/Build/source/libs/harfbuzz/harfbuzz-0.9.8-PATCHES/patch-03-VOID deleted file mode 100644 index 5472ee2dd69..00000000000 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8-PATCHES/patch-03-VOID +++ /dev/null @@ -1,57 +0,0 @@ - Replace VOID by HB_VOID because winnt.h wants to '#define VOID void' - -diff -ur harfbuzz-0.9.8.orig/src/hb-ot-layout-gsubgpos-private.hh harfbuzz-0.9.8/src/hb-ot-layout-gsubgpos-private.hh ---- harfbuzz-0.9.8.orig/src/hb-ot-layout-gsubgpos-private.hh 2012-12-04 21:43:38.000000000 +0100 -+++ harfbuzz-0.9.8/src/hb-ot-layout-gsubgpos-private.hh 2012-12-05 11:03:08.000000000 +0100 -@@ -60,8 +60,8 @@ - typedef void_t return_t; - typedef return_t (*recurse_func_t) (hb_closure_context_t *c, unsigned int lookup_index); - template <typename T> -- inline return_t process (const T &obj) { obj.closure (this); return VOID; } -- static return_t default_return_value (void) { return VOID; } -+ inline return_t process (const T &obj) { obj.closure (this); return HB_VOID; } -+ static return_t default_return_value (void) { return HB_VOID; } - bool stop_sublookup_iteration (const return_t r) const { return false; } - return_t recurse (unsigned int lookup_index) - { -@@ -71,7 +71,7 @@ - nesting_level_left--; - recurse_func (this, lookup_index); - nesting_level_left++; -- return VOID; -+ return HB_VOID; - } - - hb_face_t *face; -@@ -148,8 +148,8 @@ - typedef void_t return_t; - typedef return_t (*recurse_func_t) (hb_collect_glyphs_context_t *c, unsigned int lookup_index); - template <typename T> -- inline return_t process (const T &obj) { obj.collect_glyphs (this); return VOID; } -- static return_t default_return_value (void) { return VOID; } -+ inline return_t process (const T &obj) { obj.collect_glyphs (this); return HB_VOID; } -+ static return_t default_return_value (void) { return HB_VOID; } - bool stop_sublookup_iteration (const return_t r) const { return false; } - return_t recurse (unsigned int lookup_index) - { -@@ -161,7 +161,7 @@ - hb_collect_glyphs_context_t new_c (this->face, NULL, NULL, NULL, &output, nesting_level_left); - recurse_func (&new_c, lookup_index); - nesting_level_left++; -- return VOID; -+ return HB_VOID; - } - - hb_face_t *face; -diff -ur harfbuzz-0.9.8.orig/src/hb-private.hh harfbuzz-0.9.8/src/hb-private.hh ---- harfbuzz-0.9.8.orig/src/hb-private.hh 2012-12-04 21:43:38.000000000 +0100 -+++ harfbuzz-0.9.8/src/hb-private.hh 2012-12-05 11:03:12.000000000 +0100 -@@ -65,7 +65,7 @@ - /* Void! */ - struct _void_t; - typedef const _void_t &void_t; --#define VOID (* (const _void_t *) NULL) -+#define HB_VOID (* (const _void_t *) NULL) - - - /* Basics */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8-PATCHES/patch-04-MSV b/Build/source/libs/harfbuzz/harfbuzz-0.9.8-PATCHES/patch-04-MSV deleted file mode 100644 index 8951bbc738e..00000000000 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8-PATCHES/patch-04-MSV +++ /dev/null @@ -1,14 +0,0 @@ - Required for MS Visual Studio 2005. - -diff -ur harfbuzz-0.9.8.orig/src/hb-private.hh harfbuzz-0.9.8/src/hb-private.hh ---- harfbuzz-0.9.8.orig/src/hb-private.hh 2012-12-05 11:03:12.000000000 +0100 -+++ harfbuzz-0.9.8/src/hb-private.hh 2012-12-06 16:40:07.414531612 +0100 -@@ -63,7 +63,7 @@ - - - /* Void! */ --struct _void_t; -+struct _void_t {}; - typedef const _void_t &void_t; - #define HB_VOID (* (const _void_t *) NULL) - diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/git.mk b/Build/source/libs/harfbuzz/harfbuzz-0.9.8/git.mk deleted file mode 100644 index 4da8fe2ee37..00000000000 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/git.mk +++ /dev/null @@ -1,224 +0,0 @@ -# git.mk -# -# Copyright 2009, Red Hat, Inc. -# Copyright 2010,2011 Behdad Esfahbod -# Written by Behdad Esfahbod -# -# Copying and distribution of this file, with or without modification, -# is permitted in any medium without royalty provided the copyright -# notice and this notice are preserved. -# -# The canonical source for this file is https://github.com/behdad/git.mk. -# -# To use in your project, import this file in your git repo's toplevel, -# then do "make -f git.mk". This modifies all Makefile.am files in -# your project to -include git.mk. Remember to add that line to new -# Makefile.am files you create in your project, or just rerun the -# "make -f git.mk". -# -# This enables automatic .gitignore generation. If you need to ignore -# more files, add them to the GITIGNOREFILES variable in your Makefile.am. -# But think twice before doing that. If a file has to be in .gitignore, -# chances are very high that it's a generated file and should be in one -# of MOSTLYCLEANFILES, CLEANFILES, DISTCLEANFILES, or MAINTAINERCLEANFILES. -# -# The only case that you need to manually add a file to GITIGNOREFILES is -# when remove files in one of mostlyclean-local, clean-local, distclean-local, -# or maintainer-clean-local make targets. -# -# Note that for files like editor backup, etc, there are better places to -# ignore them. See "man gitignore". -# -# If "make maintainer-clean" removes the files but they are not recognized -# by this script (that is, if "git status" shows untracked files still), send -# me the output of "git status" as well as your Makefile.am and Makefile for -# the directories involved and I'll diagnose. -# -# For a list of toplevel files that should be in MAINTAINERCLEANFILES, see -# Makefile.am.sample in the git.mk git repo. -# -# Don't EXTRA_DIST this file. It is supposed to only live in git clones, -# not tarballs. It serves no useful purpose in tarballs and clutters the -# build dir. -# -# This file knows how to handle autoconf, automake, libtool, gtk-doc, -# gnome-doc-utils, yelp.m4, mallard, intltool, gsettings, dejagnu. -# -# This makefile provides the following targets: -# -# - all: "make all" will build all gitignore files. -# - gitignore: makes all gitignore files in the current dir and subdirs. -# - .gitignore: make gitignore file for the current dir. -# - gitignore-recurse: makes all gitignore files in the subdirs. -# -# KNOWN ISSUES: -# -# - Recursive configure doesn't work as $(top_srcdir)/git.mk inside the -# submodule doesn't find us. If you have configure.{in,ac} files in -# subdirs, add a proxy git.mk file in those dirs that simply does: -# "include $(top_srcdir)/../git.mk". Add more ..'s to your taste. -# And add those files to git. See vte/gnome-pty-helper/git.mk for -# example. -# - -git-all: git-mk-install - -git-mk-install: - @echo Installing git makefile - @any_failed=; \ - find "`test -z "$(top_srcdir)" && echo . || echo "$(top_srcdir)"`" -name Makefile.am | while read x; do \ - if grep 'include .*/git.mk' $$x >/dev/null; then \ - echo $$x already includes git.mk; \ - else \ - failed=; \ - echo "Updating $$x"; \ - { cat $$x; \ - echo ''; \ - echo '-include $$(top_srcdir)/git.mk'; \ - } > $$x.tmp || failed=1; \ - if test x$$failed = x; then \ - mv $$x.tmp $$x || failed=1; \ - fi; \ - if test x$$failed = x; then : else \ - echo Failed updating $$x; >&2 \ - any_failed=1; \ - fi; \ - fi; done; test -z "$$any_failed" - -.PHONY: git-all git-mk-install - - -### .gitignore generation - -$(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk - $(AM_V_GEN) \ - { \ - if test "x$(DOC_MODULE)" = x -o "x$(DOC_MAIN_SGML_FILE)" = x; then :; else \ - for x in \ - $(DOC_MODULE)-decl-list.txt \ - $(DOC_MODULE)-decl.txt \ - tmpl/$(DOC_MODULE)-unused.sgml \ - "tmpl/*.bak" \ - xml html \ - ; do echo /$$x; done; \ - fi; \ - if test "x$(DOC_MODULE)$(DOC_ID)" = x -o "x$(DOC_LINGUAS)" = x; then :; else \ - for lc in $(DOC_LINGUAS); do \ - for x in \ - $(if $(DOC_MODULE),$(DOC_MODULE).xml) \ - $(DOC_PAGES) \ - $(DOC_INCLUDES) \ - ; do echo /$$lc/$$x; done; \ - done; \ - for x in \ - $(_DOC_OMF_ALL) \ - $(_DOC_DSK_ALL) \ - $(_DOC_HTML_ALL) \ - $(_DOC_MOFILES) \ - $(DOC_H_FILE) \ - "*/.xml2po.mo" \ - "*/*.omf.out" \ - ; do echo /$$x; done; \ - fi; \ - if test "x$(HELP_ID)" = x -o "x$(HELP_LINGUAS)" = x; then :; else \ - for lc in $(HELP_LINGUAS); do \ - for x in \ - $(HELP_FILES) \ - "$$lc.stamp" \ - "$$lc.mo" \ - ; do echo /$$lc/$$x; done; \ - done; \ - fi; \ - if test "x$(gsettings_SCHEMAS)" = x; then :; else \ - for x in \ - $(gsettings_SCHEMAS:.xml=.valid) \ - $(gsettings__enum_file) \ - ; do echo /$$x; done; \ - fi; \ - if test -f $(srcdir)/po/Makefile.in.in; then \ - for x in \ - po/Makefile.in.in \ - po/Makefile.in \ - po/Makefile \ - po/POTFILES \ - po/stamp-it \ - po/.intltool-merge-cache \ - "po/*.gmo" \ - "po/*.mo" \ - po/$(GETTEXT_PACKAGE).pot \ - intltool-extract.in \ - intltool-merge.in \ - intltool-update.in \ - ; do echo /$$x; done; \ - fi; \ - if test -f $(srcdir)/configure; then \ - for x in \ - autom4te.cache \ - configure \ - config.h \ - stamp-h1 \ - libtool \ - config.lt \ - ; do echo /$$x; done; \ - fi; \ - if test "x$(DEJATOOL)" = x; then :; else \ - for x in \ - $(DEJATOOL) \ - ; do echo /$$x.sum; echo /$$x.log; done; \ - echo /site.exp; \ - fi; \ - for x in \ - .gitignore \ - $(GITIGNOREFILES) \ - $(CLEANFILES) \ - $(PROGRAMS) $(check_PROGRAMS) $(EXTRA_PROGRAMS) \ - $(LIBRARIES) $(check_LIBRARIES) $(EXTRA_LIBRARIES) \ - $(LTLIBRARIES) $(check_LTLIBRARIES) $(EXTRA_LTLIBRARIES) \ - so_locations \ - .libs _libs \ - $(MOSTLYCLEANFILES) \ - "*.$(OBJEXT)" \ - "*.lo" \ - $(DISTCLEANFILES) \ - $(am__CONFIG_DISTCLEAN_FILES) \ - $(CONFIG_CLEAN_FILES) \ - TAGS ID GTAGS GRTAGS GSYMS GPATH tags \ - "*.tab.c" \ - $(MAINTAINERCLEANFILES) \ - $(BUILT_SOURCES) \ - $(DEPDIR) \ - Makefile \ - Makefile.in \ - "*.orig" \ - "*.rej" \ - "*.bak" \ - "*~" \ - ".*.sw[nop]" \ - ".dirstamp" \ - ; do echo /$$x; done; \ - } | \ - sed "s@^/`echo "$(srcdir)" | sed 's/\(.\)/[\1]/g'`/@/@" | \ - sed 's@/[.]/@/@g' | \ - LC_ALL=C sort | uniq > $@.tmp && \ - mv $@.tmp $@; - -all: $(srcdir)/.gitignore gitignore-recurse-maybe -gitignore: $(srcdir)/.gitignore gitignore-recurse - -gitignore-recurse-maybe: - @for subdir in $(DIST_SUBDIRS); do \ - case " $(SUBDIRS) " in \ - *" $$subdir "*) :;; \ - *) test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) .gitignore gitignore-recurse-maybe || echo "Skipping $$subdir");; \ - esac; \ - done -gitignore-recurse: - @for subdir in $(DIST_SUBDIRS); do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) .gitignore gitignore-recurse || echo "Skipping $$subdir"); \ - done - -maintainer-clean: gitignore-clean -gitignore-clean: - -rm -f $(srcdir)/.gitignore - -.PHONY: gitignore-clean gitignore gitignore-recurse gitignore-recurse-maybe diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic-machine.hh deleted file mode 100644 index 1c0e7f224c1..00000000000 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.8/src/hb-ot-shape-complex-indic-machine.hh +++ /dev/null @@ -1,1322 +0,0 @@ - -#line 1 "../../src/hb-ot-shape-complex-indic-machine.rl" -/* - * Copyright © 2011,2012 Google, Inc. - * - * This is part of HarfBuzz, a text shaping library. - * - * Permission is hereby granted, without written agreement and without - * license or royalty fees, to use, copy, modify, and distribute this - * software and its documentation for any purpose, provided that the - * above copyright notice and the following two paragraphs appear in - * all copies of this software. - * - * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR - * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES - * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN - * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS - * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO - * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. - * - * Google Author(s): Behdad Esfahbod - */ - -#ifndef HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH -#define HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH - -#include "hb-private.hh" - - -#line 36 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" -static const unsigned char _indic_syllable_machine_trans_keys[] = { - 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, - 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, - 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, - 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, - 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, - 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, - 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, - 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, - 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, - 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, - 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, - 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, - 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, - 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, - 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, - 7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, - 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, - 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, - 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, - 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, - 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, - 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, - 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, - 4u, 14u, 6u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, - 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, - 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, - 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, - 1u, 16u, 3u, 14u, 3u, 14u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, - 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, - 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, - 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, - 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, - 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, - 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, - 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, - 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, - 1u, 16u, 1u, 16u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, - 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, - 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, - 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, - 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, - 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 1u, 16u, - 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, - 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, - 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, - 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 3u, 14u, 4u, 14u, 3u, 14u, - 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, - 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, - 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, - 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, - 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, - 6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, - 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, - 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, - 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, - 1u, 16u, 3u, 17u, 1u, 16u, 0 -}; - -static const char _indic_syllable_machine_key_spans[] = { - 16, 1, 3, 3, 1, 3, 3, 1, - 3, 3, 1, 3, 3, 1, 1, 1, - 1, 4, 1, 1, 4, 1, 1, 4, - 1, 1, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 16, 1, 3, 3, - 1, 3, 3, 1, 3, 3, 1, 3, - 3, 1, 1, 1, 1, 4, 1, 1, - 4, 1, 1, 4, 1, 1, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, - 16, 1, 3, 3, 1, 3, 3, 1, - 3, 3, 1, 3, 3, 1, 1, 1, - 1, 4, 1, 1, 4, 1, 1, 4, - 1, 1, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 16, 1, 3, 3, 1, - 3, 3, 1, 3, 3, 1, 3, 3, - 1, 1, 1, 1, 4, 1, 1, 4, - 1, 1, 4, 1, 1, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 16, - 15, 12, 11, 16, 15, 12, 11, 16, - 15, 12, 11, 16, 15, 12, 11, 16, - 15, 12, 11, 10, 7, 5, 1, 1, - 15, 7, 2, 7, 11, 12, 12, 11, - 10, 12, 11, 10, 12, 11, 10, 12, - 11, 9, 12, 11, 16, 12, 12, 16, - 16, 16, 16, 16, 12, 12, 16, 16, - 16, 16, 16, 12, 12, 16, 16, 16, - 16, 16, 12, 12, 16, 16, 16, 16, - 16, 12, 12, 12, 12, 11, 16, 15, - 12, 11, 16, 15, 12, 11, 16, 15, - 12, 11, 16, 15, 12, 11, 10, 7, - 5, 1, 1, 15, 7, 2, 7, 11, - 12, 12, 11, 10, 12, 11, 10, 12, - 11, 10, 12, 11, 9, 12, 16, 12, - 12, 16, 16, 16, 16, 16, 12, 12, - 16, 16, 16, 16, 16, 12, 12, 16, - 16, 16, 16, 16, 12, 12, 16, 16, - 16, 16, 11, 16, 12, 12, 11, 16, - 15, 12, 11, 16, 15, 12, 11, 16, - 15, 12, 11, 16, 15, 12, 11, 10, - 7, 5, 1, 1, 15, 7, 2, 7, - 11, 12, 12, 11, 10, 12, 11, 10, - 12, 11, 10, 12, 11, 9, 12, 16, - 12, 12, 16, 16, 16, 16, 16, 12, - 12, 16, 16, 16, 16, 16, 12, 12, - 16, 16, 16, 16, 16, 12, 12, 16, - 16, 16, 16, 16, 11, 12, 11, 12, - 12, 11, 16, 15, 12, 11, 16, 15, - 12, 11, 16, 15, 12, 11, 16, 15, - 12, 11, 10, 7, 5, 1, 1, 15, - 7, 2, 7, 11, 12, 12, 11, 10, - 12, 11, 10, 12, 11, 10, 12, 11, - 9, 12, 16, 12, 12, 16, 16, 16, - 16, 16, 12, 12, 16, 16, 16, 16, - 16, 12, 12, 16, 16, 16, 16, 16, - 12, 12, 16, 16, 16, 16, 16, 12, - 16, 15, 16 -}; - -static const short _indic_syllable_machine_index_offsets[] = { - 0, 17, 19, 23, 27, 29, 33, 37, - 39, 43, 47, 49, 53, 57, 59, 61, - 63, 65, 70, 72, 74, 79, 81, 83, - 88, 90, 92, 104, 116, 128, 140, 152, - 164, 176, 188, 200, 212, 229, 231, 235, - 239, 241, 245, 249, 251, 255, 259, 261, - 265, 269, 271, 273, 275, 277, 282, 284, - 286, 291, 293, 295, 300, 302, 304, 316, - 328, 340, 352, 364, 376, 388, 400, 412, - 424, 441, 443, 447, 451, 453, 457, 461, - 463, 467, 471, 473, 477, 481, 483, 485, - 487, 489, 494, 496, 498, 503, 505, 507, - 512, 514, 516, 528, 540, 552, 564, 576, - 588, 600, 612, 624, 641, 643, 647, 651, - 653, 657, 661, 663, 667, 671, 673, 677, - 681, 683, 685, 687, 689, 694, 696, 698, - 703, 705, 707, 712, 714, 716, 728, 740, - 752, 764, 776, 788, 800, 812, 824, 836, - 853, 869, 882, 894, 911, 927, 940, 952, - 969, 985, 998, 1010, 1027, 1043, 1056, 1068, - 1085, 1101, 1114, 1126, 1137, 1145, 1151, 1153, - 1155, 1171, 1179, 1182, 1190, 1202, 1215, 1228, - 1240, 1251, 1264, 1276, 1287, 1300, 1312, 1323, - 1336, 1348, 1358, 1371, 1383, 1400, 1413, 1426, - 1443, 1460, 1477, 1494, 1511, 1524, 1537, 1554, - 1571, 1588, 1605, 1622, 1635, 1648, 1665, 1682, - 1699, 1716, 1733, 1746, 1759, 1776, 1793, 1810, - 1827, 1844, 1857, 1870, 1883, 1896, 1908, 1925, - 1941, 1954, 1966, 1983, 1999, 2012, 2024, 2041, - 2057, 2070, 2082, 2099, 2115, 2128, 2140, 2151, - 2159, 2165, 2167, 2169, 2185, 2193, 2196, 2204, - 2216, 2229, 2242, 2254, 2265, 2278, 2290, 2301, - 2314, 2326, 2337, 2350, 2362, 2372, 2385, 2402, - 2415, 2428, 2445, 2462, 2479, 2496, 2513, 2526, - 2539, 2556, 2573, 2590, 2607, 2624, 2637, 2650, - 2667, 2684, 2701, 2718, 2735, 2748, 2761, 2778, - 2795, 2812, 2829, 2841, 2858, 2871, 2884, 2896, - 2913, 2929, 2942, 2954, 2971, 2987, 3000, 3012, - 3029, 3045, 3058, 3070, 3087, 3103, 3116, 3128, - 3139, 3147, 3153, 3155, 3157, 3173, 3181, 3184, - 3192, 3204, 3217, 3230, 3242, 3253, 3266, 3278, - 3289, 3302, 3314, 3325, 3338, 3350, 3360, 3373, - 3390, 3403, 3416, 3433, 3450, 3467, 3484, 3501, - 3514, 3527, 3544, 3561, 3578, 3595, 3612, 3625, - 3638, 3655, 3672, 3689, 3706, 3723, 3736, 3749, - 3766, 3783, 3800, 3817, 3834, 3846, 3859, 3871, - 3884, 3897, 3909, 3926, 3942, 3955, 3967, 3984, - 4000, 4013, 4025, 4042, 4058, 4071, 4083, 4100, - 4116, 4129, 4141, 4152, 4160, 4166, 4168, 4170, - 4186, 4194, 4197, 4205, 4217, 4230, 4243, 4255, - 4266, 4279, 4291, 4302, 4315, 4327, 4338, 4351, - 4363, 4373, 4386, 4403, 4416, 4429, 4446, 4463, - 4480, 4497, 4514, 4527, 4540, 4557, 4574, 4591, - 4608, 4625, 4638, 4651, 4668, 4685, 4702, 4719, - 4736, 4749, 4762, 4779, 4796, 4813, 4830, 4847, - 4860, 4877, 4893 -}; - -static const short _indic_syllable_machine_indicies[] = { - 1, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, - 0, 3, 0, 4, 4, 5, 0, 6, - 6, 5, 0, 5, 0, 7, 7, 8, - 0, 9, 9, 8, 0, 8, 0, 10, - 10, 11, 0, 12, 12, 11, 0, 11, - 0, 13, 13, 14, 0, 15, 15, 14, - 0, 14, 0, 16, 0, 17, 0, 18, - 0, 19, 13, 13, 14, 0, 20, 0, - 21, 0, 22, 10, 10, 11, 0, 23, - 0, 24, 0, 25, 7, 7, 8, 0, - 26, 0, 27, 0, 28, 4, 4, 5, - 0, 0, 0, 0, 0, 0, 28, 0, - 28, 4, 4, 5, 0, 0, 0, 0, - 0, 29, 28, 0, 30, 4, 4, 5, - 0, 0, 0, 0, 0, 0, 30, 0, - 30, 4, 4, 5, 0, 0, 0, 0, - 0, 31, 30, 0, 32, 4, 4, 5, - 0, 0, 0, 0, 0, 0, 32, 0, - 32, 4, 4, 5, 0, 0, 0, 0, - 0, 33, 32, 0, 34, 4, 4, 5, - 0, 0, 0, 0, 0, 0, 34, 0, - 34, 4, 4, 5, 0, 0, 0, 0, - 0, 35, 34, 0, 36, 4, 4, 5, - 0, 0, 0, 0, 0, 0, 36, 0, - 36, 4, 4, 5, 0, 0, 0, 0, - 0, 37, 36, 0, 39, 40, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 39, 38, 41, 38, 42, - 42, 43, 38, 44, 44, 43, 38, 43, - 38, 45, 45, 46, 38, 47, 47, 46, - 38, 46, 38, 48, 48, 49, 38, 50, - 50, 49, 38, 49, 38, 51, 51, 52, - 38, 53, 53, 52, 38, 52, 38, 54, - 38, 55, 38, 56, 38, 57, 51, 51, - 52, 38, 58, 38, 59, 38, 60, 48, - 48, 49, 38, 61, 38, 62, 38, 63, - 45, 45, 46, 38, 64, 38, 65, 38, - 66, 42, 42, 43, 38, 38, 38, 38, - 38, 38, 66, 38, 66, 42, 42, 43, - 38, 38, 38, 38, 38, 67, 66, 38, - 68, 42, 42, 43, 38, 38, 38, 38, - 38, 38, 68, 38, 68, 42, 42, 43, - 38, 38, 38, 38, 38, 69, 68, 38, - 70, 42, 42, 43, 38, 38, 38, 38, - 38, 38, 70, 38, 70, 42, 42, 43, - 38, 38, 38, 38, 38, 71, 70, 38, - 72, 42, 42, 43, 38, 38, 38, 38, - 38, 38, 72, 38, 72, 42, 42, 43, - 38, 38, 38, 38, 38, 73, 72, 38, - 74, 42, 42, 43, 38, 38, 38, 38, - 38, 38, 74, 38, 74, 42, 42, 43, - 38, 38, 38, 38, 38, 75, 74, 38, - 77, 78, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 77, - 76, 79, 76, 80, 80, 81, 76, 83, - 83, 81, 82, 81, 82, 84, 84, 85, - 76, 86, 86, 85, 76, 85, 76, 87, - 87, 88, 76, 89, 89, 88, 76, 88, - 76, 90, 90, 91, 76, 92, 92, 91, - 76, 91, 76, 93, 76, 94, 76, 95, - 76, 96, 90, 90, 91, 76, 97, 76, - 98, 76, 99, 87, 87, 88, 76, 100, - 76, 101, 76, 102, 84, 84, 85, 76, - 103, 76, 104, 76, 105, 80, 80, 81, - 76, 76, 76, 76, 76, 76, 105, 76, - 105, 80, 80, 81, 76, 76, 76, 76, - 76, 106, 105, 76, 107, 80, 80, 81, - 76, 76, 76, 76, 76, 76, 107, 76, - 107, 80, 80, 81, 76, 76, 76, 76, - 76, 108, 107, 76, 109, 80, 80, 81, - 76, 76, 76, 76, 76, 76, 109, 76, - 109, 80, 80, 81, 76, 76, 76, 76, - 76, 110, 109, 76, 111, 80, 80, 81, - 76, 76, 76, 76, 76, 76, 111, 76, - 111, 80, 80, 81, 76, 76, 76, 76, - 76, 112, 111, 76, 113, 80, 80, 81, - 76, 76, 76, 76, 76, 76, 113, 76, - 115, 116, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 115, - 114, 117, 114, 118, 118, 119, 114, 120, - 120, 119, 114, 119, 114, 121, 121, 122, - 114, 123, 123, 122, 114, 122, 114, 124, - 124, 125, 114, 126, 126, 125, 114, 125, - 114, 127, 127, 128, 114, 129, 129, 128, - 114, 128, 114, 130, 114, 131, 114, 132, - 114, 133, 127, 127, 128, 114, 134, 114, - 135, 114, 136, 124, 124, 125, 114, 137, - 114, 138, 114, 139, 121, 121, 122, 114, - 140, 114, 141, 114, 142, 118, 118, 119, - 114, 114, 114, 114, 114, 114, 142, 114, - 142, 118, 118, 119, 114, 114, 114, 114, - 114, 143, 142, 114, 144, 118, 118, 119, - 114, 114, 114, 114, 114, 114, 144, 114, - 144, 118, 118, 119, 114, 114, 114, 114, - 114, 145, 144, 114, 146, 118, 118, 119, - 114, 114, 114, 114, 114, 114, 146, 114, - 146, 118, 118, 119, 114, 114, 114, 114, - 114, 147, 146, 114, 148, 118, 118, 119, - 114, 114, 114, 114, 114, 114, 148, 114, - 148, 118, 118, 119, 114, 114, 114, 114, - 114, 149, 148, 114, 150, 118, 118, 119, - 114, 114, 114, 114, 114, 114, 150, 114, - 150, 118, 118, 119, 114, 114, 114, 114, - 114, 151, 150, 114, 153, 154, 155, 156, - 157, 158, 81, 159, 160, 152, 161, 161, - 162, 163, 164, 165, 152, 167, 168, 169, - 170, 5, 171, 172, 173, 166, 166, 37, - 174, 166, 166, 153, 166, 175, 168, 176, - 176, 5, 171, 172, 173, 166, 166, 166, - 174, 166, 168, 176, 176, 5, 171, 172, - 173, 166, 166, 166, 174, 166, 177, 166, - 166, 166, 18, 178, 166, 171, 172, 166, - 166, 166, 166, 179, 166, 177, 166, 180, - 181, 182, 183, 5, 171, 172, 173, 166, - 166, 35, 184, 166, 166, 177, 166, 185, - 181, 186, 186, 5, 171, 172, 173, 166, - 166, 166, 184, 166, 181, 186, 186, 5, - 171, 172, 173, 166, 166, 166, 184, 166, - 187, 166, 166, 166, 18, 188, 166, 171, - 172, 166, 166, 166, 166, 179, 166, 187, - 166, 189, 190, 191, 192, 5, 171, 172, - 173, 166, 166, 33, 193, 166, 166, 187, - 166, 194, 190, 195, 195, 5, 171, 172, - 173, 166, 166, 166, 193, 166, 190, 195, - 195, 5, 171, 172, 173, 166, 166, 166, - 193, 166, 196, 166, 166, 166, 18, 197, - 166, 171, 172, 166, 166, 166, 166, 179, - 166, 196, 166, 198, 199, 200, 201, 5, - 171, 172, 173, 166, 166, 31, 202, 166, - 166, 196, 166, 203, 199, 204, 204, 5, - 171, 172, 173, 166, 166, 166, 202, 166, - 199, 204, 204, 5, 171, 172, 173, 166, - 166, 166, 202, 166, 205, 166, 166, 166, - 18, 206, 166, 171, 172, 166, 166, 166, - 166, 179, 166, 205, 166, 207, 208, 209, - 210, 5, 171, 172, 173, 166, 166, 29, - 211, 166, 166, 205, 166, 212, 208, 213, - 213, 5, 171, 172, 173, 166, 166, 166, - 211, 166, 208, 213, 213, 5, 171, 172, - 173, 166, 166, 166, 211, 166, 18, 214, - 166, 171, 172, 166, 166, 166, 166, 179, - 166, 171, 172, 166, 166, 166, 166, 179, - 166, 215, 166, 166, 166, 172, 166, 172, - 166, 216, 166, 217, 166, 218, 219, 166, - 171, 172, 166, 166, 166, 3, 166, 166, - 166, 1, 166, 2, 166, 166, 166, 166, - 171, 172, 166, 171, 172, 166, 217, 166, - 166, 166, 166, 171, 172, 166, 217, 166, - 218, 166, 166, 171, 172, 166, 166, 166, - 3, 166, 18, 166, 220, 220, 5, 171, - 172, 166, 166, 166, 166, 179, 166, 221, - 27, 222, 223, 8, 171, 172, 166, 166, - 166, 166, 179, 166, 27, 222, 223, 8, - 171, 172, 166, 166, 166, 166, 179, 166, - 222, 222, 8, 171, 172, 166, 166, 166, - 166, 179, 166, 224, 24, 225, 226, 11, - 171, 172, 166, 166, 166, 166, 179, 166, - 24, 225, 226, 11, 171, 172, 166, 166, - 166, 166, 179, 166, 225, 225, 11, 171, - 172, 166, 166, 166, 166, 179, 166, 227, - 21, 228, 229, 14, 171, 172, 166, 166, - 166, 166, 179, 166, 21, 228, 229, 14, - 171, 172, 166, 166, 166, 166, 179, 166, - 228, 228, 14, 171, 172, 166, 166, 166, - 166, 179, 166, 230, 18, 166, 231, 166, - 171, 172, 166, 166, 166, 166, 179, 166, - 18, 166, 231, 166, 171, 172, 166, 166, - 166, 166, 179, 166, 232, 166, 171, 172, - 166, 166, 166, 166, 179, 166, 18, 166, - 166, 166, 166, 171, 172, 166, 166, 166, - 166, 179, 166, 208, 213, 213, 5, 171, - 172, 166, 166, 166, 166, 211, 166, 1, - 2, 166, 166, 18, 214, 166, 171, 172, - 166, 166, 166, 166, 179, 166, 1, 166, - 207, 208, 213, 213, 5, 171, 172, 173, - 166, 166, 166, 211, 166, 207, 208, 209, - 213, 5, 171, 172, 173, 166, 166, 29, - 211, 166, 205, 166, 233, 166, 220, 220, - 5, 171, 172, 166, 166, 166, 166, 179, - 166, 205, 166, 205, 166, 166, 166, 166, - 166, 166, 171, 172, 166, 166, 166, 166, - 179, 166, 205, 166, 205, 166, 166, 166, - 166, 234, 166, 171, 172, 166, 166, 166, - 166, 179, 166, 205, 166, 205, 166, 233, - 166, 166, 166, 166, 171, 172, 166, 166, - 166, 166, 179, 166, 205, 166, 205, 2, - 166, 166, 18, 206, 166, 171, 172, 166, - 166, 166, 166, 179, 166, 205, 166, 198, - 199, 204, 204, 5, 171, 172, 173, 166, - 166, 166, 202, 166, 198, 199, 200, 204, - 5, 171, 172, 173, 166, 166, 31, 202, - 166, 196, 166, 235, 166, 220, 220, 5, - 171, 172, 166, 166, 166, 166, 179, 166, - 196, 166, 196, 166, 166, 166, 166, 166, - 166, 171, 172, 166, 166, 166, 166, 179, - 166, 196, 166, 196, 166, 166, 166, 166, - 236, 166, 171, 172, 166, 166, 166, 166, - 179, 166, 196, 166, 196, 166, 235, 166, - 166, 166, 166, 171, 172, 166, 166, 166, - 166, 179, 166, 196, 166, 196, 2, 166, - 166, 18, 197, 166, 171, 172, 166, 166, - 166, 166, 179, 166, 196, 166, 189, 190, - 195, 195, 5, 171, 172, 173, 166, 166, - 166, 193, 166, 189, 190, 191, 195, 5, - 171, 172, 173, 166, 166, 33, 193, 166, - 187, 166, 237, 166, 220, 220, 5, 171, - 172, 166, 166, 166, 166, 179, 166, 187, - 166, 187, 166, 166, 166, 166, 166, 166, - 171, 172, 166, 166, 166, 166, 179, 166, - 187, 166, 187, 166, 166, 166, 166, 238, - 166, 171, 172, 166, 166, 166, 166, 179, - 166, 187, 166, 187, 166, 237, 166, 166, - 166, 166, 171, 172, 166, 166, 166, 166, - 179, 166, 187, 166, 187, 2, 166, 166, - 18, 188, 166, 171, 172, 166, 166, 166, - 166, 179, 166, 187, 166, 180, 181, 186, - 186, 5, 171, 172, 173, 166, 166, 166, - 184, 166, 180, 181, 182, 186, 5, 171, - 172, 173, 166, 166, 35, 184, 166, 177, - 166, 239, 166, 220, 220, 5, 171, 172, - 166, 166, 166, 166, 179, 166, 177, 166, - 177, 166, 166, 166, 166, 166, 166, 171, - 172, 166, 166, 166, 166, 179, 166, 177, - 166, 177, 166, 166, 166, 166, 240, 166, - 171, 172, 166, 166, 166, 166, 179, 166, - 177, 166, 177, 166, 239, 166, 166, 166, - 166, 171, 172, 166, 166, 166, 166, 179, - 166, 177, 166, 177, 2, 166, 166, 18, - 178, 166, 171, 172, 166, 166, 166, 166, - 179, 166, 177, 166, 167, 168, 176, 176, - 5, 171, 172, 173, 166, 166, 166, 174, - 166, 167, 168, 169, 176, 5, 171, 172, - 173, 166, 166, 37, 174, 166, 242, 243, - 244, 245, 43, 246, 247, 241, 241, 241, - 75, 248, 241, 249, 243, 250, 245, 43, - 246, 247, 241, 241, 241, 241, 248, 241, - 243, 250, 245, 43, 246, 247, 241, 241, - 241, 241, 248, 241, 251, 241, 241, 241, - 56, 252, 241, 246, 247, 241, 241, 241, - 241, 253, 241, 251, 241, 254, 255, 256, - 257, 43, 246, 247, 241, 241, 241, 73, - 258, 241, 241, 251, 241, 259, 255, 260, - 260, 43, 246, 247, 241, 241, 241, 241, - 258, 241, 255, 260, 260, 43, 246, 247, - 241, 241, 241, 241, 258, 241, 261, 241, - 241, 241, 56, 262, 241, 246, 247, 241, - 241, 241, 241, 253, 241, 261, 241, 263, - 264, 265, 266, 43, 246, 247, 241, 241, - 241, 71, 267, 241, 241, 261, 241, 268, - 264, 269, 269, 43, 246, 247, 241, 241, - 241, 241, 267, 241, 264, 269, 269, 43, - 246, 247, 241, 241, 241, 241, 267, 241, - 270, 241, 241, 241, 56, 271, 241, 246, - 247, 241, 241, 241, 241, 253, 241, 270, - 241, 272, 273, 274, 275, 43, 246, 247, - 241, 241, 241, 69, 276, 241, 241, 270, - 241, 277, 273, 278, 278, 43, 246, 247, - 241, 241, 241, 241, 276, 241, 273, 278, - 278, 43, 246, 247, 241, 241, 241, 241, - 276, 241, 279, 241, 241, 241, 56, 280, - 241, 246, 247, 241, 241, 241, 241, 253, - 241, 279, 241, 281, 282, 283, 284, 43, - 246, 247, 241, 241, 241, 67, 285, 241, - 241, 279, 241, 286, 282, 287, 287, 43, - 246, 247, 241, 241, 241, 241, 285, 241, - 282, 287, 287, 43, 246, 247, 241, 241, - 241, 241, 285, 241, 56, 288, 241, 246, - 247, 241, 241, 241, 241, 253, 241, 246, - 247, 241, 241, 241, 241, 253, 241, 289, - 241, 241, 241, 247, 241, 247, 241, 290, - 241, 291, 241, 292, 293, 241, 246, 247, - 241, 241, 241, 41, 241, 241, 241, 39, - 241, 40, 241, 241, 241, 241, 246, 247, - 241, 246, 247, 241, 291, 241, 241, 241, - 241, 246, 247, 241, 291, 241, 292, 241, - 241, 246, 247, 241, 241, 241, 41, 241, - 56, 241, 294, 294, 43, 246, 247, 241, - 241, 241, 241, 253, 241, 295, 65, 296, - 297, 46, 246, 247, 241, 241, 241, 241, - 253, 241, 65, 296, 297, 46, 246, 247, - 241, 241, 241, 241, 253, 241, 296, 296, - 46, 246, 247, 241, 241, 241, 241, 253, - 241, 298, 62, 299, 300, 49, 246, 247, - 241, 241, 241, 241, 253, 241, 62, 299, - 300, 49, 246, 247, 241, 241, 241, 241, - 253, 241, 299, 299, 49, 246, 247, 241, - 241, 241, 241, 253, 241, 301, 59, 302, - 303, 52, 246, 247, 241, 241, 241, 241, - 253, 241, 59, 302, 303, 52, 246, 247, - 241, 241, 241, 241, 253, 241, 302, 302, - 52, 246, 247, 241, 241, 241, 241, 253, - 241, 304, 56, 241, 305, 241, 246, 247, - 241, 241, 241, 241, 253, 241, 56, 241, - 305, 241, 246, 247, 241, 241, 241, 241, - 253, 241, 306, 241, 246, 247, 241, 241, - 241, 241, 253, 241, 56, 241, 241, 241, - 241, 246, 247, 241, 241, 241, 241, 253, - 241, 39, 40, 241, 241, 56, 288, 241, - 246, 247, 241, 241, 241, 241, 253, 241, - 39, 241, 281, 282, 287, 287, 43, 246, - 247, 241, 241, 241, 241, 285, 241, 281, - 282, 283, 287, 43, 246, 247, 241, 241, - 241, 67, 285, 241, 279, 241, 307, 241, - 294, 294, 43, 246, 247, 241, 241, 241, - 241, 253, 241, 279, 241, 279, 241, 241, - 241, 241, 241, 241, 246, 247, 241, 241, - 241, 241, 253, 241, 279, 241, 279, 241, - 241, 241, 241, 308, 241, 246, 247, 241, - 241, 241, 241, 253, 241, 279, 241, 279, - 241, 307, 241, 241, 241, 241, 246, 247, - 241, 241, 241, 241, 253, 241, 279, 241, - 279, 40, 241, 241, 56, 280, 241, 246, - 247, 241, 241, 241, 241, 253, 241, 279, - 241, 272, 273, 278, 278, 43, 246, 247, - 241, 241, 241, 241, 276, 241, 272, 273, - 274, 278, 43, 246, 247, 241, 241, 241, - 69, 276, 241, 270, 241, 309, 241, 294, - 294, 43, 246, 247, 241, 241, 241, 241, - 253, 241, 270, 241, 270, 241, 241, 241, - 241, 241, 241, 246, 247, 241, 241, 241, - 241, 253, 241, 270, 241, 270, 241, 241, - 241, 241, 310, 241, 246, 247, 241, 241, - 241, 241, 253, 241, 270, 241, 270, 241, - 309, 241, 241, 241, 241, 246, 247, 241, - 241, 241, 241, 253, 241, 270, 241, 270, - 40, 241, 241, 56, 271, 241, 246, 247, - 241, 241, 241, 241, 253, 241, 270, 241, - 263, 264, 269, 269, 43, 246, 247, 241, - 241, 241, 241, 267, 241, 263, 264, 265, - 269, 43, 246, 247, 241, 241, 241, 71, - 267, 241, 261, 241, 311, 241, 294, 294, - 43, 246, 247, 241, 241, 241, 241, 253, - 241, 261, 241, 261, 241, 241, 241, 241, - 241, 241, 246, 247, 241, 241, 241, 241, - 253, 241, 261, 241, 261, 241, 241, 241, - 241, 312, 241, 246, 247, 241, 241, 241, - 241, 253, 241, 261, 241, 261, 241, 311, - 241, 241, 241, 241, 246, 247, 241, 241, - 241, 241, 253, 241, 261, 241, 261, 40, - 241, 241, 56, 262, 241, 246, 247, 241, - 241, 241, 241, 253, 241, 261, 241, 254, - 255, 260, 260, 43, 246, 247, 241, 241, - 241, 241, 258, 241, 254, 255, 256, 260, - 43, 246, 247, 241, 241, 241, 73, 258, - 241, 251, 241, 313, 241, 294, 294, 43, - 246, 247, 241, 241, 241, 241, 253, 241, - 251, 241, 251, 241, 241, 241, 241, 241, - 241, 246, 247, 241, 241, 241, 241, 253, - 241, 251, 241, 251, 241, 241, 241, 241, - 314, 241, 246, 247, 241, 241, 241, 241, - 253, 241, 251, 241, 251, 241, 313, 241, - 241, 241, 241, 246, 247, 241, 241, 241, - 241, 253, 241, 251, 241, 74, 42, 42, - 43, 241, 241, 241, 241, 241, 241, 74, - 241, 251, 40, 241, 241, 56, 252, 241, - 246, 247, 241, 241, 241, 241, 253, 241, - 251, 241, 242, 243, 250, 245, 43, 246, - 247, 241, 241, 241, 241, 248, 241, 316, - 156, 317, 317, 81, 159, 160, 315, 315, - 315, 315, 163, 315, 156, 317, 317, 81, - 159, 160, 315, 315, 315, 315, 163, 315, - 318, 315, 315, 315, 95, 319, 315, 159, - 160, 315, 315, 315, 315, 320, 315, 318, - 315, 321, 322, 323, 324, 81, 159, 160, - 315, 315, 315, 112, 325, 315, 315, 318, - 315, 326, 322, 327, 327, 81, 159, 160, - 315, 315, 315, 315, 325, 315, 322, 327, - 327, 81, 159, 160, 315, 315, 315, 315, - 325, 315, 328, 315, 315, 315, 95, 329, - 315, 159, 160, 315, 315, 315, 315, 320, - 315, 328, 315, 330, 331, 332, 333, 81, - 159, 160, 315, 315, 315, 110, 334, 315, - 315, 328, 315, 335, 331, 336, 336, 81, - 159, 160, 315, 315, 315, 315, 334, 315, - 331, 336, 336, 81, 159, 160, 315, 315, - 315, 315, 334, 315, 337, 315, 315, 315, - 95, 338, 315, 159, 160, 315, 315, 315, - 315, 320, 315, 337, 315, 339, 340, 341, - 342, 81, 159, 160, 315, 315, 315, 108, - 343, 315, 315, 337, 315, 344, 340, 345, - 345, 81, 159, 160, 315, 315, 315, 315, - 343, 315, 340, 345, 345, 81, 159, 160, - 315, 315, 315, 315, 343, 315, 346, 315, - 315, 315, 95, 347, 315, 159, 160, 315, - 315, 315, 315, 320, 315, 346, 315, 348, - 349, 350, 351, 81, 159, 160, 315, 315, - 315, 106, 352, 315, 315, 346, 315, 353, - 349, 354, 354, 81, 159, 160, 315, 315, - 315, 315, 352, 315, 349, 354, 354, 81, - 159, 160, 315, 315, 315, 315, 352, 315, - 95, 355, 315, 159, 160, 315, 315, 315, - 315, 320, 315, 159, 160, 315, 315, 315, - 315, 320, 315, 356, 315, 315, 315, 160, - 315, 160, 315, 357, 315, 358, 315, 359, - 360, 315, 159, 160, 315, 315, 315, 79, - 315, 315, 315, 77, 315, 78, 315, 315, - 315, 315, 159, 160, 315, 159, 160, 315, - 358, 315, 315, 315, 315, 159, 160, 315, - 358, 315, 359, 315, 315, 159, 160, 315, - 315, 315, 79, 315, 95, 315, 361, 361, - 81, 159, 160, 315, 315, 315, 315, 320, - 315, 362, 104, 363, 364, 85, 159, 160, - 315, 315, 315, 315, 320, 315, 104, 363, - 364, 85, 159, 160, 315, 315, 315, 315, - 320, 315, 363, 363, 85, 159, 160, 315, - 315, 315, 315, 320, 315, 365, 101, 366, - 367, 88, 159, 160, 315, 315, 315, 315, - 320, 315, 101, 366, 367, 88, 159, 160, - 315, 315, 315, 315, 320, 315, 366, 366, - 88, 159, 160, 315, 315, 315, 315, 320, - 315, 368, 98, 369, 370, 91, 159, 160, - 315, 315, 315, 315, 320, 315, 98, 369, - 370, 91, 159, 160, 315, 315, 315, 315, - 320, 315, 369, 369, 91, 159, 160, 315, - 315, 315, 315, 320, 315, 371, 95, 315, - 372, 315, 159, 160, 315, 315, 315, 315, - 320, 315, 95, 315, 372, 315, 159, 160, - 315, 315, 315, 315, 320, 315, 373, 315, - 159, 160, 315, 315, 315, 315, 320, 315, - 95, 315, 315, 315, 315, 159, 160, 315, - 315, 315, 315, 320, 315, 77, 78, 315, - 315, 95, 355, 315, 159, 160, 315, 315, - 315, 315, 320, 315, 77, 315, 348, 349, - 354, 354, 81, 159, 160, 315, 315, 315, - 315, 352, 315, 348, 349, 350, 354, 81, - 159, 160, 315, 315, 315, 106, 352, 315, - 346, 315, 374, 315, 361, 361, 81, 159, - 160, 315, 315, 315, 315, 320, 315, 346, - 315, 346, 315, 315, 315, 315, 315, 315, - 159, 160, 315, 315, 315, 315, 320, 315, - 346, 315, 346, 315, 315, 315, 315, 375, - 315, 159, 160, 315, 315, 315, 315, 320, - 315, 346, 315, 346, 315, 374, 315, 315, - 315, 315, 159, 160, 315, 315, 315, 315, - 320, 315, 346, 315, 346, 78, 315, 315, - 95, 347, 315, 159, 160, 315, 315, 315, - 315, 320, 315, 346, 315, 339, 340, 345, - 345, 81, 159, 160, 315, 315, 315, 315, - 343, 315, 339, 340, 341, 345, 81, 159, - 160, 315, 315, 315, 108, 343, 315, 337, - 315, 376, 315, 361, 361, 81, 159, 160, - 315, 315, 315, 315, 320, 315, 337, 315, - 337, 315, 315, 315, 315, 315, 315, 159, - 160, 315, 315, 315, 315, 320, 315, 337, - 315, 337, 315, 315, 315, 315, 377, 315, - 159, 160, 315, 315, 315, 315, 320, 315, - 337, 315, 337, 315, 376, 315, 315, 315, - 315, 159, 160, 315, 315, 315, 315, 320, - 315, 337, 315, 337, 78, 315, 315, 95, - 338, 315, 159, 160, 315, 315, 315, 315, - 320, 315, 337, 315, 330, 331, 336, 336, - 81, 159, 160, 315, 315, 315, 315, 334, - 315, 330, 331, 332, 336, 81, 159, 160, - 315, 315, 315, 110, 334, 315, 328, 315, - 378, 315, 361, 361, 81, 159, 160, 315, - 315, 315, 315, 320, 315, 328, 315, 328, - 315, 315, 315, 315, 315, 315, 159, 160, - 315, 315, 315, 315, 320, 315, 328, 315, - 328, 315, 315, 315, 315, 379, 315, 159, - 160, 315, 315, 315, 315, 320, 315, 328, - 315, 328, 315, 378, 315, 315, 315, 315, - 159, 160, 315, 315, 315, 315, 320, 315, - 328, 315, 328, 78, 315, 315, 95, 329, - 315, 159, 160, 315, 315, 315, 315, 320, - 315, 328, 315, 321, 322, 327, 327, 81, - 159, 160, 315, 315, 315, 315, 325, 315, - 321, 322, 323, 327, 81, 159, 160, 315, - 315, 315, 112, 325, 315, 318, 315, 380, - 315, 361, 361, 81, 159, 160, 315, 315, - 315, 315, 320, 315, 318, 315, 318, 315, - 315, 315, 315, 315, 315, 159, 160, 315, - 315, 315, 315, 320, 315, 318, 315, 318, - 315, 315, 315, 315, 381, 315, 159, 160, - 315, 315, 315, 315, 320, 315, 318, 315, - 318, 315, 380, 315, 315, 315, 315, 159, - 160, 315, 315, 315, 315, 320, 315, 318, - 315, 318, 78, 315, 315, 95, 319, 315, - 159, 160, 315, 315, 315, 315, 320, 315, - 318, 315, 113, 80, 80, 81, 382, 382, - 382, 382, 382, 162, 113, 382, 155, 156, - 317, 317, 81, 159, 160, 315, 315, 315, - 315, 163, 315, 113, 80, 80, 81, 382, - 382, 382, 382, 382, 382, 113, 382, 384, - 385, 386, 387, 119, 388, 389, 383, 383, - 383, 151, 390, 383, 391, 385, 387, 387, - 119, 388, 389, 383, 383, 383, 383, 390, - 383, 385, 387, 387, 119, 388, 389, 383, - 383, 383, 383, 390, 383, 392, 383, 383, - 383, 132, 393, 383, 388, 389, 383, 383, - 383, 383, 394, 383, 392, 383, 395, 396, - 397, 398, 119, 388, 389, 383, 383, 383, - 149, 399, 383, 383, 392, 383, 400, 396, - 401, 401, 119, 388, 389, 383, 383, 383, - 383, 399, 383, 396, 401, 401, 119, 388, - 389, 383, 383, 383, 383, 399, 383, 402, - 383, 383, 383, 132, 403, 383, 388, 389, - 383, 383, 383, 383, 394, 383, 402, 383, - 404, 405, 406, 407, 119, 388, 389, 383, - 383, 383, 147, 408, 383, 383, 402, 383, - 409, 405, 410, 410, 119, 388, 389, 383, - 383, 383, 383, 408, 383, 405, 410, 410, - 119, 388, 389, 383, 383, 383, 383, 408, - 383, 411, 383, 383, 383, 132, 412, 383, - 388, 389, 383, 383, 383, 383, 394, 383, - 411, 383, 413, 414, 415, 416, 119, 388, - 389, 383, 383, 383, 145, 417, 383, 383, - 411, 383, 418, 414, 419, 419, 119, 388, - 389, 383, 383, 383, 383, 417, 383, 414, - 419, 419, 119, 388, 389, 383, 383, 383, - 383, 417, 383, 420, 383, 383, 383, 132, - 421, 383, 388, 389, 383, 383, 383, 383, - 394, 383, 420, 383, 422, 423, 424, 425, - 119, 388, 389, 383, 383, 383, 143, 426, - 383, 383, 420, 383, 427, 423, 428, 428, - 119, 388, 389, 383, 383, 383, 383, 426, - 383, 423, 428, 428, 119, 388, 389, 383, - 383, 383, 383, 426, 383, 132, 429, 383, - 388, 389, 383, 383, 383, 383, 394, 383, - 388, 389, 383, 383, 383, 383, 394, 383, - 430, 383, 383, 383, 389, 383, 389, 383, - 431, 383, 432, 383, 433, 434, 383, 388, - 389, 383, 383, 383, 117, 383, 383, 383, - 115, 383, 116, 383, 383, 383, 383, 388, - 389, 383, 388, 389, 383, 432, 383, 383, - 383, 383, 388, 389, 383, 432, 383, 433, - 383, 383, 388, 389, 383, 383, 383, 117, - 383, 132, 383, 435, 435, 119, 388, 389, - 383, 383, 383, 383, 394, 383, 436, 141, - 437, 438, 122, 388, 389, 383, 383, 383, - 383, 394, 383, 141, 437, 438, 122, 388, - 389, 383, 383, 383, 383, 394, 383, 437, - 437, 122, 388, 389, 383, 383, 383, 383, - 394, 383, 439, 138, 440, 441, 125, 388, - 389, 383, 383, 383, 383, 394, 383, 138, - 440, 441, 125, 388, 389, 383, 383, 383, - 383, 394, 383, 440, 440, 125, 388, 389, - 383, 383, 383, 383, 394, 383, 442, 135, - 443, 444, 128, 388, 389, 383, 383, 383, - 383, 394, 383, 135, 443, 444, 128, 388, - 389, 383, 383, 383, 383, 394, 383, 443, - 443, 128, 388, 389, 383, 383, 383, 383, - 394, 383, 445, 132, 383, 446, 383, 388, - 389, 383, 383, 383, 383, 394, 383, 132, - 383, 446, 383, 388, 389, 383, 383, 383, - 383, 394, 383, 447, 383, 388, 389, 383, - 383, 383, 383, 394, 383, 132, 383, 383, - 383, 383, 388, 389, 383, 383, 383, 383, - 394, 383, 115, 116, 383, 383, 132, 429, - 383, 388, 389, 383, 383, 383, 383, 394, - 383, 115, 383, 422, 423, 428, 428, 119, - 388, 389, 383, 383, 383, 383, 426, 383, - 422, 423, 424, 428, 119, 388, 389, 383, - 383, 383, 143, 426, 383, 420, 383, 448, - 383, 435, 435, 119, 388, 389, 383, 383, - 383, 383, 394, 383, 420, 383, 420, 383, - 383, 383, 383, 383, 383, 388, 389, 383, - 383, 383, 383, 394, 383, 420, 383, 420, - 383, 383, 383, 383, 449, 383, 388, 389, - 383, 383, 383, 383, 394, 383, 420, 383, - 420, 383, 448, 383, 383, 383, 383, 388, - 389, 383, 383, 383, 383, 394, 383, 420, - 383, 420, 116, 383, 383, 132, 421, 383, - 388, 389, 383, 383, 383, 383, 394, 383, - 420, 383, 413, 414, 419, 419, 119, 388, - 389, 383, 383, 383, 383, 417, 383, 413, - 414, 415, 419, 119, 388, 389, 383, 383, - 383, 145, 417, 383, 411, 383, 450, 383, - 435, 435, 119, 388, 389, 383, 383, 383, - 383, 394, 383, 411, 383, 411, 383, 383, - 383, 383, 383, 383, 388, 389, 383, 383, - 383, 383, 394, 383, 411, 383, 411, 383, - 383, 383, 383, 451, 383, 388, 389, 383, - 383, 383, 383, 394, 383, 411, 383, 411, - 383, 450, 383, 383, 383, 383, 388, 389, - 383, 383, 383, 383, 394, 383, 411, 383, - 411, 116, 383, 383, 132, 412, 383, 388, - 389, 383, 383, 383, 383, 394, 383, 411, - 383, 404, 405, 410, 410, 119, 388, 389, - 383, 383, 383, 383, 408, 383, 404, 405, - 406, 410, 119, 388, 389, 383, 383, 383, - 147, 408, 383, 402, 383, 452, 383, 435, - 435, 119, 388, 389, 383, 383, 383, 383, - 394, 383, 402, 383, 402, 383, 383, 383, - 383, 383, 383, 388, 389, 383, 383, 383, - 383, 394, 383, 402, 383, 402, 383, 383, - 383, 383, 453, 383, 388, 389, 383, 383, - 383, 383, 394, 383, 402, 383, 402, 383, - 452, 383, 383, 383, 383, 388, 389, 383, - 383, 383, 383, 394, 383, 402, 383, 402, - 116, 383, 383, 132, 403, 383, 388, 389, - 383, 383, 383, 383, 394, 383, 402, 383, - 395, 396, 401, 401, 119, 388, 389, 383, - 383, 383, 383, 399, 383, 395, 396, 397, - 401, 119, 388, 389, 383, 383, 383, 149, - 399, 383, 392, 383, 454, 383, 435, 435, - 119, 388, 389, 383, 383, 383, 383, 394, - 383, 392, 383, 392, 383, 383, 383, 383, - 383, 383, 388, 389, 383, 383, 383, 383, - 394, 383, 392, 383, 392, 383, 383, 383, - 383, 455, 383, 388, 389, 383, 383, 383, - 383, 394, 383, 392, 383, 392, 383, 454, - 383, 383, 383, 383, 388, 389, 383, 383, - 383, 383, 394, 383, 392, 383, 392, 116, - 383, 383, 132, 393, 383, 388, 389, 383, - 383, 383, 383, 394, 383, 392, 383, 384, - 385, 387, 387, 119, 388, 389, 383, 383, - 383, 383, 390, 383, 153, 154, 382, 382, - 382, 382, 382, 382, 382, 382, 161, 161, - 382, 382, 382, 153, 382, 167, 456, 169, - 170, 5, 171, 172, 173, 166, 166, 37, - 174, 166, 166, 153, 166, 177, 154, 166, - 166, 18, 178, 166, 171, 172, 166, 161, - 161, 166, 179, 166, 177, 166, 0 -}; - -static const short _indic_syllable_machine_trans_targs[] = { - 143, 168, 170, 171, 3, 174, 4, 6, - 177, 7, 9, 180, 10, 12, 183, 13, - 15, 16, 164, 18, 19, 182, 21, 22, - 179, 24, 25, 176, 185, 189, 193, 196, - 200, 203, 207, 210, 214, 217, 143, 243, - 245, 246, 39, 249, 40, 42, 252, 43, - 45, 255, 46, 48, 258, 49, 51, 52, - 239, 54, 55, 257, 57, 58, 254, 60, - 61, 251, 260, 263, 267, 270, 274, 277, - 281, 284, 288, 292, 143, 316, 318, 319, - 75, 322, 143, 76, 78, 325, 79, 81, - 328, 82, 84, 331, 85, 87, 88, 312, - 90, 91, 330, 93, 94, 327, 96, 97, - 324, 333, 336, 340, 343, 347, 350, 354, - 357, 361, 143, 391, 393, 394, 110, 397, - 111, 113, 400, 114, 116, 403, 117, 119, - 406, 120, 122, 123, 387, 125, 126, 405, - 128, 129, 402, 131, 132, 399, 408, 411, - 415, 418, 422, 425, 429, 432, 436, 439, - 143, 144, 219, 293, 295, 364, 366, 313, - 315, 367, 365, 363, 440, 441, 143, 145, - 147, 35, 218, 165, 167, 187, 216, 146, - 34, 148, 212, 0, 149, 151, 33, 211, - 209, 150, 32, 152, 205, 153, 155, 31, - 204, 202, 154, 30, 156, 198, 157, 159, - 29, 197, 195, 158, 28, 160, 191, 161, - 163, 27, 190, 188, 162, 26, 173, 166, - 143, 169, 1, 172, 2, 175, 5, 23, - 178, 8, 20, 181, 11, 17, 184, 14, - 186, 192, 194, 199, 201, 206, 208, 213, - 215, 143, 220, 222, 71, 290, 240, 242, - 291, 221, 70, 223, 286, 36, 224, 226, - 69, 285, 283, 225, 68, 227, 279, 228, - 230, 67, 278, 276, 229, 66, 231, 272, - 232, 234, 65, 271, 269, 233, 64, 235, - 265, 236, 238, 63, 264, 262, 237, 62, - 248, 241, 143, 244, 37, 247, 38, 250, - 41, 59, 253, 44, 56, 256, 47, 53, - 259, 50, 261, 266, 268, 273, 275, 280, - 282, 287, 289, 143, 294, 106, 296, 359, - 72, 297, 299, 105, 358, 356, 298, 104, - 300, 352, 301, 303, 103, 351, 349, 302, - 102, 304, 345, 305, 307, 101, 344, 342, - 306, 100, 308, 338, 309, 311, 99, 337, - 335, 310, 98, 321, 314, 143, 317, 73, - 320, 74, 323, 77, 95, 326, 80, 92, - 329, 83, 89, 332, 86, 334, 339, 341, - 346, 348, 353, 355, 360, 362, 143, 143, - 368, 370, 142, 141, 388, 390, 438, 369, - 371, 434, 107, 372, 374, 140, 433, 431, - 373, 139, 375, 427, 376, 378, 138, 426, - 424, 377, 137, 379, 420, 380, 382, 136, - 419, 417, 381, 135, 383, 413, 384, 386, - 134, 412, 410, 385, 133, 396, 389, 143, - 392, 108, 395, 109, 398, 112, 130, 401, - 115, 127, 404, 118, 124, 407, 121, 409, - 414, 416, 421, 423, 428, 430, 435, 437, - 442 -}; - -static const char _indic_syllable_machine_trans_actions[] = { - 1, 2, 0, 0, 0, 2, 0, 0, - 2, 0, 0, 2, 0, 0, 2, 0, - 0, 0, 2, 0, 0, 2, 0, 0, - 2, 0, 0, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 3, 2, - 0, 0, 0, 2, 0, 0, 2, 0, - 0, 2, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 2, 0, 0, 2, 0, - 0, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 4, 2, 0, 0, - 0, 2, 5, 0, 0, 2, 0, 0, - 2, 0, 0, 2, 0, 0, 0, 2, - 0, 0, 2, 0, 0, 2, 0, 0, - 2, 2, 6, 2, 6, 2, 6, 2, - 6, 2, 7, 2, 0, 0, 0, 2, - 0, 0, 2, 0, 0, 2, 0, 0, - 2, 0, 0, 0, 2, 0, 0, 2, - 0, 0, 2, 0, 0, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 10, 2, 2, 6, 2, 11, 11, 0, - 0, 2, 6, 2, 0, 2, 12, 2, - 2, 0, 2, 0, 0, 2, 2, 2, - 0, 2, 2, 0, 2, 2, 0, 2, - 2, 2, 0, 2, 2, 2, 2, 0, - 2, 2, 2, 0, 2, 2, 2, 2, - 0, 2, 2, 2, 0, 2, 2, 2, - 2, 0, 2, 2, 2, 0, 2, 0, - 13, 0, 0, 2, 0, 2, 0, 0, - 2, 0, 0, 2, 0, 0, 2, 0, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 14, 2, 2, 0, 2, 0, 0, - 2, 2, 0, 2, 2, 0, 2, 2, - 0, 2, 2, 2, 0, 2, 2, 2, - 2, 0, 2, 2, 2, 0, 2, 2, - 2, 2, 0, 2, 2, 2, 0, 2, - 2, 2, 2, 0, 2, 2, 2, 0, - 2, 0, 15, 0, 0, 2, 0, 2, - 0, 0, 2, 0, 0, 2, 0, 0, - 2, 0, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 16, 6, 0, 6, 6, - 0, 6, 2, 0, 6, 2, 6, 0, - 6, 6, 6, 2, 0, 6, 2, 6, - 0, 6, 6, 6, 2, 0, 6, 2, - 6, 0, 6, 6, 6, 2, 0, 6, - 2, 6, 0, 6, 0, 17, 0, 0, - 2, 0, 2, 0, 0, 2, 0, 0, - 2, 0, 0, 2, 0, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 18, 19, - 2, 2, 0, 0, 0, 0, 2, 2, - 2, 2, 0, 2, 2, 0, 2, 2, - 2, 0, 2, 2, 2, 2, 0, 2, - 2, 2, 0, 2, 2, 2, 2, 0, - 2, 2, 2, 0, 2, 2, 2, 2, - 0, 2, 2, 2, 0, 2, 0, 20, - 0, 0, 2, 0, 2, 0, 0, 2, - 0, 0, 2, 0, 0, 2, 0, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2 -}; - -static const char _indic_syllable_machine_to_state_actions[] = { - 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, 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, 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, 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, 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, - 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, 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, 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, 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, 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, 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, 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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 -}; - -static const char _indic_syllable_machine_from_state_actions[] = { - 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, 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, 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, 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, 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, - 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, 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, 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, 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, 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, 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, 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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 -}; - -static const short _indic_syllable_machine_eof_trans[] = { - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, - 77, 77, 77, 83, 83, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 0, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 383, 316, 383, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 383, 167, 167 -}; - -static const int indic_syllable_machine_start = 143; -static const int indic_syllable_machine_first_final = 143; -static const int indic_syllable_machine_error = -1; - -static const int indic_syllable_machine_en_main = 143; - - -#line 36 "../../src/hb-ot-shape-complex-indic-machine.rl" - - - -#line 91 "../../src/hb-ot-shape-complex-indic-machine.rl" - - -#define found_syllable(syllable_type) \ - HB_STMT_START { \ - if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \ - for (unsigned int i = last; i < p+1; i++) \ - info[i].syllable() = (syllable_serial << 4) | syllable_type; \ - last = p+1; \ - syllable_serial++; \ - if (unlikely (syllable_serial == 16)) syllable_serial = 1; \ - } HB_STMT_END - -static void -find_syllables (hb_buffer_t *buffer) -{ - unsigned int p, pe, eof, ts, te, act; - int cs; - hb_glyph_info_t *info = buffer->info; - -#line 1161 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" - { - cs = indic_syllable_machine_start; - ts = 0; - te = 0; - act = 0; - } - -#line 112 "../../src/hb-ot-shape-complex-indic-machine.rl" - - - p = 0; - pe = eof = buffer->len; - - unsigned int last = 0; - unsigned int syllable_serial = 1; - -#line 1178 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" - { - int _slen; - int _trans; - const unsigned char *_keys; - const short *_inds; - if ( p == pe ) - goto _test_eof; -_resume: - switch ( _indic_syllable_machine_from_state_actions[cs] ) { - case 9: -#line 1 "NONE" - {ts = p;} - break; -#line 1192 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" - } - - _keys = _indic_syllable_machine_trans_keys + (cs<<1); - _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index_offsets[cs]; - - _slen = _indic_syllable_machine_key_spans[cs]; - _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) && - ( info[p].indic_category()) <= _keys[1] ? - ( info[p].indic_category()) - _keys[0] : _slen ]; - -_eof_trans: - cs = _indic_syllable_machine_trans_targs[_trans]; - - if ( _indic_syllable_machine_trans_actions[_trans] == 0 ) - goto _again; - - switch ( _indic_syllable_machine_trans_actions[_trans] ) { - case 2: -#line 1 "NONE" - {te = p+1;} - break; - case 13: -#line 83 "../../src/hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ found_syllable (consonant_syllable); }} - break; - case 15: -#line 84 "../../src/hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ found_syllable (vowel_syllable); }} - break; - case 20: -#line 85 "../../src/hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ found_syllable (standalone_cluster); }} - break; - case 17: -#line 86 "../../src/hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ found_syllable (broken_cluster); }} - break; - case 10: -#line 87 "../../src/hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ found_syllable (non_indic_cluster); }} - break; - case 12: -#line 83 "../../src/hb-ot-shape-complex-indic-machine.rl" - {te = p;p--;{ found_syllable (consonant_syllable); }} - break; - case 14: -#line 84 "../../src/hb-ot-shape-complex-indic-machine.rl" - {te = p;p--;{ found_syllable (vowel_syllable); }} - break; - case 19: -#line 85 "../../src/hb-ot-shape-complex-indic-machine.rl" - {te = p;p--;{ found_syllable (standalone_cluster); }} - break; - case 16: -#line 86 "../../src/hb-ot-shape-complex-indic-machine.rl" - {te = p;p--;{ found_syllable (broken_cluster); }} - break; - case 18: -#line 87 "../../src/hb-ot-shape-complex-indic-machine.rl" - {te = p;p--;{ found_syllable (non_indic_cluster); }} - break; - case 1: -#line 83 "../../src/hb-ot-shape-complex-indic-machine.rl" - {{p = ((te))-1;}{ found_syllable (consonant_syllable); }} - break; - case 3: -#line 84 "../../src/hb-ot-shape-complex-indic-machine.rl" - {{p = ((te))-1;}{ found_syllable (vowel_syllable); }} - break; - case 7: -#line 85 "../../src/hb-ot-shape-complex-indic-machine.rl" - {{p = ((te))-1;}{ found_syllable (standalone_cluster); }} - break; - case 4: -#line 86 "../../src/hb-ot-shape-complex-indic-machine.rl" - {{p = ((te))-1;}{ found_syllable (broken_cluster); }} - break; - case 5: -#line 1 "NONE" - { switch( act ) { - case 4: - {{p = ((te))-1;} found_syllable (broken_cluster); } - break; - case 5: - {{p = ((te))-1;} found_syllable (non_indic_cluster); } - break; - } - } - break; - case 6: -#line 1 "NONE" - {te = p+1;} -#line 86 "../../src/hb-ot-shape-complex-indic-machine.rl" - {act = 4;} - break; - case 11: -#line 1 "NONE" - {te = p+1;} -#line 87 "../../src/hb-ot-shape-complex-indic-machine.rl" - {act = 5;} - break; -#line 1294 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" - } - -_again: - switch ( _indic_syllable_machine_to_state_actions[cs] ) { - case 8: -#line 1 "NONE" - {ts = 0;} - break; -#line 1303 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" - } - - if ( ++p != pe ) - goto _resume; - _test_eof: {} - if ( p == eof ) - { - if ( _indic_syllable_machine_eof_trans[cs] > 0 ) { - _trans = _indic_syllable_machine_eof_trans[cs] - 1; - goto _eof_trans; - } - } - - } - -#line 121 "../../src/hb-ot-shape-complex-indic-machine.rl" - -} - -#endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */ diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac index 1465fa60192..22de668c57b 100644 --- a/Build/source/libs/harfbuzz/version.ac +++ b/Build/source/libs/harfbuzz/version.ac @@ -8,4 +8,4 @@ dnl dnl -------------------------------------------------------- dnl dnl m4-include this file to define the current harfbuzz version -m4_define([harfbuzz_version], [0.9.8]) +m4_define([harfbuzz_version], [0.9.10]) |