summaryrefslogtreecommitdiff
path: root/Build/source/libs/harfbuzz
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2013-10-29 08:21:47 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2013-10-29 08:21:47 +0000
commit0043db89f7e867929263352f833492ef6df2286a (patch)
tree19631d6936ba1cbfdcc683c832ba50efd4ecd7d1 /Build/source/libs/harfbuzz
parentdd4589b2bab77695ef1be9924a84b03e47092a27 (diff)
harfbuzz 0.9.23
git-svn-id: svn://tug.org/texlive/trunk@32029 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/harfbuzz')
-rw-r--r--Build/source/libs/harfbuzz/ChangeLog5
-rw-r--r--Build/source/libs/harfbuzz/Makefile.in4
-rwxr-xr-xBuild/source/libs/harfbuzz/configure32
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-indic-machine.hh1443
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23-PATCHES/ChangeLog (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22-PATCHES/ChangeLog)5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23-PATCHES/TL-Changes (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22-PATCHES/TL-Changes)4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/AUTHORS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/AUTHORS)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/Android.mk (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/Android.mk)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/ChangeLog (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/ChangeLog)1079
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/Makefile.am (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/Makefile.am)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/NEWS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/NEWS)10
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/README (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/README)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/THANKS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/THANKS)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/TODO (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/TODO)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.23/autogen.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/autogen.sh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/config.h.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/config.h.in)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/configure.ac (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/configure.ac)4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/gtk-doc.make (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/gtk-doc.make)70
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/harfbuzz.doap (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/harfbuzz.doap)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/Makefile.am (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/Makefile.am)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-c-linkage-decls.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-c-linkage-decls.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-defs.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-defs.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-header-guards.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-header-guards.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-includes.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-includes.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-libstdc++.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-libstdc++.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-static-inits.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-static-inits.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-symbols.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-symbols.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.23/src/gen-arabic-table.py (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/gen-arabic-table.py)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.23/src/gen-indic-table.py (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/gen-indic-table.py)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/harfbuzz-gobject.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/harfbuzz-gobject.pc.in)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/harfbuzz-icu.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/harfbuzz-icu.pc.in)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/harfbuzz.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/harfbuzz.pc.in)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-atomic-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-atomic-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-blob.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-blob.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-blob.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-blob.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-deserialize-json.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-deserialize-json.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-deserialize-json.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-deserialize-json.rl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-deserialize-text.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-deserialize-text.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-deserialize-text.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-deserialize-text.rl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-private.hh)4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-serialize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-serialize.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer.cc)51
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer.h)16
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-cache-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-cache-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-common.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-common.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-common.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-common.h)2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-coretext.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-coretext.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-coretext.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-coretext.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-deprecated.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-deprecated.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-face-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-face-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-face.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-face.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-face.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-face.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-fallback-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-fallback-shape.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-font-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-font-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-font.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-font.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-font.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-font.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ft.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ft.cc)8
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ft.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ft.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-glib.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-glib.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-glib.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-glib.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-gobject-enums.cc.tmpl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-gobject-enums.cc.tmpl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-gobject-enums.h.tmpl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-gobject-enums.h.tmpl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-gobject-structs.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-gobject-structs.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-gobject-structs.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-gobject-structs.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-gobject.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-gobject.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-graphite2.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-graphite2.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-graphite2.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-graphite2.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-icu.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-icu.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-icu.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-icu.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-mutex-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-mutex-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-object-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-object-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-open-file-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-open-file-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-open-type-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-open-type-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-head-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-head-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-hhea-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-hhea-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-hmtx-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-hmtx-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-common-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-common-private.hh)1
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-gdef-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-gdef-table.hh)8
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-gpos-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-gpos-table.hh)128
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-gsub-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-gsub-table.hh)37
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-gsubgpos-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-gsubgpos-private.hh)280
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-jstf-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-jstf-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-private.hh)401
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout.cc)40
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-map-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-map-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-map.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-map.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-maxp-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-maxp-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-name-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-name-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-arabic-fallback.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-arabic-fallback.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-arabic-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-arabic-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-arabic.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-arabic.cc)21
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-default.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-default.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic-machine.hh1824
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-indic-machine.rl)21
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-indic-private.hh)40
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic-table.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-indic-table.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-indic.cc)358
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-myanmar-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-myanmar-machine.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-myanmar-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-myanmar-machine.rl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-myanmar.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-myanmar.cc)12
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-private.hh)4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-sea-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-sea-machine.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-sea-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-sea-machine.rl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-sea.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-sea.cc)2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-thai.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-thai.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-fallback-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-fallback-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-fallback.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-fallback.cc)73
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-normalize-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-normalize-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-normalize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-normalize.cc)29
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape.cc)96
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-tag.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-tag.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-tag.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-tag.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-set-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-set-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-set.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-set.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-set.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-set.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shape-plan-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shape-plan-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shape-plan.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shape-plan.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shape-plan.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shape-plan.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shape.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shape.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shape.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shaper-impl-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shaper-impl-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shaper-list.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shaper-list.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shaper-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shaper-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shaper.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shaper.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-tt-font.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-tt-font.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ucdn.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ucdn.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-unicode-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-unicode-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-unicode.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-unicode.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-unicode.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-unicode.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-uniscribe.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-uniscribe.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-uniscribe.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-uniscribe.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-utf-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-utf-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-version.h.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-version.h.in)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-warning.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-warning.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/main.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/main.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/test-buffer-serialize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/test-buffer-serialize.cc)5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/test-size-params.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/test-size-params.cc)5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/test-would-substitute.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/test-would-substitute.cc)5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/test.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/test.cc)5
-rw-r--r--Build/source/libs/harfbuzz/hbtest.c10
-rw-r--r--Build/source/libs/harfbuzz/version.ac2
146 files changed, 4021 insertions, 2123 deletions
diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog
index 56d47fc0610..9b7021edc54 100644
--- a/Build/source/libs/harfbuzz/ChangeLog
+++ b/Build/source/libs/harfbuzz/ChangeLog
@@ -1,3 +1,8 @@
+2013-10-29 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Import harfbuzz-0.9.23.
+ * version.ac: Adjust.
+
2013-10-04 Peter Breitenlohner <peb@mppmu.mpg.de>
Import harfbuzz-0.9.22.
diff --git a/Build/source/libs/harfbuzz/Makefile.in b/Build/source/libs/harfbuzz/Makefile.in
index 77b5e4b1384..8f97d2d8d43 100644
--- a/Build/source/libs/harfbuzz/Makefile.in
+++ b/Build/source/libs/harfbuzz/Makefile.in
@@ -83,7 +83,7 @@ DIST_COMMON = $(srcdir)/../../am/reconfig.am \
$(srcdir)/../../am/rebuild.am $(srcdir)/Makefile.in \
$(srcdir)/Makefile.am $(top_srcdir)/configure \
$(am__configure_deps) $(srcdir)/config.h.in \
- $(top_srcdir)/harfbuzz-0.9.22/src/hb-version.h.in \
+ $(top_srcdir)/harfbuzz-0.9.23/src/hb-version.h.in \
$(am__dist_check_SCRIPTS_DIST) \
$(top_srcdir)/../../build-aux/depcomp \
$(top_srcdir)/../../build-aux/test-driver ChangeLog \
@@ -771,7 +771,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.22/src/hb-version.h.in
+hb-version.h: $(top_builddir)/config.status $(top_srcdir)/harfbuzz-0.9.23/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 1093db05143..60703959f19 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 (TeX Live) 0.9.22.
+# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 0.9.23.
#
# Report bugs to <tex-k@tug.org>.
#
@@ -580,12 +580,12 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='harfbuzz (TeX Live)'
PACKAGE_TARNAME='harfbuzz--tex-live-'
-PACKAGE_VERSION='0.9.22'
-PACKAGE_STRING='harfbuzz (TeX Live) 0.9.22'
+PACKAGE_VERSION='0.9.23'
+PACKAGE_STRING='harfbuzz (TeX Live) 0.9.23'
PACKAGE_BUGREPORT='tex-k@tug.org'
PACKAGE_URL=''
-ac_unique_file="harfbuzz-0.9.22/src/harfbuzz.pc.in"
+ac_unique_file="harfbuzz-0.9.23/src/harfbuzz.pc.in"
# Factoring default headers for most tests.
ac_includes_default="\
#include <stdio.h>
@@ -1324,7 +1324,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 (TeX Live) 0.9.22 to adapt to many kinds of systems.
+\`configure' configures harfbuzz (TeX Live) 0.9.23 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1395,7 +1395,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of harfbuzz (TeX Live) 0.9.22:";;
+ short | recursive ) echo "Configuration of harfbuzz (TeX Live) 0.9.23:";;
esac
cat <<\_ACEOF
@@ -1508,7 +1508,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-harfbuzz (TeX Live) configure 0.9.22
+harfbuzz (TeX Live) configure 0.9.23
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1915,7 +1915,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 (TeX Live) $as_me 0.9.22, which was
+It was created by harfbuzz (TeX Live) $as_me 0.9.23, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3838,7 +3838,7 @@ fi
# Define the identity of the package.
PACKAGE='harfbuzz--tex-live-'
- VERSION='0.9.22'
+ VERSION='0.9.23'
cat >>confdefs.h <<_ACEOF
@@ -4040,8 +4040,8 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags
HB_VERSION_MAJOR=0
HB_VERSION_MINOR=9
-HB_VERSION_MICRO=22
-HB_VERSION=0.9.22
+HB_VERSION_MICRO=23
+HB_VERSION=0.9.23
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -6408,14 +6408,14 @@ $as_echo "#define HAVE_INTEL_ATOMIC_PRIMITIVES 1" >>confdefs.h
fi
-HARFBUZZ_TREE=harfbuzz-0.9.22
+HARFBUZZ_TREE=harfbuzz-0.9.23
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.22/src/hb-version.h.in"
+ac_config_files="$ac_config_files Makefile include/Makefile hb-version.h:harfbuzz-0.9.23/src/hb-version.h.in"
cat >confcache <<\_ACEOF
@@ -6964,7 +6964,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 (TeX Live) $as_me 0.9.22, which was
+This file was extended by harfbuzz (TeX Live) $as_me 0.9.23, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -7030,7 +7030,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 (TeX Live) config.status 0.9.22
+harfbuzz (TeX Live) config.status 0.9.23
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -7163,7 +7163,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.22/src/hb-version.h.in" ;;
+ "hb-version.h") CONFIG_FILES="$CONFIG_FILES hb-version.h:harfbuzz-0.9.23/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.22/src/hb-ot-shape-complex-indic-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-indic-machine.hh
deleted file mode 100644
index c251160880c..00000000000
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-indic-machine.hh
+++ /dev/null
@@ -1,1443 +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, 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 HB_UNUSED, act HB_UNUSED;
- 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.22-PATCHES/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-0.9.23-PATCHES/ChangeLog
index 0e6d7f29c6d..63270d083d0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22-PATCHES/ChangeLog
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23-PATCHES/ChangeLog
@@ -1,3 +1,8 @@
+2013-10-29 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Imported harfbuzz-0.9.23 source tree from:
+ http://www.freedesktop.org/software/harfbuzz/release/
+
2013-10-04 Peter Breitenlohner <peb@mppmu.mpg.de>
Imported harfbuzz-0.9.22 source tree from:
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22-PATCHES/TL-Changes b/Build/source/libs/harfbuzz/harfbuzz-0.9.23-PATCHES/TL-Changes
index dfbe753b014..6d0cac49098 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22-PATCHES/TL-Changes
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23-PATCHES/TL-Changes
@@ -1,5 +1,5 @@
-Changes applied to the harfbuzz-0.9.22/ tree as obtained from:
- http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.22.tar.bz2
+Changes applied to the harfbuzz-0.9.23/ tree as obtained from:
+ http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.23.tar.bz2
Removed:
COPYING
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/AUTHORS b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/AUTHORS
index c611d7d4769..c611d7d4769 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/AUTHORS
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/AUTHORS
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/Android.mk b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/Android.mk
index 757d136e509..757d136e509 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/Android.mk
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/Android.mk
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/ChangeLog
index a08344752ba..3aeb416a11b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/ChangeLog
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/ChangeLog
@@ -1,3 +1,1082 @@
+commit dce79c2bd747d398bdf2f4b171b0ba9b5b951f72
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Oct 28 20:26:40 2013 +0100
+
+ 0.9.23
+
+ NEWS | 10 ++++++++++
+ configure.ac | 2 +-
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
+commit 2e990a3d722c10d1eefdc4c5ccbdaa384625c3fd
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Oct 28 20:23:07 2013 +0100
+
+ Make "make distcheck" happy
+
+ configure.ac | 2 +-
+ test/shaping/Makefile.am | 3 +++
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+commit 6ffc007b61402c9d1d4de368deed4971a10ed00b
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Oct 28 19:26:02 2013 +0100
+
+ [otlayout] Optimize inplace
+
+ See thread started by Jonathan with subject "an optimization for
+ complex
+ fonts".
+
+ src/hb-ot-layout.cc | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 71b4c999a511bf018acaf48a45e070470c0daf12
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Oct 28 00:20:59 2013 +0100
+
+ Revert "Zero marks by GDEF for Tibetan"
+
+ This reverts commit d5bd0590ae2fbc7b0dee86385a565aef00ffb835.
+
+ The reasoning behind that logic was flawed and made under
+ a misunderstanding of the original problem, and caused
+ regressions as reported by Jonathan Kew in thread titled
+ "tibetan marks" in Oct 2013. Apparently I have had fixed
+ the original problem with this commit:
+
+ 7e08f1258da229dfaf7e1c4b5c41e5bb83906cb0
+
+ So, revert the faulty commit and everything seems to be in good
+ shape.
+
+ src/hb-ot-layout-gsubgpos-private.hh | 4 ++--
+ src/hb-ot-shape-complex-arabic.cc | 10 +++-------
+ src/hb-ot-shape-complex-default.cc | 17 +----------------
+ src/hb-ot-shape-complex-indic.cc | 8 +-------
+ src/hb-ot-shape-complex-myanmar.cc | 15 +++++----------
+ src/hb-ot-shape-complex-private.hh | 8 ++------
+ src/hb-ot-shape-complex-sea.cc | 14 ++++----------
+ src/hb-ot-shape-complex-thai.cc | 9 +--------
+ src/hb-ot-shape.cc | 4 ++--
+ 9 files changed, 21 insertions(+), 68 deletions(-)
+
+commit 9596b2bf569dae6fbe268803e3cb248001f10954
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Oct 28 00:09:05 2013 +0100
+
+ Pass CPPFLAGS=-Werror to Travis-CI
+
+ We want default gcc / clang warnings to fail the CI build.
+
+ .travis.yml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit c77d1ade6898cea161f0709c5c5a912e14aff951
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sun Oct 27 23:52:26 2013 +0100
+
+ Fix warnings
+
+ test/api/test-blob.c | 2 +-
+ util/helper-cairo-ansi.cc | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit c2bc818706df56022c8bb922df2b741cb120f7e4
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sun Oct 27 23:36:35 2013 +0100
+
+ Work with old and new glib
+
+ Avoids "deprecated" warnings.
+
+ src/test-buffer-serialize.cc | 7 +++++--
+ src/test-size-params.cc | 7 +++++--
+ src/test-would-substitute.cc | 7 +++++--
+ src/test.cc | 7 +++++--
+ util/options.cc | 4 ++--
+ util/options.hh | 4 ++++
+ util/view-cairo.hh | 4 ++++
+ 7 files changed, 30 insertions(+), 10 deletions(-)
+
+commit 46a863d91dbcc9a4c796e3715ea3828939f4d941
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sun Oct 27 23:24:50 2013 +0100
+
+ [indic] Adjust pref reordering logic
+
+ For Javanese (pref_len == 1) only reorder if it didn't ligate. That's
+ sensible, and what the spec says. For other Indic (pref_len > 1)
+ only reorder if ligated.
+
+ Doesn't change any test numbers.
+
+ src/hb-ot-shape-complex-indic.cc | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+commit 6b03e3c724ec6cd255f4a323bf4aa7d8c93a056e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sun Oct 27 21:04:55 2013 +0100
+
+ Optimize fallback kerning
+
+ Patch from Jonathan Kew. "These changes seem to yield a small but
+ just-about-measurable improvement with old fonts that lack GPOS
+ kerning."
+
+ src/hb-ot-shape-fallback.cc | 47
+ ++++++++++++++++++++++++++++-----------------
+ 1 file changed, 29 insertions(+), 18 deletions(-)
+
+commit 133eeba6a32769ec1a7520e7c8a0d2eb1ad986f8
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sun Oct 27 00:24:59 2013 +0200
+
+ Minor
+
+ See:
+ https://github.com/prezi/harfbuzz-js/pull/1/files#r7032397
+
+ src/hb-common.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a74f0de225c403998212e2618dcf9452bc5b590d
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 24 11:46:33 2013 +0200
+
+ [indic] Fix CM2, really
+
+ Followup from 6e613f3365bf4e9fd778758c53e7de00c64beca1.
+
+ src/hb-ot-shape-complex-indic-machine.rl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6e613f3365bf4e9fd778758c53e7de00c64beca1
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Oct 23 23:34:13 2013 +0200
+
+ Fix "shift count >= width of type" issue
+
+ src/hb-ot-shape-complex-indic-private.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ac8cd511911c7dca6222d14fa758bff75d601567
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 19:33:09 2013 +0200
+
+ Refactor
+
+ src/hb-ot-layout-gpos-table.hh | 120
+ ++++++++++++++++++++++-------------------
+ src/hb-ot-layout.cc | 31 +++++------
+ src/hb-ot-shape-normalize.cc | 29 +++++-----
+ src/hb-ot-shape.cc | 82 ++++++++++++++++------------
+ 4 files changed, 145 insertions(+), 117 deletions(-)
+
+commit 0f3fe37fccfb540437adf13dd580f2c5164a0b1f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 19:14:22 2013 +0200
+
+ Comment
+
+ src/hb-ot-layout-private.hh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit ddce2d8df6fed9c033f1f13e235666680c5beb67
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 18:07:11 2013 +0200
+
+ [indic] Improve positioning of post-base bells and whistles
+
+ Bug 58714 - Kannada u+0cb0 u+200d u+0ccd u+0c95 u+0cbe does not
+ provide
+ same results as Windows8
+ https://bugs.freedesktop.org/show_bug.cgi?id=58714
+
+ Test with U+0CB0,U+200D,U+0CCD,U+0C95,U+0CBF and tunga.ttf.
+
+ Improves some scripts. Improves Bengali too, but numbers
+ are up because we produce better results than Uniscribe for some
+ sequences now.
+
+ New numbers:
+ BENGALI: 353724 out of 354188 tests passed. 464 failed (0.131004%)
+ DEVANAGARI: 707307 out of 707394 tests passed. 87 failed (0.0122987%)
+ GUJARATI: 366349 out of 366457 tests passed. 108 failed (0.0294714%)
+ GURMUKHI: 60732 out of 60747 tests passed. 15 failed (0.0246926%)
+ KANNADA: 951190 out of 951913 tests passed. 723 failed (0.0759523%)
+ KHMER: 299070 out of 299124 tests passed. 54 failed (0.0180527%)
+ MALAYALAM: 1048140 out of 1048334 tests passed. 194 failed
+ (0.0185056%)
+ ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%)
+ SINHALA: 271662 out of 271847 tests passed. 185 failed (0.068053%)
+ TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%)
+ TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%)
+
+ src/hb-ot-shape-complex-indic.cc | 19 ++++++++++---------
+ 1 file changed, 10 insertions(+), 9 deletions(-)
+
+commit d5bd0590ae2fbc7b0dee86385a565aef00ffb835
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 16:44:54 2013 +0200
+
+ Zero marks by GDEF for Tibetan
+
+ See:
+ http://lists.freedesktop.org/archives/harfbuzz/2013-April/003101.html
+
+ src/hb-ot-layout-gsubgpos-private.hh | 4 ++--
+ src/hb-ot-shape-complex-arabic.cc | 10 +++++++---
+ src/hb-ot-shape-complex-default.cc | 17 ++++++++++++++++-
+ src/hb-ot-shape-complex-indic.cc | 8 +++++++-
+ src/hb-ot-shape-complex-myanmar.cc | 15 ++++++++++-----
+ src/hb-ot-shape-complex-private.hh | 8 ++++++--
+ src/hb-ot-shape-complex-sea.cc | 14 ++++++++++----
+ src/hb-ot-shape-complex-thai.cc | 9 ++++++++-
+ src/hb-ot-shape.cc | 4 ++--
+ 9 files changed, 68 insertions(+), 21 deletions(-)
+
+commit bf029281b1b0f854f671969ab40eac3046a111bd
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 16:20:13 2013 +0200
+
+ Bug 65258 - [...] Mongolian with free variation selector
+
+ src/hb-ot-shape-complex-arabic.cc | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 0193649ce4ca78b8e2835a50bd51ee594cffe34e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 16:08:53 2013 +0200
+
+ [otfallback] Don't shift down above-marks too much
+
+ This seems to generate much better, almost-perfect, positioning for
+ Arabic as well as Latin above marks.
+
+ src/hb-ot-shape-fallback.cc | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+commit dba9580237da788275b1ab5fe6be75c8a3f359b9
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 15:57:36 2013 +0200
+
+ [otfallback] Never fallback-position a below-mark upwards
+
+ Test with WinXP times.ttf and U+05D9,U+05B5.
+
+ src/hb-ot-shape-fallback.cc | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit 8177da29ad07d8fa444ce07003fa65cd31a2776b
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 15:50:29 2013 +0200
+
+ Minor
+
+ src/hb-ot-shape-fallback.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit c16012e9019ec59c2200a3cc29b8a37ea70eda70
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 02:27:00 2013 +0200
+
+ [indic] Add Javanese support!
+
+ Seems to be working just fine!
+
+ src/hb-ot-shape-complex-indic-machine.rl | 14 ++++++------
+ src/hb-ot-shape-complex-indic-private.hh | 37
+ ++++++++++++++++----------------
+ src/hb-ot-shape-complex-indic.cc | 9 ++++++--
+ 3 files changed, 34 insertions(+), 26 deletions(-)
+
+commit 755b44cce6dc23376a3cf0212893609231fa4967
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 11:17:42 2013 +0200
+
+ [ft] Round metrics instead of truncate
+
+ Lohit-Punjabi has a upem of 769! We were losing one unit in our
+ code, and FreeType is losing another one... Test with U+0A06.
+ Has an advance of 854 in the font. We were producing 852.
+ Now we do 853, which is what FreeType is telling us.
+
+ src/hb-ft.cc | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 9a49351cc2625de16a73e0e153d3097ef6c7cc0f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 02:14:53 2013 +0200
+
+ [indic] Swith pref logic to use _hb_glyph_info_substituted()
+
+ See comments from caveat! Seems to work fine.
+
+ This is useful for Javanese which has an atomically encoded pre-base
+ reordering Ra which should only be reordered if it was substituted
+ by the pref feature.
+
+ src/hb-ot-shape-complex-indic.cc | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+commit f175aa33c5e94397c60648ac0697c80f5fe0dcb7
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 02:07:44 2013 +0200
+
+ [indic] Fix compiler warnings
+
+ src/hb-ot-shape-complex-indic.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 857027341423f15fd6084c7563cc355b06e7cbdd
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 01:11:05 2013 +0200
+
+ [otlayout] Add _hb_glyph_info_substituted()
+
+ Currently unused.
+
+ src/hb-ot-layout-private.hh | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit a1f7b2856184959e965c9c2b80363f9f46d486a7
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 01:09:08 2013 +0200
+
+ [otlayout] Switch over from old is_a_ligature() to IS_LIGATED
+
+ Impact should be minimal and positive.
+
+ src/hb-ot-layout-gsubgpos-private.hh | 2 +-
+ src/hb-ot-layout-private.hh | 12 +++++++++---
+ src/hb-ot-shape-complex-indic.cc | 4 ++--
+ src/hb-ot-shape-complex-myanmar.cc | 2 +-
+ src/hb-ot-shape.cc | 2 +-
+ 5 files changed, 14 insertions(+), 8 deletions(-)
+
+commit 09675a8115b9d77261c33940401aa919cede8662
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 01:05:58 2013 +0200
+
+ [otlayout] Add HB_OT_LAYOUT_GLYPH_PROPS_LIGATED
+
+ Currently unused.
+
+ src/hb-ot-layout-gsubgpos-private.hh | 15 ++++++++++-----
+ src/hb-ot-layout-private.hh | 5 ++++-
+ 2 files changed, 14 insertions(+), 6 deletions(-)
+
+commit 05ad6b50ac0a1b9a8da10d2ee2238068b7811e7d
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 00:45:59 2013 +0200
+
+ [otlayout] Add HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED
+
+ Currently unused.
+
+ src/hb-ot-layout-gsubgpos-private.hh | 5 +++--
+ src/hb-ot-layout-private.hh | 10 ++++++----
+ 2 files changed, 9 insertions(+), 6 deletions(-)
+
+commit 101303dbf7cf15d044bf2518f14b3aec65970fea
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 00:42:39 2013 +0200
+
+ [otlayout] More shuffling around
+
+ src/hb-ot-layout-gpos-table.hh | 16 +++----
+ src/hb-ot-layout-gsub-table.hh | 13 +++--
+ src/hb-ot-layout-gsubgpos-private.hh | 8 ++--
+ src/hb-ot-layout-private.hh | 92
+ ++++++++++++++++++++++++++++++++----
+ src/hb-ot-shape.cc | 8 ++--
+ 5 files changed, 102 insertions(+), 35 deletions(-)
+
+commit 91689de2603e4151e2a2d3a3852c61667f0c6264
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 00:21:59 2013 +0200
+
+ [otlayout] Add _hb_glyph_info_set_glyph_props()
+
+ No functional change.
+
+ src/hb-ot-layout-gsub-table.hh | 2 +-
+ src/hb-ot-layout-gsubgpos-private.hh | 4 ++--
+ src/hb-ot-layout-private.hh | 9 +++++++++
+ src/hb-ot-shape.cc | 8 +++++---
+ 4 files changed, 17 insertions(+), 6 deletions(-)
+
+commit a0161746589934e93c3b115814bbd81f56ab962f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 00:06:30 2013 +0200
+
+ [otlayout] Simplify set_class() usage
+
+ src/hb-ot-layout-gsubgpos-private.hh | 31 ++++++++++++++++++-------------
+ 1 file changed, 18 insertions(+), 13 deletions(-)
+
+commit 3ddf892b5328b74afb6e7d9da727d8771ca5d288
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Oct 18 00:02:43 2013 +0200
+
+ [otlayout] Renaming
+
+ src/hb-ot-layout-gpos-table.hh | 18 +++++++-------
+ src/hb-ot-layout-gsub-table.hh | 2 +-
+ src/hb-ot-layout-gsubgpos-private.hh | 36 +++++++++++++--------------
+ src/hb-ot-layout-private.hh | 48
+ +++++++++++++++++++++---------------
+ src/hb-ot-shape-complex-indic.cc | 5 ++--
+ src/hb-ot-shape-complex-myanmar.cc | 2 +-
+ src/hb-ot-shape-fallback.cc | 8 +++---
+ src/hb-ot-shape.cc | 2 +-
+ 8 files changed, 65 insertions(+), 56 deletions(-)
+
+commit 2e96d2c6ee34142375373be07217c9953e7822cc
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 21:16:20 2013 +0200
+
+ [otlayout] More shuffling
+
+ src/hb-ot-layout-private.hh | 252
+ +++++++++++++++++++++++---------------------
+ 1 file changed, 130 insertions(+), 122 deletions(-)
+
+commit 469524692bd0a258b28e63294c984e677a9c2477
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 21:01:57 2013 +0200
+
+ [otlayout] Code shuffling
+
+ src/hb-ot-layout-private.hh | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+commit 11fb16cb849285a178d9e80991b1d60a960326ee
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 20:57:57 2013 +0200
+
+ Use unsigned enums for mask types
+
+ src/hb-buffer.h | 16 ++++++++--------
+ src/hb-ot-layout-private.hh | 8 ++++----
+ 2 files changed, 12 insertions(+), 12 deletions(-)
+
+commit 03058c3d1e8c18858c1e0b0c738ce9d299f2787a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 20:55:34 2013 +0200
+
+ [otlayout] Remove two unused HB_OT_LAYOUT_GLYPH_PROPS_* values
+
+ src/hb-ot-layout-gdef-table.hh | 1 -
+ src/hb-ot-layout-gsub-table.hh | 3 ++-
+ src/hb-ot-layout-private.hh | 7 +++++--
+ 3 files changed, 7 insertions(+), 4 deletions(-)
+
+commit 941b6992042e7b73b3a2aab1448383adf33bef28
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 20:47:33 2013 +0200
+
+ [otlayout] Remove unused HB_OT_LAYOUT_GLYPH_PROPS_UNCLASSIFIED
+
+ src/hb-ot-layout-gdef-table.hh | 7 +++++--
+ src/hb-ot-layout-private.hh | 10 ++++------
+ 2 files changed, 9 insertions(+), 8 deletions(-)
+
+commit 8f9ec92dfce5c469fb85ad301296b5dde1b2ab0a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 19:52:47 2013 +0200
+
+ [indic] Adjust Javanese base algorithm
+
+ src/hb-ot-shape-complex-indic.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 49901862e36e1c153835877a9f1183729333bbbe
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 19:48:51 2013 +0200
+
+ [otlayout] Guard against use of ReverseChain through Context
+
+ src/hb-ot-layout-gsub-table.hh | 4 +++-
+ src/hb-ot-layout.cc | 4 ++--
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+commit 74f4bbf0560a5fd2d295e100e96f0c6c7033e852
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 19:07:53 2013 +0200
+
+ [indic] Towards supporting atomicly-encoded prebase-reorderings
+
+ src/hb-ot-shape-complex-indic.cc | 65
+ ++++++++++++++++++++++++----------------
+ 1 file changed, 40 insertions(+), 25 deletions(-)
+
+commit efed40b975110d78c9c505441e7e17a8c13e85c8
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 18:50:11 2013 +0200
+
+ [indic] Minor refactoring of reph handling
+
+ src/hb-ot-shape-complex-indic.cc | 14 ++++++++------
+ src/hb-ot-shape-complex-sea.cc | 2 +-
+ 2 files changed, 9 insertions(+), 7 deletions(-)
+
+commit 684fe59ff858a0ecba71b3ed80378afb0b8bbb48
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 18:30:06 2013 +0200
+
+ [indic] Minor refactoring of would_substitute()
+
+ src/hb-ot-shape-complex-indic.cc | 19 ++++++++++---------
+ 1 file changed, 10 insertions(+), 9 deletions(-)
+
+commit 321df83fb4f0b8a5310888129cb70bfda8ae0c96
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 18:16:14 2013 +0200
+
+ Route Buginese through the SEA shaper
+
+ Both Indic and SEA seem to do it just fine, but SEA is much
+ simpler.
+
+ src/hb-ot-shape-complex-private.hh | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+commit b5a0f69e47ace468b06e21cf069a18ddcfcf6064
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 18:04:23 2013 +0200
+
+ [indic] Pass zero-context=false to would_substitute for newer scripts
+
+ For scripts without an old/new spec distinction, use
+ zero-context=false.
+ This changes behavior in Sinhala / Khmer, but doesn't seem to regress.
+ This will be useful and used in Javanese.
+
+ src/hb-ot-shape-complex-indic.cc | 35 +++++++++++++++++++----------------
+ 1 file changed, 19 insertions(+), 16 deletions(-)
+
+commit c4e71ff36d1f86a6ea56539728a964d97217e2b6
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 17:04:47 2013 +0200
+
+ [indic] Clean up Khmer and Sinhala base finding algorithm
+
+ src/hb-ot-shape-complex-indic.cc | 24 +++++++++++-------------
+ 1 file changed, 11 insertions(+), 13 deletions(-)
+
+commit e10453e6fb2544724ccd7ddfdbb9de90ef9274ce
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 16:49:06 2013 +0200
+
+ [indic] Add BASE_POS_LAST_SINHALA
+
+ Previously we planted this into the mode used for Khmer. There's not
+ really much in common between the two, so separate again.
+
+ src/hb-ot-shape-complex-indic.cc | 21 +++++++++++++++++++--
+ 1 file changed, 19 insertions(+), 2 deletions(-)
+
+commit 9ac6b01e0cd8e2d66dfc727157f45b615bc77109
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 16:27:38 2013 +0200
+
+ [indic] Adjust Sinhala cluster merging under uniscribe
+
+ Similar to 190c8f2b60af0851bf692f653c1604cfbf0561a5 but for
+ Sinhala.
+
+ src/hb-ot-shape-complex-indic.cc | 23 ++++++++++++++++-------
+ 1 file changed, 16 insertions(+), 7 deletions(-)
+
+commit 3c3df9cba13fec2c35e0e7ae587d9699ac0c37f5
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 13:58:31 2013 +0200
+
+ [otlayout] Minor
+
+ src/hb-ot-layout-gsubgpos-private.hh | 62
+ +++++++++++++++++++-----------------
+ 1 file changed, 33 insertions(+), 29 deletions(-)
+
+commit 6cc136f7531a45e71ea08a7dc8a2187172cb813d
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 13:55:48 2013 +0200
+
+ [otlayout] Minor
+
+ src/hb-ot-layout-gsubgpos-private.hh | 14 ++++++--------
+ 1 file changed, 6 insertions(+), 8 deletions(-)
+
+commit ba6ddc421e5e440231c2ece2db1363f8e6d2ecbf
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 13:52:51 2013 +0200
+
+ [otlayout] Increase MAX_CONTEXT_LENGTH
+
+ It's cheap.
+
+ src/hb-ot-layout-common-private.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e714fe6d6a2633494cb1fa7170a32ca2638cbb51
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 13:49:51 2013 +0200
+
+ [otlayout] Simplify ligate_input()
+
+ Shouldn't change behavior at all, but is faster / more robust.
+
+ src/hb-ot-layout-gsub-table.hh | 16 +++++++---------
+ src/hb-ot-layout-gsubgpos-private.hh | 17 +++++++----------
+ 2 files changed, 14 insertions(+), 19 deletions(-)
+
+commit 6b2abdcd203204131f3017ca85c91de9d43959cd
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 13:15:43 2013 +0200
+
+ [indic] Improve clusters in presence of reph
+
+ src/hb-ot-shape-complex-indic.cc | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+commit 42d0f55cbc68285e22d713df7062e520af708c82
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 13:05:05 2013 +0200
+
+ [indic] Apply calt,clig in the same stage as presentation features
+
+ Whic means these twp are applied per-syllable now. Apparently
+ in some Khmer fonts the clig interacts with presentation features.
+
+ Test case: U+1781,U+17D2,U+1789,U+17BB,U+17C6 with Mondulkiri-R.ttf
+ should produce one big ligature.
+
+ src/hb-ot-shape-complex-indic.cc | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit ae9a5834df477006686421d494b55a1569789327
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 12:24:55 2013 +0200
+
+ [indic] Fix pref vs blwf interaction
+
+ If a glyph can be both blwf and pref, we were wrongly sorting it
+ in the post position instead of below position.
+
+ src/hb-ot-shape-complex-indic.cc | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit c7dacac02cfe8526eaf131ce6c5e7b6df7ca2ccd
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 12:20:24 2013 +0200
+
+ [indic] Don't apply blwf before base under old-spec mode
+
+ Test case: U+09AC,U+09CD,U+09A6 with Lohit-Bengali 2.5.3.
+
+ src/hb-ot-shape-complex-indic.cc | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit da72042c52ed3cc0ee19d3eabb8db7c7dd34d3ed
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 17 12:01:50 2013 +0200
+
+ [otlayout] Fix up recent Context matching change
+
+ Commit 6b65a76b40522a4f57a6fedcbdfc5a4d736f1d3c. "end" was becoming
+ negative. Was trigerred by Lohit-Kannada 2.5.3 and the sequence:
+ U+0CB0,U+200D,U+0CBE,U+0CB7,U+0CCD,U+0C9F,U+0CCD,U+0CB0,U+0C97,U+0CB3
+ Two glyphs were being duplicated.
+
+ src/hb-buffer.cc | 7 ++++++-
+ src/hb-ot-layout-gsubgpos-private.hh | 3 ++-
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 1a7de1ba9876b0554c758acbc6459366d9d98a5d
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Oct 16 19:55:06 2013 +0200
+
+ [indic] Improve Avagraha support in machine
+
+ src/hb-ot-shape-complex-indic-machine.rl | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+commit 3756efaf4e14ec3b5b1def700a1b5985f162372b
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Oct 16 19:06:29 2013 +0200
+
+ [indic] Misc harmless fixes!
+
+ First, we were abusing OT_VD instead of OT_A. Fix that
+ but moving OT_A in the grammar where it belongs (which
+ is different from what the spec says).
+
+ Also, only allow medial consonants after all other
+ consonants. This doesn't affect any current character.
+
+ Finally, fix Halant attachment in presence of medial
+ consonants. Again, this currently doesn't affect any
+ sequence.
+
+ I lied. There's Gurmukhi U+0A75 which is Consonant_Medial.
+ Uniscribe allows one of those in each of these positions:
+ before matras, after matras and before syllable modifiers,
+ and after syllable modifiers! We currently just allow
+ unlimited numbers of it, before matras.
+
+ src/hb-ot-shape-complex-indic-machine.rl | 8 ++++----
+ src/hb-ot-shape-complex-indic-private.hh | 2 +-
+ src/hb-ot-shape-complex-indic.cc | 11 ++++++-----
+ 3 files changed, 11 insertions(+), 10 deletions(-)
+
+commit c52ddab72e025d1bee8274c8f3416208b12f68f1
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Oct 16 13:42:38 2013 +0200
+
+ [arabic] Make ZWJ prevent ligatures instead of facilitating it
+
+ Unicode 6.2.0 Section 16.2 / Figure 16.3 says:
+
+ "For backward compatibility, between Arabic characters a ZWJ acts just
+ like the sequence <ZWJ, ZWNJ, ZWJ>, preventing a ligature from forming
+ instead of requesting the use of a ligature that would not normally be
+ used. As a result, there is no plain text mechanism for requesting the
+ use of a ligature in Arabic text."
+
+ As such, we flip internal zwj to zwnj flags for GSUB matching, which
+ means it will block ligation in all features, unless the font
+ explicitly matches U+200D glyph. This doesn't affect joining
+ behavior.
+
+ src/hb-ot-layout-private.hh | 6 ++++++
+ src/hb-ot-shape-complex-arabic.cc | 18 ++++++++++++++++++
+ 2 files changed, 24 insertions(+)
+
+commit 1a31f9f820c4538015ddaf4ca2b790649c5997ed
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Oct 16 13:42:18 2013 +0200
+
+ [otlayout] Minor
+
+ src/hb-ot-layout-private.hh | 23 +++++++++++++++--------
+ 1 file changed, 15 insertions(+), 8 deletions(-)
+
+commit 28d5daec948e1a24f13e492ce301aeb9abff37c8
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Oct 16 12:32:12 2013 +0200
+
+ [indic] More granular post-base cluster merging!
+
+ src/hb-ot-shape-complex-indic.cc | 45
+ ++++++++++++++++++++++++++++++++++------
+ 1 file changed, 39 insertions(+), 6 deletions(-)
+
+commit 9cb59d460e80d769087045535a8d54ec9ed7985c
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Oct 16 11:34:07 2013 +0200
+
+ [indic] Fix cluster merging of left matras
+
+ The merge_clusters there was totally broken.
+
+ src/hb-ot-shape-complex-indic.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 190c8f2b60af0851bf692f653c1604cfbf0561a5
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Oct 16 11:33:18 2013 +0200
+
+ [indic] Adjust cluster merging under uniscribe mode for Tamil
+
+ Apparently Uniscribe Tamil shaper doesn't ship chubby clusters
+ for Tamil. Adjust to that.
+
+ src/hb-ot-shape-complex-indic.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 5c558877da5db8c734ba072f01e5e4797876619c
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Oct 16 11:14:15 2013 +0200
+
+ [indic] Allow up to two syllable modifiers
+
+ Bug 70509 - Candrabindu+Visarga doesn't work in Devanagari
+ https://bugs.freedesktop.org/show_bug.cgi?id=70509
+
+ We categorize both bindus and visarga as syllable-modifiers.
+ OT spec doesn't actually say what characters go in the syllable
+ modifier category, and allows one. We just allow up to two now.
+
+ Test case: U+0930,U+0941,U+0901,U+0903
+
+ Uniscribe currently doesn't support that and produces a
+ dotted circle.
+
+ src/hb-ot-shape-complex-indic-machine.rl |
+ 2 +-
+ .../texts/in-tree/shaper-indic/indic/script-devanagari/misc/misc.txt |
+ 1 +
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+commit f5299eff5c0065d6329cd536c0ac339abea085b0
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Oct 15 18:13:07 2013 +0200
+
+ [indic] Simplify reph logic
+
+ *Shouldn't* break anything.
+
+ src/hb-ot-shape-complex-indic.cc | 11 +++--------
+ 1 file changed, 3 insertions(+), 8 deletions(-)
+
+commit 65a929b1c033e91919c931b495a775f76b6dcbb3
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Oct 15 18:08:05 2013 +0200
+
+ [indic] If Malayalam dot-reph formed a ligature, don't move it
+
+ Rachana-0.6 implements dot-reph by ligation, so we shouldn't move it.
+ Uniscribe doesn't either. Test case:
+
+ U+0D4E,U+0D1A,U+0D4D,U+0D1A,U+0D4D
+
+ src/hb-ot-shape-complex-indic.cc | 23
+ ++++++++++++++++------
+ .../indic/script-malayalam/misc/dot-reph.txt | 3 +++
+ 2 files changed, 20 insertions(+), 6 deletions(-)
+
+commit a01cbf6cbe0021722302cfb58fb638a0a2427b26
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Oct 15 16:37:53 2013 +0200
+
+ [indic] Harmless reordering of Khmer features!
+
+ src/hb-ot-shape-complex-indic.cc | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+commit c46f406973024051877e867b93614942ff80c107
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Oct 15 16:24:21 2013 +0200
+
+ [tests] Remove Myanmar micro-font and test
+
+ .../sha1sum/ceadd106a8205214fbe7337ef9de32a862b59762.ttf | Bin 3040 ->
+ 0 bytes
+ test/shaping/tests/context-matching.tests | 1 -
+ 2 files changed, 1 deletion(-)
+
+commit eb10233b267909dee0245f126000e117f3b21c35
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Oct 15 15:26:44 2013 +0200
+
+ [indic] Apply 'kern' for all scripts except for Khmer in Uniscribe
+ mode
+
+ Seems to better match Uniscribe.
+
+ Note: NotoSansTelugu-Regular has kern feature, so this fixes most
+ of the
+ positioning failures there, except for the kern pairs blocked by a
+ (non-)joiner, in which case we (correctly) kern, but Uniscribe
+ doesn't.
+
+ src/hb-ot-shape-complex-indic.cc | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+commit 30145272a7d428bc62a903388bd7be43f4da7fc3
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Oct 15 13:47:27 2013 +0200
+
+ [indic] Don't apply presentation features across syllables
+
+ More like Uniscribe... We still allow user-defined features to
+ work across syllables, but not pres,blws,abs,psts,etc.
+
+ This "regressed" Sinhala numbers by 11. These are cases were
+ there's Consonant followed by Ra,Halant,ZWJ at the of text.
+ The Ra,Halant,ZWJ ends up forming reph, which is wrong...
+ But before we were also ligating that reph with the previous
+ consonant. That's even more wrong. That's also what Uniscribe
+ does.
+
+ Current numbers:
+
+ BENGALI: 353732 out of 354188 tests passed. 456 failed (0.128745%)
+ DEVANAGARI: 707307 out of 707394 tests passed. 87 failed (0.0122987%)
+ GUJARATI: 366349 out of 366457 tests passed. 108 failed (0.0294714%)
+ GURMUKHI: 60732 out of 60747 tests passed. 15 failed (0.0246926%)
+ KANNADA: 951030 out of 951913 tests passed. 883 failed (0.0927606%)
+ KHMER: 299070 out of 299124 tests passed. 54 failed (0.0180527%)
+ MALAYALAM: 1048140 out of 1048334 tests passed. 194 failed
+ (0.0185056%)
+ ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%)
+ SINHALA: 271655 out of 271847 tests passed. 192 failed (0.070628%)
+ TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%)
+ TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%)
+
+ src/hb-ot-shape-complex-indic.cc | 21
+ +++++++++++++++++----
+ .../shaper-indic/indic/script-sinhala/misc/misc.txt | 1 +
+ 2 files changed, 18 insertions(+), 4 deletions(-)
+
+commit 3c7b3641cfb00f2c4dcc0768b9854e4f4410d15f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Oct 15 11:21:01 2013 +0200
+
+ [indic] Handle Avagraha
+
+ It can come either at the end(ish!) of the syllable, or independently.
+ When independent, it accepts a few bits and pieces.
+
+ src/hb-ot-shape-complex-indic-machine.rl | 5 ++++-
+ src/hb-ot-shape-complex-indic-private.hh | 5 +++--
+ src/hb-ot-shape-complex-indic.cc | 14
+ +++++++++++++-
+ .../shaper-indic/indic/script-devanagari/misc/misc.txt | 1 +
+ .../in-tree/shaper-indic/indic/script-telugu/misc/misc.txt | 1 +
+ 5 files changed, 22 insertions(+), 4 deletions(-)
+
+commit 5e7432b8172473aa4dda3d51a79add9e97c2d2c1
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Oct 15 12:28:23 2013 +0200
+
+ [myanmar] Apply abvm/blwm
+
+ src/hb-ot-shape-complex-myanmar.cc | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit 8acbb6be271817c12d2ee0066b355e2fb0f9a934
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Oct 15 12:15:49 2013 +0200
+
+ [indic] Some scripts like blwf applied to pre-base characters
+
+ ...while some don't!
+
+ Improved Bengali, Devanagari, Gurmukhi, Malayalam.
+
+ Updated numbers:
+
+ BENGALI: 353732 out of 354188 tests passed. 456 failed (0.128745%)
+ DEVANAGARI: 707307 out of 707394 tests passed. 87 failed (0.0122987%)
+ GUJARATI: 366349 out of 366457 tests passed. 108 failed (0.0294714%)
+ GURMUKHI: 60732 out of 60747 tests passed. 15 failed (0.0246926%)
+ KANNADA: 951030 out of 951913 tests passed. 883 failed (0.0927606%)
+ KHMER: 299070 out of 299124 tests passed. 54 failed (0.0180527%)
+ MALAYALAM: 1048134 out of 1048334 tests passed. 200 failed
+ (0.0190779%)
+ ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%)
+ SINHALA: 271666 out of 271847 tests passed. 181 failed (0.0665816%)
+ TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%)
+ TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%)
+
+ src/hb-ot-shape-complex-indic.cc | 33 ++++++++++++++++++++-------------
+ 1 file changed, 20 insertions(+), 13 deletions(-)
+
+commit 2c85a3df0983f28aed77a0ea3bf2417ef65d4b84
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Oct 14 19:41:52 2013 +0200
+
+ Fix issue with automake
+
+ test/shaping/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6b65a76b40522a4f57a6fedcbdfc5a4d736f1d3c
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Oct 14 18:51:39 2013 +0200
+
+ [otlayout] Fix (Chain)Context recursion!
+
+ Previously we only supported recursive sublookups with
+ ascending indices. We were also not correctly handling
+ non-1-to-1 recursed lookups.
+
+ Fix all that!
+
+ Fixes the three tests in test/shaping/tests/context-matching.tests,
+ which were derived from NotoSansBengali and NotoSansDevanagari
+ among others.
+
+ src/hb-buffer-private.hh | 4 +
+ src/hb-buffer.cc | 46 ++++++++++
+ src/hb-ot-layout-common-private.hh | 1 +
+ src/hb-ot-layout-gsub-table.hh | 1 +
+ src/hb-ot-layout-gsubgpos-private.hh | 157
+ +++++++++++++++++------------------
+ 5 files changed, 127 insertions(+), 82 deletions(-)
+
+commit 841e20d083aec8d814cd8d90aa6ab60127c0d1f2
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Oct 14 18:47:51 2013 +0200
+
+ Add test suite for shaping results
+
+ The new test suite runs tests included under
+ hb/test/shaping/tests/*.tests, which themselves reference
+ font files stored by sha1sum under hb/test/shaping/fonts/sha1sum.
+ The fonts are produced using a subsetter to only include glyphs
+ needed to run the test.
+
+ Four initial tests are added for (Chain)Context matching,
+ of which three currently fail.
+
+ test/shaping/Makefile.am | 10 +++++-
+ .../4cce528e99f600ed9c25a2b69e32eb94a03b4ae8.ttf | Bin 0 -> 1320 bytes
+ .../ceadd106a8205214fbe7337ef9de32a862b59762.ttf | Bin 0 -> 3040 bytes
+ .../d629e7fedc0b350222d7987345fe61613fa3929a.ttf | Bin 0 -> 1768 bytes
+ .../f499fbc23865022234775c43503bba2e63978fe1.ttf | Bin 0 -> 3564 bytes
+ test/shaping/run-tests.sh | 34
+ +++++++++++++++++++++
+ test/shaping/tests/MANIFEST | 1 +
+ test/shaping/tests/context-matching.tests | 4 +++
+ 8 files changed, 48 insertions(+), 1 deletion(-)
+
+commit e2dab69291a5d86fc90a8c273c458c16574eafb5
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Oct 14 16:44:44 2013 +0200
+
+ Minor
+
+ test/shaping/hb_test_tools.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 4e6e53db5da0a5da87ae732c3f9d01babf4ae6c2
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Oct 14 13:06:36 2013 +0200
+
+ [otlayout] "Minor"
+
+ src/hb-ot-layout.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 9326d48e4309901e7e0b0e15230936a21ee3df72
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 10 20:04:42 2013 +0200
+
+ Don't use g_mapped_file_unref()
+
+ Was introduced in glib 2.22.
+
+ src/test-buffer-serialize.cc | 2 +-
+ src/test-size-params.cc | 2 +-
+ src/test-would-substitute.cc | 2 +-
+ src/test.cc | 2 +-
+ util/options.cc | 4 ++--
+ 5 files changed, 6 insertions(+), 6 deletions(-)
+
+commit e152d1a27891bd1d9d46a9c028c026843bad384a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Oct 3 15:09:37 2013 -0400
+
+ 0.9.22
+
+ NEWS | 13 +++++++++++++
+ configure.ac | 2 +-
+ 2 files changed, 14 insertions(+), 1 deletion(-)
+
commit 27674b4bb351e501373bd9994e4ba6546e465cf7
Author: Behdad Esfahbod <behdad@behdad.org>
Date: Thu Oct 3 14:54:50 2013 -0400
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/Makefile.am
index 15ccbf87134..15ccbf87134 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/Makefile.am
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/Makefile.am
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/NEWS b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/NEWS
index ae4bc2bc089..3636f77086c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/NEWS
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/NEWS
@@ -1,3 +1,13 @@
+Overview of changes leading to 0.9.23
+Monday, October 28, 2013
+=====================================
+
+- "Udupi HarfBuzz Hackfest", Paris, October 14..18 2013.
+- Fix (Chain)Context recursion with non-monotone lookup positions.
+- Misc Indic bug fixes.
+- New Javanese / Buginese shaping, similar to Windows 8.1.
+
+
Overview of changes leading to 0.9.22
Thursday, October 3, 2013
=====================================
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/README b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/README
index 74e739da52a..74e739da52a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/README
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/README
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/THANKS b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/THANKS
index 940cfde5c39..940cfde5c39 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/THANKS
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/THANKS
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/TODO b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/TODO
index e1aa39c4c01..e1aa39c4c01 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/TODO
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/TODO
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/autogen.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/autogen.sh
index 6f4e903d745..6f4e903d745 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/autogen.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/autogen.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/config.h.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/config.h.in
index 3e906b18416..3e906b18416 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/config.h.in
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/config.h.in
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/configure.ac
index 17a7fb91f52..d1c40da4d39 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/configure.ac
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/configure.ac
@@ -1,6 +1,6 @@
AC_PREREQ([2.64])
AC_INIT([HarfBuzz],
- [0.9.22],
+ [0.9.23],
[http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz],
[harfbuzz],
[http://harfbuzz.org/])
@@ -9,7 +9,7 @@ AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([src/harfbuzz.pc.in])
AC_CONFIG_HEADERS([config.h])
-AM_INIT_AUTOMAKE([1.11.1 gnits dist-bzip2 no-dist-gzip -Wall no-define color-tests -Wno-portability])
+AM_INIT_AUTOMAKE([1.11.1 gnits tar-pax dist-bzip2 no-dist-gzip -Wall no-define color-tests -Wno-portability])
AM_SILENT_RULES([yes])
# Initialize libtool
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/gtk-doc.make b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/gtk-doc.make
index 104c3993f3e..9841de47922 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/gtk-doc.make
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/gtk-doc.make
@@ -74,40 +74,31 @@ $(REPORT_FILES): sgml-build.stamp
#### setup ####
-GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_$(V))
-GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY))
-GTK_DOC_V_SETUP_0=@echo " DOC Preparing build";
-
setup-build.stamp:
- -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ -@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ echo ' DOC Preparing build'; \
files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \
if test "x$$files" != "x" ; then \
for file in $$files ; do \
test -f $(abs_srcdir)/$$file && \
- cp -pu $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \
+ cp -pu $(abs_srcdir)/$$file $(abs_builddir)/ || true; \
done; \
fi; \
fi
- $(AM_V_at)touch setup-build.stamp
+ @touch setup-build.stamp
#### scan ####
-GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_$(V))
-GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY))
-GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files";
-
-GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_$(V))
-GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY))
-GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects";
-
scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
- $(GTK_DOC_V_SCAN)_source_dir='' ; \
+ @echo ' DOC Scanning header files'
+ @_source_dir='' ; \
for i in $(DOC_SOURCE_DIR) ; do \
_source_dir="$${_source_dir} --source-dir=$$i" ; \
done ; \
gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES)
- $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \
+ @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \
+ echo " DOC Introspecting gobjects"; \
scanobj_options=""; \
gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \
if test "$(?)" = "0"; then \
@@ -122,41 +113,32 @@ scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
test -f $$i || touch $$i ; \
done \
fi
- $(AM_V_at)touch scan-build.stamp
+ @touch scan-build.stamp
$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
@true
#### xml ####
-GTK_DOC_V_XML=$(GTK_DOC_V_XML_$(V))
-GTK_DOC_V_XML_=$(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY))
-GTK_DOC_V_XML_0=@echo " DOC Building XML";
-
sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files)
- $(GTK_DOC_V_XML)_source_dir='' ; \
+ @echo ' DOC Building XML'
+ @_source_dir='' ; \
for i in $(DOC_SOURCE_DIR) ; do \
_source_dir="$${_source_dir} --source-dir=$$i" ; \
done ; \
gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS)
- $(AM_V_at)touch sgml-build.stamp
+ @touch sgml-build.stamp
sgml.stamp: sgml-build.stamp
@true
#### html ####
-GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_$(V))
-GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY))
-GTK_DOC_V_HTML_0=@echo " DOC Building HTML";
-
-GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_$(V))
-GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY))
-GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references";
-
html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
- $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \
- mkhtml_options=""; \
+ @echo ' DOC Building HTML'
+ @rm -rf html
+ @mkdir html
+ @mkhtml_options=""; \
gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \
if test "$(?)" = "0"; then \
if test "x$(V)" = "x1"; then \
@@ -177,18 +159,16 @@ html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
cp $(abs_builddir)/$$file $(abs_builddir)/html; \
fi; \
done;
- $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
- $(AM_V_at)touch html-build.stamp
+ @echo ' DOC Fixing cross-references'
+ @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+ @touch html-build.stamp
#### pdf ####
-GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_$(V))
-GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY))
-GTK_DOC_V_PDF_0=@echo " DOC Building PDF";
-
pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
- $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \
- mkpdf_options=""; \
+ @echo ' DOC Building PDF'
+ @rm -f $(DOC_MODULE).pdf
+ @mkpdf_options=""; \
gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \
if test "$(?)" = "0"; then \
if test "x$(V)" = "x1"; then \
@@ -205,7 +185,7 @@ pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
done; \
fi; \
gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS)
- $(AM_V_at)touch pdf-build.stamp
+ @touch pdf-build.stamp
##############
@@ -220,7 +200,7 @@ distclean-local:
rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \
fi
-maintainer-clean-local:
+maintainer-clean-local: clean
@rm -rf xml html
install-data-local:
@@ -257,7 +237,7 @@ uninstall-local:
# Require gtk-doc when making dist
#
if ENABLE_GTK_DOC
-dist-check-gtkdoc: docs
+dist-check-gtkdoc:
else
dist-check-gtkdoc:
@echo "*** gtk-doc must be installed and enabled in order to make dist"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/harfbuzz.doap b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/harfbuzz.doap
index d2896ebefa8..d2896ebefa8 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/harfbuzz.doap
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/harfbuzz.doap
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/Makefile.am
index 81802252fd7..81802252fd7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/Makefile.am
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/Makefile.am
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-c-linkage-decls.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-c-linkage-decls.sh
index b10310f5384..b10310f5384 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-c-linkage-decls.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-c-linkage-decls.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-defs.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-defs.sh
index d7a8ec281bf..d7a8ec281bf 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-defs.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-defs.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-header-guards.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-header-guards.sh
index 9a3302c7f87..9a3302c7f87 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-header-guards.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-header-guards.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-includes.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-includes.sh
index 5643c6973bc..5643c6973bc 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-includes.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-includes.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-libstdc++.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-libstdc++.sh
index e7e0e295e1a..e7e0e295e1a 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-libstdc++.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-libstdc++.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-static-inits.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-static-inits.sh
index bb0a7ff630d..bb0a7ff630d 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-static-inits.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-static-inits.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-symbols.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-symbols.sh
index 67bdf71e1b1..67bdf71e1b1 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/check-symbols.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/check-symbols.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/gen-arabic-table.py b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/gen-arabic-table.py
index da5a4fcbf5c..da5a4fcbf5c 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/gen-arabic-table.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/gen-arabic-table.py
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/gen-indic-table.py b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/gen-indic-table.py
index 9ed3fd6d34d..9ed3fd6d34d 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/gen-indic-table.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/gen-indic-table.py
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/harfbuzz-gobject.pc.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/harfbuzz-gobject.pc.in
index 70083601901..70083601901 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/harfbuzz-gobject.pc.in
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/harfbuzz-gobject.pc.in
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/harfbuzz-icu.pc.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/harfbuzz-icu.pc.in
index 949869a3563..949869a3563 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/harfbuzz-icu.pc.in
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/harfbuzz-icu.pc.in
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/harfbuzz.pc.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/harfbuzz.pc.in
index 7f27bbbdef0..7f27bbbdef0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/harfbuzz.pc.in
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/harfbuzz.pc.in
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-atomic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-atomic-private.hh
index 9cc3bc5587c..9cc3bc5587c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-atomic-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-atomic-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-blob.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-blob.cc
index 7a659b26b97..7a659b26b97 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-blob.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-blob.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-blob.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-blob.h
index d3d0f41b11c..d3d0f41b11c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-blob.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-blob.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-deserialize-json.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-deserialize-json.hh
index dead700db82..dead700db82 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-deserialize-json.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-deserialize-json.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-deserialize-json.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-deserialize-json.rl
index 7351b2ab47c..7351b2ab47c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-deserialize-json.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-deserialize-json.rl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-deserialize-text.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-deserialize-text.hh
index a38efe3a415..a38efe3a415 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-deserialize-text.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-deserialize-text.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-deserialize-text.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-deserialize-text.rl
index 8856580fbe3..8856580fbe3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-deserialize-text.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-deserialize-text.rl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-private.hh
index a8cf7702446..703239035f0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-private.hh
@@ -103,6 +103,8 @@ struct hb_buffer_t {
inline unsigned int backtrack_len (void) const
{ return have_output? out_len : idx; }
+ inline unsigned int lookahead_len (void) const
+ { return len - idx; }
inline unsigned int next_serial (void) { return serial++; }
HB_INTERNAL void allocate_var (unsigned int byte_i, unsigned int count, const char *owner);
@@ -134,6 +136,7 @@ struct hb_buffer_t {
HB_INTERNAL void output_info (const hb_glyph_info_t &glyph_info);
/* Copies glyph at idx to output but doesn't advance idx */
HB_INTERNAL void copy_glyph (void);
+ HB_INTERNAL bool move_to (unsigned int i); /* i is output-buffer index. */
/* Copies glyph at idx to output and advance idx.
* If there's no output, just advance idx. */
inline void
@@ -181,6 +184,7 @@ struct hb_buffer_t {
{ return likely (size < allocated) ? true : enlarge (size); }
HB_INTERNAL bool make_room_for (unsigned int num_in, unsigned int num_out);
+ HB_INTERNAL bool shift_forward (unsigned int count);
HB_INTERNAL void *get_scratch_buffer (unsigned int *size);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-serialize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-serialize.cc
index b32092cf0b3..b32092cf0b3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer-serialize.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer-serialize.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer.cc
index 54626db2830..867438a906a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer.cc
@@ -139,6 +139,19 @@ hb_buffer_t::make_room_for (unsigned int num_in,
return true;
}
+bool
+hb_buffer_t::shift_forward (unsigned int count)
+{
+ assert (have_output);
+ if (unlikely (!ensure (len + count))) return false;
+
+ memmove (info + idx + count, info + idx, (len - idx) * sizeof (info[0]));
+ len += count;
+ idx += count;
+
+ return true;
+}
+
void *
hb_buffer_t::get_scratch_buffer (unsigned int *size)
{
@@ -345,6 +358,44 @@ hb_buffer_t::copy_glyph (void)
out_len++;
}
+bool
+hb_buffer_t::move_to (unsigned int i)
+{
+ if (!have_output)
+ {
+ assert (i <= len);
+ idx = i;
+ return true;
+ }
+
+ assert (i <= out_len + (len - idx));
+
+ if (out_len < i)
+ {
+ unsigned int count = i - out_len;
+ if (unlikely (!make_room_for (count, count))) return false;
+
+ memmove (out_info + out_len, info + idx, count * sizeof (out_info[0]));
+ idx += count;
+ out_len += count;
+ }
+ else if (out_len > i)
+ {
+ /* Tricky part: rewinding... */
+ unsigned int count = out_len - i;
+
+ if (unlikely (idx < count && !shift_forward (count + 32))) return false;
+
+ assert (idx >= count);
+
+ idx -= count;
+ out_len -= count;
+ memmove (info + idx, out_info + out_len, count * sizeof (out_info[0]));
+ }
+
+ return true;
+}
+
void
hb_buffer_t::replace_glyph (hb_codepoint_t glyph_index)
{
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer.h
index 87c4ce58e83..3086851b012 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-buffer.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-buffer.h
@@ -172,10 +172,10 @@ hb_buffer_guess_segment_properties (hb_buffer_t *buffer);
typedef enum { /*< flags >*/
- HB_BUFFER_FLAG_DEFAULT = 0x00000000,
- HB_BUFFER_FLAG_BOT = 0x00000001, /* Beginning-of-text */
- HB_BUFFER_FLAG_EOT = 0x00000002, /* End-of-text */
- HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES = 0x00000004
+ HB_BUFFER_FLAG_DEFAULT = 0x00000000u,
+ HB_BUFFER_FLAG_BOT = 0x00000001u, /* Beginning-of-text */
+ HB_BUFFER_FLAG_EOT = 0x00000002u, /* End-of-text */
+ HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES = 0x00000004u
} hb_buffer_flags_t;
void
@@ -275,10 +275,10 @@ hb_buffer_normalize_glyphs (hb_buffer_t *buffer);
*/
typedef enum { /*< flags >*/
- HB_BUFFER_SERIALIZE_FLAG_DEFAULT = 0x00000000,
- HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS = 0x00000001,
- HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS = 0x00000002,
- HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES = 0x00000004
+ HB_BUFFER_SERIALIZE_FLAG_DEFAULT = 0x00000000u,
+ HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS = 0x00000001u,
+ HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS = 0x00000002u,
+ HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES = 0x00000004u
} hb_buffer_serialize_flags_t;
typedef enum {
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-cache-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-cache-private.hh
index 19b70b7e395..19b70b7e395 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-cache-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-cache-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-common.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-common.cc
index cf24660f798..cf24660f798 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-common.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-common.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-common.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-common.h
index 40c18872964..e445504550b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-common.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-common.h
@@ -90,7 +90,7 @@ typedef union _hb_var_int_t {
typedef uint32_t hb_tag_t;
-#define HB_TAG(a,b,c,d) ((hb_tag_t)((((uint8_t)(a))<<24)|(((uint8_t)(b))<<16)|(((uint8_t)(c))<<8)|((uint8_t)(d))))
+#define HB_TAG(c1,c2,c3,c4) ((hb_tag_t)((((uint8_t)(c1))<<24)|(((uint8_t)(c2))<<16)|(((uint8_t)(c3))<<8)|((uint8_t)(c4))))
#define HB_UNTAG(tag) ((uint8_t)((tag)>>24)), ((uint8_t)((tag)>>16)), ((uint8_t)((tag)>>8)), ((uint8_t)(tag))
#define HB_TAG_NONE HB_TAG(0,0,0,0)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-coretext.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-coretext.cc
index f780973565b..f780973565b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-coretext.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-coretext.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-coretext.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-coretext.h
index c4954fa1b2c..c4954fa1b2c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-coretext.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-coretext.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-deprecated.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-deprecated.h
index 30ae4b1caf7..30ae4b1caf7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-deprecated.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-deprecated.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-face-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-face-private.hh
index b33be0e5fce..b33be0e5fce 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-face-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-face-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-face.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-face.cc
index ebe8ec5e5d5..ebe8ec5e5d5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-face.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-face.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-face.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-face.h
index f682c468de5..f682c468de5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-face.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-face.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-fallback-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-fallback-shape.cc
index 1a1fcfbda1e..1a1fcfbda1e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-fallback-shape.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-fallback-shape.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-font-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-font-private.hh
index 00c0cc3f25f..00c0cc3f25f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-font-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-font-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-font.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-font.cc
index 855864377e7..855864377e7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-font.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-font.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-font.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-font.h
index 7273db43eda..7273db43eda 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-font.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-font.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ft.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ft.cc
index ff1e187b343..113b0eb8502 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ft.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ft.cc
@@ -94,7 +94,7 @@ hb_ft_get_glyph_h_advance (hb_font_t *font HB_UNUSED,
if (unlikely (FT_Get_Advance (ft_face, glyph, load_flags, &v)))
return 0;
- return v >> 10;
+ return (v + (1<<9)) >> 10;
}
static hb_position_t
@@ -112,7 +112,7 @@ hb_ft_get_glyph_v_advance (hb_font_t *font HB_UNUSED,
/* Note: FreeType's vertical metrics grows downward while other FreeType coordinates
* have a Y growing upward. Hence the extra negation. */
- return -v >> 10;
+ return (-v + (1<<9)) >> 10;
}
static hb_bool_t
@@ -418,8 +418,8 @@ hb_ft_font_create (FT_Face ft_face,
_hb_ft_get_font_funcs (),
ft_face, (hb_destroy_func_t) _do_nothing);
hb_font_set_scale (font,
- ((uint64_t) ft_face->size->metrics.x_scale * (uint64_t) ft_face->units_per_EM) >> 16,
- ((uint64_t) ft_face->size->metrics.y_scale * (uint64_t) ft_face->units_per_EM) >> 16);
+ ((uint64_t) ft_face->size->metrics.x_scale * (uint64_t) ft_face->units_per_EM + (1<<15)) >> 16,
+ ((uint64_t) ft_face->size->metrics.y_scale * (uint64_t) ft_face->units_per_EM + (1<<15)) >> 16);
hb_font_set_ppem (font,
ft_face->size->metrics.x_ppem,
ft_face->size->metrics.y_ppem);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ft.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ft.h
index 696251e143f..696251e143f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ft.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ft.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-glib.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-glib.cc
index c35d9966c26..c35d9966c26 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-glib.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-glib.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-glib.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-glib.h
index 63a9d3366c5..63a9d3366c5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-glib.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-glib.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-gobject-enums.cc.tmpl b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-gobject-enums.cc.tmpl
index ca458a3846c..ca458a3846c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-gobject-enums.cc.tmpl
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-gobject-enums.cc.tmpl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-gobject-enums.h.tmpl b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-gobject-enums.h.tmpl
index 6ecda06c2a6..6ecda06c2a6 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-gobject-enums.h.tmpl
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-gobject-enums.h.tmpl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-gobject-structs.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-gobject-structs.cc
index 2451b66291b..2451b66291b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-gobject-structs.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-gobject-structs.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-gobject-structs.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-gobject-structs.h
index 4a88d569e8d..4a88d569e8d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-gobject-structs.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-gobject-structs.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-gobject.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-gobject.h
index ea1bd25df82..ea1bd25df82 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-gobject.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-gobject.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-graphite2.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-graphite2.cc
index 6fe16ca93cd..6fe16ca93cd 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-graphite2.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-graphite2.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-graphite2.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-graphite2.h
index 3eae54acbd8..3eae54acbd8 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-graphite2.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-graphite2.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-icu.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-icu.cc
index c177be2c4b2..c177be2c4b2 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-icu.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-icu.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-icu.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-icu.h
index f2f35f0f2ce..f2f35f0f2ce 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-icu.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-icu.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-mutex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-mutex-private.hh
index 0fb21c2e86e..0fb21c2e86e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-mutex-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-mutex-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-object-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-object-private.hh
index 8a9ae34dbee..8a9ae34dbee 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-object-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-object-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-open-file-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-open-file-private.hh
index 250504ae20b..250504ae20b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-open-file-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-open-file-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-open-type-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-open-type-private.hh
index ee3a21dc3b1..ee3a21dc3b1 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-open-type-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-open-type-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-head-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-head-table.hh
index 0285f0cf310..0285f0cf310 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-head-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-head-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-hhea-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-hhea-table.hh
index 611de8a6665..611de8a6665 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-hhea-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-hhea-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-hmtx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-hmtx-table.hh
index d107cf990a2..d107cf990a2 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-hmtx-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-hmtx-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-common-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-common-private.hh
index 2f6e80468eb..1e75930cda4 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-common-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-common-private.hh
@@ -39,6 +39,7 @@ namespace OT {
#define NOT_COVERED ((unsigned int) -1)
#define MAX_NESTING_LEVEL 8
+#define MAX_CONTEXT_LENGTH 64
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-gdef-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-gdef-table.hh
index d2fd8757fcb..389cbb9e398 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-gdef-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-gdef-table.hh
@@ -383,12 +383,14 @@ struct GDEF
{
unsigned int klass = get_glyph_class (glyph);
+ ASSERT_STATIC ((unsigned int) HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH == (unsigned int) LookupFlag::IgnoreBaseGlyphs);
+ ASSERT_STATIC ((unsigned int) HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE == (unsigned int) LookupFlag::IgnoreLigatures);
+ ASSERT_STATIC ((unsigned int) HB_OT_LAYOUT_GLYPH_PROPS_MARK == (unsigned int) LookupFlag::IgnoreMarks);
+
switch (klass) {
- default:
- case UnclassifiedGlyph: return HB_OT_LAYOUT_GLYPH_PROPS_UNCLASSIFIED;
+ default: return 0;
case BaseGlyph: return HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH;
case LigatureGlyph: return HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE;
- case ComponentGlyph: return HB_OT_LAYOUT_GLYPH_PROPS_COMPONENT;
case MarkGlyph:
klass = get_mark_attachment_type (glyph);
return HB_OT_LAYOUT_GLYPH_PROPS_MARK | (klass << 8);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-gpos-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-gpos-table.hh
index 05a6f5edc7e..103676b05d3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-gpos-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-gpos-table.hh
@@ -390,6 +390,7 @@ struct MarkArray : ArrayOf<MarkRecord> /* Array of MarkRecords--in Coverage orde
unsigned int glyph_pos) const
{
TRACE_APPLY (this);
+ hb_buffer_t *buffer = c->buffer;
const MarkRecord &record = ArrayOf<MarkRecord>::operator[](mark_index);
unsigned int mark_class = record.klass;
@@ -402,15 +403,15 @@ struct MarkArray : ArrayOf<MarkRecord> /* Array of MarkRecords--in Coverage orde
hb_position_t mark_x, mark_y, base_x, base_y;
- mark_anchor.get_anchor (c->font, c->buffer->cur().codepoint, &mark_x, &mark_y);
- glyph_anchor.get_anchor (c->font, c->buffer->info[glyph_pos].codepoint, &base_x, &base_y);
+ mark_anchor.get_anchor (c->font, buffer->cur().codepoint, &mark_x, &mark_y);
+ glyph_anchor.get_anchor (c->font, buffer->info[glyph_pos].codepoint, &base_x, &base_y);
- hb_glyph_position_t &o = c->buffer->cur_pos();
+ hb_glyph_position_t &o = buffer->cur_pos();
o.x_offset = base_x - mark_x;
o.y_offset = base_y - mark_y;
- o.attach_lookback() = c->buffer->idx - glyph_pos;
+ o.attach_lookback() = buffer->idx - glyph_pos;
- c->buffer->idx++;
+ buffer->idx++;
return TRACE_RETURN (true);
}
@@ -439,13 +440,14 @@ struct SinglePosFormat1
inline bool apply (hb_apply_context_t *c) const
{
TRACE_APPLY (this);
- unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
+ hb_buffer_t *buffer = c->buffer;
+ unsigned int index = (this+coverage).get_coverage (buffer->cur().codepoint);
if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
valueFormat.apply_value (c->font, c->direction, this,
- values, c->buffer->cur_pos());
+ values, buffer->cur_pos());
- c->buffer->idx++;
+ buffer->idx++;
return TRACE_RETURN (true);
}
@@ -484,16 +486,17 @@ struct SinglePosFormat2
inline bool apply (hb_apply_context_t *c) const
{
TRACE_APPLY (this);
- unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
+ hb_buffer_t *buffer = c->buffer;
+ unsigned int index = (this+coverage).get_coverage (buffer->cur().codepoint);
if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
if (likely (index >= valueCount)) return TRACE_RETURN (false);
valueFormat.apply_value (c->font, c->direction, this,
&values[index * valueFormat.get_len ()],
- c->buffer->cur_pos());
+ buffer->cur_pos());
- c->buffer->idx++;
+ buffer->idx++;
return TRACE_RETURN (true);
}
@@ -588,6 +591,7 @@ struct PairSet
unsigned int pos) const
{
TRACE_APPLY (this);
+ hb_buffer_t *buffer = c->buffer;
unsigned int len1 = valueFormats[0].get_len ();
unsigned int len2 = valueFormats[1].get_len ();
unsigned int record_size = USHORT::static_size * (1 + len1 + len2);
@@ -597,15 +601,15 @@ struct PairSet
for (unsigned int i = 0; i < count; i++)
{
/* TODO bsearch */
- if (c->buffer->info[pos].codepoint == record->secondGlyph)
+ if (buffer->info[pos].codepoint == record->secondGlyph)
{
valueFormats[0].apply_value (c->font, c->direction, this,
- &record->values[0], c->buffer->cur_pos());
+ &record->values[0], buffer->cur_pos());
valueFormats[1].apply_value (c->font, c->direction, this,
- &record->values[len1], c->buffer->pos[pos]);
+ &record->values[len1], buffer->pos[pos]);
if (len2)
pos++;
- c->buffer->idx = pos;
+ buffer->idx = pos;
return TRACE_RETURN (true);
}
record = &StructAtOffset<PairValueRecord> (record, record_size);
@@ -659,10 +663,11 @@ struct PairPosFormat1
inline bool apply (hb_apply_context_t *c) const
{
TRACE_APPLY (this);
- hb_apply_context_t::skipping_forward_iterator_t skippy_iter (c, c->buffer->idx, 1);
+ hb_buffer_t *buffer = c->buffer;
+ hb_apply_context_t::skipping_forward_iterator_t skippy_iter (c, buffer->idx, 1);
if (skippy_iter.has_no_chance ()) return TRACE_RETURN (false);
- unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
+ unsigned int index = (this+coverage).get_coverage (buffer->cur().codepoint);
if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
if (!skippy_iter.next ()) return TRACE_RETURN (false);
@@ -729,10 +734,11 @@ struct PairPosFormat2
inline bool apply (hb_apply_context_t *c) const
{
TRACE_APPLY (this);
- hb_apply_context_t::skipping_forward_iterator_t skippy_iter (c, c->buffer->idx, 1);
+ hb_buffer_t *buffer = c->buffer;
+ hb_apply_context_t::skipping_forward_iterator_t skippy_iter (c, buffer->idx, 1);
if (skippy_iter.has_no_chance ()) return TRACE_RETURN (false);
- unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
+ unsigned int index = (this+coverage).get_coverage (buffer->cur().codepoint);
if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
if (!skippy_iter.next ()) return TRACE_RETURN (false);
@@ -741,19 +747,19 @@ struct PairPosFormat2
unsigned int len2 = valueFormat2.get_len ();
unsigned int record_len = len1 + len2;
- unsigned int klass1 = (this+classDef1).get_class (c->buffer->cur().codepoint);
- unsigned int klass2 = (this+classDef2).get_class (c->buffer->info[skippy_iter.idx].codepoint);
+ unsigned int klass1 = (this+classDef1).get_class (buffer->cur().codepoint);
+ unsigned int klass2 = (this+classDef2).get_class (buffer->info[skippy_iter.idx].codepoint);
if (unlikely (klass1 >= class1Count || klass2 >= class2Count)) return TRACE_RETURN (false);
const Value *v = &values[record_len * (klass1 * class2Count + klass2)];
valueFormat1.apply_value (c->font, c->direction, this,
- v, c->buffer->cur_pos());
+ v, buffer->cur_pos());
valueFormat2.apply_value (c->font, c->direction, this,
- v + len1, c->buffer->pos[skippy_iter.idx]);
+ v + len1, buffer->pos[skippy_iter.idx]);
- c->buffer->idx = skippy_iter.idx;
+ buffer->idx = skippy_iter.idx;
if (len2)
- c->buffer->idx++;
+ buffer->idx++;
return TRACE_RETURN (true);
}
@@ -875,29 +881,30 @@ struct CursivePosFormat1
inline bool apply (hb_apply_context_t *c) const
{
TRACE_APPLY (this);
+ hb_buffer_t *buffer = c->buffer;
/* We don't handle mark glyphs here. */
- if (c->buffer->cur().glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MARK) return TRACE_RETURN (false);
+ if (unlikely (_hb_glyph_info_is_mark (&buffer->cur()))) return TRACE_RETURN (false);
- hb_apply_context_t::skipping_forward_iterator_t skippy_iter (c, c->buffer->idx, 1);
+ hb_apply_context_t::skipping_forward_iterator_t skippy_iter (c, buffer->idx, 1);
if (skippy_iter.has_no_chance ()) return TRACE_RETURN (false);
- const EntryExitRecord &this_record = entryExitRecord[(this+coverage).get_coverage (c->buffer->cur().codepoint)];
+ const EntryExitRecord &this_record = entryExitRecord[(this+coverage).get_coverage (buffer->cur().codepoint)];
if (!this_record.exitAnchor) return TRACE_RETURN (false);
if (!skippy_iter.next ()) return TRACE_RETURN (false);
- const EntryExitRecord &next_record = entryExitRecord[(this+coverage).get_coverage (c->buffer->info[skippy_iter.idx].codepoint)];
+ const EntryExitRecord &next_record = entryExitRecord[(this+coverage).get_coverage (buffer->info[skippy_iter.idx].codepoint)];
if (!next_record.entryAnchor) return TRACE_RETURN (false);
- unsigned int i = c->buffer->idx;
+ unsigned int i = buffer->idx;
unsigned int j = skippy_iter.idx;
hb_position_t entry_x, entry_y, exit_x, exit_y;
- (this+this_record.exitAnchor).get_anchor (c->font, c->buffer->info[i].codepoint, &exit_x, &exit_y);
- (this+next_record.entryAnchor).get_anchor (c->font, c->buffer->info[j].codepoint, &entry_x, &entry_y);
+ (this+this_record.exitAnchor).get_anchor (c->font, buffer->info[i].codepoint, &exit_x, &exit_y);
+ (this+next_record.entryAnchor).get_anchor (c->font, buffer->info[j].codepoint, &entry_x, &entry_y);
- hb_glyph_position_t *pos = c->buffer->pos;
+ hb_glyph_position_t *pos = buffer->pos;
hb_position_t d;
/* Main-direction adjustment */
@@ -950,7 +957,7 @@ struct CursivePosFormat1
pos[j].x_offset = exit_x - entry_x;
}
- c->buffer->idx = j;
+ buffer->idx = j;
return TRACE_RETURN (true);
}
@@ -1022,23 +1029,24 @@ struct MarkBasePosFormat1
inline bool apply (hb_apply_context_t *c) const
{
TRACE_APPLY (this);
- unsigned int mark_index = (this+markCoverage).get_coverage (c->buffer->cur().codepoint);
+ hb_buffer_t *buffer = c->buffer;
+ unsigned int mark_index = (this+markCoverage).get_coverage (buffer->cur().codepoint);
if (likely (mark_index == NOT_COVERED)) return TRACE_RETURN (false);
/* now we search backwards for a non-mark glyph */
- hb_apply_context_t::skipping_backward_iterator_t skippy_iter (c, c->buffer->idx, 1);
+ hb_apply_context_t::skipping_backward_iterator_t skippy_iter (c, buffer->idx, 1);
skippy_iter.set_lookup_props (LookupFlag::IgnoreMarks);
do {
if (!skippy_iter.prev ()) return TRACE_RETURN (false);
/* We only want to attach to the first of a MultipleSubst sequence. Reject others. */
- if (0 == get_lig_comp (c->buffer->info[skippy_iter.idx])) break;
+ if (0 == _hb_glyph_info_get_lig_comp (&buffer->info[skippy_iter.idx])) break;
skippy_iter.reject ();
} while (1);
- /* The following assertion is too strong, so we've disabled it. */
- if (!(c->buffer->info[skippy_iter.idx].glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH)) {/*return TRACE_RETURN (false);*/}
+ /* Checking that matched glyph is actually a base glyph by GDEF is too strong; disabled */
+ if (!_hb_glyph_info_is_base_glyph (&buffer->info[skippy_iter.idx])) { /*return TRACE_RETURN (false);*/ }
- unsigned int base_index = (this+baseCoverage).get_coverage (c->buffer->info[skippy_iter.idx].codepoint);
+ unsigned int base_index = (this+baseCoverage).get_coverage (buffer->info[skippy_iter.idx].codepoint);
if (base_index == NOT_COVERED) return TRACE_RETURN (false);
return TRACE_RETURN ((this+markArray).apply (c, mark_index, base_index, this+baseArray, classCount, skippy_iter.idx));
@@ -1125,19 +1133,20 @@ struct MarkLigPosFormat1
inline bool apply (hb_apply_context_t *c) const
{
TRACE_APPLY (this);
- unsigned int mark_index = (this+markCoverage).get_coverage (c->buffer->cur().codepoint);
+ hb_buffer_t *buffer = c->buffer;
+ unsigned int mark_index = (this+markCoverage).get_coverage (buffer->cur().codepoint);
if (likely (mark_index == NOT_COVERED)) return TRACE_RETURN (false);
/* now we search backwards for a non-mark glyph */
- hb_apply_context_t::skipping_backward_iterator_t skippy_iter (c, c->buffer->idx, 1);
+ hb_apply_context_t::skipping_backward_iterator_t skippy_iter (c, buffer->idx, 1);
skippy_iter.set_lookup_props (LookupFlag::IgnoreMarks);
if (!skippy_iter.prev ()) return TRACE_RETURN (false);
- /* The following assertion is too strong, so we've disabled it. */
- if (!(c->buffer->info[skippy_iter.idx].glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE)) {/*return TRACE_RETURN (false);*/}
+ /* Checking that matched glyph is actually a ligature by GDEF is too strong; disabled */
+ if (!_hb_glyph_info_is_ligature (&buffer->info[skippy_iter.idx])) { /*return TRACE_RETURN (false);*/ }
unsigned int j = skippy_iter.idx;
- unsigned int lig_index = (this+ligatureCoverage).get_coverage (c->buffer->info[j].codepoint);
+ unsigned int lig_index = (this+ligatureCoverage).get_coverage (buffer->info[j].codepoint);
if (lig_index == NOT_COVERED) return TRACE_RETURN (false);
const LigatureArray& lig_array = this+ligatureArray;
@@ -1152,11 +1161,11 @@ struct MarkLigPosFormat1
* can directly use the component index. If not, we attach the mark
* glyph to the last component of the ligature. */
unsigned int comp_index;
- unsigned int lig_id = get_lig_id (c->buffer->info[j]);
- unsigned int mark_id = get_lig_id (c->buffer->cur());
- unsigned int mark_comp = get_lig_comp (c->buffer->cur());
+ unsigned int lig_id = _hb_glyph_info_get_lig_id (&buffer->info[j]);
+ unsigned int mark_id = _hb_glyph_info_get_lig_id (&buffer->cur());
+ unsigned int mark_comp = _hb_glyph_info_get_lig_comp (&buffer->cur());
if (lig_id && lig_id == mark_id && mark_comp > 0)
- comp_index = MIN (comp_count, get_lig_comp (c->buffer->cur())) - 1;
+ comp_index = MIN (comp_count, _hb_glyph_info_get_lig_comp (&buffer->cur())) - 1;
else
comp_index = comp_count - 1;
@@ -1240,22 +1249,23 @@ struct MarkMarkPosFormat1
inline bool apply (hb_apply_context_t *c) const
{
TRACE_APPLY (this);
- unsigned int mark1_index = (this+mark1Coverage).get_coverage (c->buffer->cur().codepoint);
+ hb_buffer_t *buffer = c->buffer;
+ unsigned int mark1_index = (this+mark1Coverage).get_coverage (buffer->cur().codepoint);
if (likely (mark1_index == NOT_COVERED)) return TRACE_RETURN (false);
/* now we search backwards for a suitable mark glyph until a non-mark glyph */
- hb_apply_context_t::skipping_backward_iterator_t skippy_iter (c, c->buffer->idx, 1);
+ hb_apply_context_t::skipping_backward_iterator_t skippy_iter (c, buffer->idx, 1);
skippy_iter.set_lookup_props (c->lookup_props & ~LookupFlag::IgnoreFlags);
if (!skippy_iter.prev ()) return TRACE_RETURN (false);
- if (!(c->buffer->info[skippy_iter.idx].glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MARK)) { return TRACE_RETURN (false); }
+ if (!_hb_glyph_info_is_mark (&buffer->info[skippy_iter.idx])) { return TRACE_RETURN (false); }
unsigned int j = skippy_iter.idx;
- unsigned int id1 = get_lig_id (c->buffer->cur());
- unsigned int id2 = get_lig_id (c->buffer->info[j]);
- unsigned int comp1 = get_lig_comp (c->buffer->cur());
- unsigned int comp2 = get_lig_comp (c->buffer->info[j]);
+ unsigned int id1 = _hb_glyph_info_get_lig_id (&buffer->cur());
+ unsigned int id2 = _hb_glyph_info_get_lig_id (&buffer->info[j]);
+ unsigned int comp1 = _hb_glyph_info_get_lig_comp (&buffer->cur());
+ unsigned int comp2 = _hb_glyph_info_get_lig_comp (&buffer->info[j]);
if (likely (id1 == id2)) {
if (id1 == 0) /* Marks belonging to the same base. */
@@ -1273,7 +1283,7 @@ struct MarkMarkPosFormat1
return TRACE_RETURN (false);
good:
- unsigned int mark2_index = (this+mark2Coverage).get_coverage (c->buffer->info[j].codepoint);
+ unsigned int mark2_index = (this+mark2Coverage).get_coverage (buffer->info[j].codepoint);
if (mark2_index == NOT_COVERED) return TRACE_RETURN (false);
return TRACE_RETURN ((this+mark1Array).apply (c, mark1_index, mark2_index, this+mark2Array, classCount, j));
@@ -1591,9 +1601,7 @@ GPOS::position_finish (hb_font_t *font HB_UNUSED, hb_buffer_t *buffer)
for (unsigned int i = 0; i < len; i++)
fix_mark_attachment (pos, i, direction);
- HB_BUFFER_DEALLOCATE_VAR (buffer, syllable);
- HB_BUFFER_DEALLOCATE_VAR (buffer, lig_props);
- HB_BUFFER_DEALLOCATE_VAR (buffer, glyph_props);
+ _hb_buffer_deallocate_gsubgpos_vars (buffer);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-gsub-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-gsub-table.hh
index fefc71e8b49..d5f8b311ebf 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-gsub-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-gsub-table.hh
@@ -291,8 +291,8 @@ struct Sequence
TRACE_APPLY (this);
if (unlikely (!substitute.len)) return TRACE_RETURN (false);
- unsigned int klass = c->buffer->cur().glyph_props() &
- HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE ? HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH : 0;
+ unsigned int klass = _hb_glyph_info_is_ligature (&c->buffer->cur()) ?
+ HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH : 0;
unsigned int count = substitute.len;
if (count == 1) /* Special-case to make it in-place. */
{
@@ -301,7 +301,7 @@ struct Sequence
else
{
for (unsigned int i = 0; i < count; i++) {
- set_lig_props_for_component (c->buffer->cur(), i);
+ _hb_glyph_info_set_lig_props_for_component (&c->buffer->cur(), i);
c->output_glyph (substitute.array[i], klass);
}
c->buffer->skip_glyph ();
@@ -663,27 +663,26 @@ struct Ligature
unsigned int count = component.len;
if (unlikely (count < 1)) return TRACE_RETURN (false);
- unsigned int end_offset = 0;
bool is_mark_ligature = false;
unsigned int total_component_count = 0;
+ unsigned int match_length = 0;
+ unsigned int match_positions[MAX_CONTEXT_LENGTH];
+
if (likely (!match_input (c, count,
&component[1],
match_glyph,
NULL,
- &end_offset,
+ &match_length,
+ match_positions,
&is_mark_ligature,
&total_component_count)))
return TRACE_RETURN (false);
- /* Deal, we are forming the ligature. */
- c->buffer->merge_clusters (c->buffer->idx, c->buffer->idx + end_offset);
-
ligate_input (c,
count,
- &component[1],
- match_glyph,
- NULL,
+ match_positions,
+ match_length,
ligGlyph,
is_mark_ligature,
total_component_count);
@@ -1038,7 +1037,9 @@ struct ReverseChainSingleSubstFormat1
1))
{
c->replace_glyph_inplace (substitute[index]);
- c->buffer->idx--; /* Reverse! */
+ /* Note: We DON'T decrease buffer->idx. The main loop does it
+ * for us. This is useful for preventing surprises if someone
+ * calls us through a Context lookup. */
return TRACE_RETURN (true);
}
@@ -1373,15 +1374,15 @@ struct GSUB : GSUBGPOS
void
GSUB::substitute_start (hb_font_t *font, hb_buffer_t *buffer)
{
- HB_BUFFER_ALLOCATE_VAR (buffer, glyph_props);
- HB_BUFFER_ALLOCATE_VAR (buffer, lig_props);
- HB_BUFFER_ALLOCATE_VAR (buffer, syllable);
+ _hb_buffer_allocate_gsubgpos_vars (buffer);
const GDEF &gdef = *hb_ot_layout_from_face (font->face)->gdef;
unsigned int count = buffer->len;
- for (unsigned int i = 0; i < count; i++) {
- buffer->info[i].lig_props() = buffer->info[i].syllable() = 0;
- buffer->info[i].glyph_props() = gdef.get_glyph_props (buffer->info[i].codepoint);
+ for (unsigned int i = 0; i < count; i++)
+ {
+ _hb_glyph_info_set_glyph_props (&buffer->info[i], gdef.get_glyph_props (buffer->info[i].codepoint));
+ _hb_glyph_info_clear_lig_props (&buffer->info[i]);
+ buffer->info[i].syllable() = 0;
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-gsubgpos-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-gsubgpos-private.hh
index 316f506f0d3..16c96fafb59 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-gsubgpos-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-gsubgpos-private.hh
@@ -401,7 +401,7 @@ struct hb_apply_context_t
{
unsigned int property;
- property = info.glyph_props();
+ property = _hb_glyph_info_get_glyph_props (&info);
if (!c->match_properties (info.codepoint, property, lookup_props))
return SKIP_YES;
@@ -409,7 +409,7 @@ struct hb_apply_context_t
if (unlikely (_hb_glyph_info_is_default_ignorable (&info) &&
(ignore_zwnj || !_hb_glyph_info_is_zwnj (&info)) &&
(ignore_zwj || !_hb_glyph_info_is_zwj (&info)) &&
- !is_a_ligature (info)))
+ !_hb_glyph_info_ligated (&info)))
return SKIP_MAYBE;
return SKIP_NO;
@@ -610,36 +610,47 @@ struct hb_apply_context_t
{
unsigned int property;
- property = info->glyph_props();
+ property = _hb_glyph_info_get_glyph_props (info);
return match_properties (info->codepoint, property, lookup_props);
}
- inline void set_class (hb_codepoint_t glyph_index, unsigned int class_guess) const
+ inline void _set_glyph_props (hb_codepoint_t glyph_index,
+ unsigned int class_guess = 0,
+ bool ligature = false) const
{
+ unsigned int add_in = _hb_glyph_info_get_glyph_props (&buffer->cur()) &
+ HB_OT_LAYOUT_GLYPH_PROPS_PRESERVE;
+ add_in |= HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED;
+ if (ligature)
+ add_in |= HB_OT_LAYOUT_GLYPH_PROPS_LIGATED;
if (likely (has_glyph_classes))
- buffer->cur().glyph_props() = gdef.get_glyph_props (glyph_index);
+ _hb_glyph_info_set_glyph_props (&buffer->cur(), add_in | gdef.get_glyph_props (glyph_index));
else if (class_guess)
- buffer->cur().glyph_props() = class_guess;
+ _hb_glyph_info_set_glyph_props (&buffer->cur(), add_in | class_guess);
}
- inline void output_glyph (hb_codepoint_t glyph_index,
- unsigned int class_guess = 0) const
+ inline void replace_glyph (hb_codepoint_t glyph_index) const
{
- set_class (glyph_index, class_guess);
- buffer->output_glyph (glyph_index);
+ _set_glyph_props (glyph_index);
+ buffer->replace_glyph (glyph_index);
+ }
+ inline void replace_glyph_inplace (hb_codepoint_t glyph_index) const
+ {
+ _set_glyph_props (glyph_index);
+ buffer->cur().codepoint = glyph_index;
}
- inline void replace_glyph (hb_codepoint_t glyph_index,
- unsigned int class_guess = 0) const
+ inline void replace_glyph_with_ligature (hb_codepoint_t glyph_index,
+ unsigned int class_guess) const
{
- set_class (glyph_index, class_guess);
+ _set_glyph_props (glyph_index, class_guess, true);
buffer->replace_glyph (glyph_index);
}
- inline void replace_glyph_inplace (hb_codepoint_t glyph_index,
- unsigned int class_guess = 0) const
+ inline void output_glyph (hb_codepoint_t glyph_index,
+ unsigned int class_guess) const
{
- set_class (glyph_index, class_guess);
- buffer->cur().codepoint = glyph_index;
+ _set_glyph_props (glyph_index, class_guess);
+ buffer->output_glyph (glyph_index);
}
};
@@ -752,13 +763,18 @@ static inline bool match_input (hb_apply_context_t *c,
const USHORT input[], /* Array of input values--start with second glyph */
match_func_t match_func,
const void *match_data,
- unsigned int *end_offset = NULL,
+ unsigned int *end_offset,
+ unsigned int match_positions[MAX_CONTEXT_LENGTH],
bool *p_is_mark_ligature = NULL,
unsigned int *p_total_component_count = NULL)
{
TRACE_APPLY (NULL);
- hb_apply_context_t::skipping_forward_iterator_t skippy_iter (c, c->buffer->idx, count - 1);
+ if (unlikely (count > MAX_CONTEXT_LENGTH)) TRACE_RETURN (false);
+
+ hb_buffer_t *buffer = c->buffer;
+
+ hb_apply_context_t::skipping_forward_iterator_t skippy_iter (c, buffer->idx, count - 1);
skippy_iter.set_match_func (match_func, match_data, input);
if (skippy_iter.has_no_chance ()) return TRACE_RETURN (false);
@@ -780,20 +796,23 @@ static inline bool match_input (hb_apply_context_t *c,
* ligate with a conjunct...)
*/
- bool is_mark_ligature = !!(c->buffer->cur().glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MARK);
+ bool is_mark_ligature = _hb_glyph_info_is_mark (&buffer->cur());
unsigned int total_component_count = 0;
- total_component_count += get_lig_num_comps (c->buffer->cur());
+ total_component_count += _hb_glyph_info_get_lig_num_comps (&buffer->cur());
- unsigned int first_lig_id = get_lig_id (c->buffer->cur());
- unsigned int first_lig_comp = get_lig_comp (c->buffer->cur());
+ unsigned int first_lig_id = _hb_glyph_info_get_lig_id (&buffer->cur());
+ unsigned int first_lig_comp = _hb_glyph_info_get_lig_comp (&buffer->cur());
+ match_positions[0] = buffer->idx;
for (unsigned int i = 1; i < count; i++)
{
if (!skippy_iter.next ()) return TRACE_RETURN (false);
- unsigned int this_lig_id = get_lig_id (c->buffer->info[skippy_iter.idx]);
- unsigned int this_lig_comp = get_lig_comp (c->buffer->info[skippy_iter.idx]);
+ match_positions[i] = skippy_iter.idx;
+
+ unsigned int this_lig_id = _hb_glyph_info_get_lig_id (&buffer->info[skippy_iter.idx]);
+ unsigned int this_lig_comp = _hb_glyph_info_get_lig_comp (&buffer->info[skippy_iter.idx]);
if (first_lig_id && first_lig_comp) {
/* If first component was attached to a previous ligature component,
@@ -809,12 +828,11 @@ static inline bool match_input (hb_apply_context_t *c,
return TRACE_RETURN (false);
}
- is_mark_ligature = is_mark_ligature && (c->buffer->info[skippy_iter.idx].glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MARK);
- total_component_count += get_lig_num_comps (c->buffer->info[skippy_iter.idx]);
+ is_mark_ligature = is_mark_ligature && _hb_glyph_info_is_mark (&buffer->info[skippy_iter.idx]);
+ total_component_count += _hb_glyph_info_get_lig_num_comps (&buffer->info[skippy_iter.idx]);
}
- if (end_offset)
- *end_offset = skippy_iter.idx - c->buffer->idx + 1;
+ *end_offset = skippy_iter.idx - buffer->idx + 1;
if (p_is_mark_ligature)
*p_is_mark_ligature = is_mark_ligature;
@@ -825,17 +843,18 @@ static inline bool match_input (hb_apply_context_t *c,
return TRACE_RETURN (true);
}
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 */
- match_func_t match_func,
- const void *match_data,
+ unsigned int count, /* Including the first glyph */
+ unsigned int match_positions[MAX_CONTEXT_LENGTH], /* Including the first glyph */
+ unsigned int match_length,
hb_codepoint_t lig_glyph,
bool is_mark_ligature,
unsigned int total_component_count)
{
- hb_apply_context_t::skipping_forward_iterator_t skippy_iter (c, c->buffer->idx, count - 1);
- skippy_iter.set_match_func (match_func, match_data, input);
- if (skippy_iter.has_no_chance ()) return;
+ TRACE_APPLY (NULL);
+
+ hb_buffer_t *buffer = c->buffer;
+
+ buffer->merge_clusters (buffer->idx, buffer->idx + match_length);
/*
* - If it *is* a mark ligature, we don't allocate a new ligature id, and leave
@@ -866,48 +885,46 @@ static inline void ligate_input (hb_apply_context_t *c,
*/
unsigned int klass = is_mark_ligature ? 0 : HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE;
- unsigned int lig_id = is_mark_ligature ? 0 : allocate_lig_id (c->buffer);
- unsigned int last_lig_id = get_lig_id (c->buffer->cur());
- unsigned int last_num_components = get_lig_num_comps (c->buffer->cur());
+ unsigned int lig_id = is_mark_ligature ? 0 : _hb_allocate_lig_id (buffer);
+ unsigned int last_lig_id = _hb_glyph_info_get_lig_id (&buffer->cur());
+ unsigned int last_num_components = _hb_glyph_info_get_lig_num_comps (&buffer->cur());
unsigned int components_so_far = last_num_components;
if (!is_mark_ligature)
{
- set_lig_props_for_ligature (c->buffer->cur(), lig_id, total_component_count);
- if (_hb_glyph_info_get_general_category (&c->buffer->cur()) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)
- _hb_glyph_info_set_general_category (&c->buffer->cur(), HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER);
+ _hb_glyph_info_set_lig_props_for_ligature (&buffer->cur(), lig_id, total_component_count);
+ if (_hb_glyph_info_get_general_category (&buffer->cur()) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)
+ _hb_glyph_info_set_general_category (&buffer->cur(), HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER);
}
- c->replace_glyph (lig_glyph, klass);
+ c->replace_glyph_with_ligature (lig_glyph, klass);
for (unsigned int i = 1; i < count; i++)
{
- if (!skippy_iter.next ()) return;
-
- while (c->buffer->idx < skippy_iter.idx)
+ while (buffer->idx < match_positions[i])
{
if (!is_mark_ligature) {
unsigned int new_lig_comp = components_so_far - last_num_components +
- MIN (MAX (get_lig_comp (c->buffer->cur()), 1u), last_num_components);
- set_lig_props_for_mark (c->buffer->cur(), lig_id, new_lig_comp);
+ MIN (MAX (_hb_glyph_info_get_lig_comp (&buffer->cur()), 1u), last_num_components);
+ _hb_glyph_info_set_lig_props_for_mark (&buffer->cur(), lig_id, new_lig_comp);
}
- c->buffer->next_glyph ();
+ buffer->next_glyph ();
}
- last_lig_id = get_lig_id (c->buffer->cur());
- last_num_components = get_lig_num_comps (c->buffer->cur());
+ last_lig_id = _hb_glyph_info_get_lig_id (&buffer->cur());
+ last_num_components = _hb_glyph_info_get_lig_num_comps (&buffer->cur());
components_so_far += last_num_components;
/* Skip the base glyph */
- c->buffer->idx++;
+ buffer->idx++;
}
if (!is_mark_ligature && last_lig_id) {
/* Re-adjust components for any marks following. */
- for (unsigned int i = c->buffer->idx; i < c->buffer->len; i++) {
- if (last_lig_id == get_lig_id (c->buffer->info[i])) {
+ for (unsigned int i = buffer->idx; i < buffer->len; i++) {
+ if (last_lig_id == _hb_glyph_info_get_lig_id (&buffer->info[i])) {
unsigned int new_lig_comp = components_so_far - last_num_components +
- MIN (MAX (get_lig_comp (c->buffer->info[i]), 1u), last_num_components);
- set_lig_props_for_mark (c->buffer->info[i], lig_id, new_lig_comp);
+ MIN (MAX (_hb_glyph_info_get_lig_comp (&buffer->info[i]), 1u), last_num_components);
+ _hb_glyph_info_set_lig_props_for_mark (&buffer->info[i], lig_id, new_lig_comp);
} else
break;
}
@@ -982,99 +999,82 @@ static inline void recurse_lookups (context_t *c,
static inline bool apply_lookup (hb_apply_context_t *c,
unsigned int count, /* Including the first glyph */
- const USHORT input[], /* Array of input values--start with second glyph */
- match_func_t match_func,
- const void *match_data,
+ unsigned int match_positions[MAX_CONTEXT_LENGTH], /* Including the first glyph */
unsigned int lookupCount,
- const LookupRecord lookupRecord[] /* Array of LookupRecords--in design order */)
+ const LookupRecord lookupRecord[], /* Array of LookupRecords--in design order */
+ unsigned int match_length)
{
TRACE_APPLY (NULL);
- unsigned int end = c->buffer->len;
- if (unlikely (count == 0 || c->buffer->idx + count > end))
- return TRACE_RETURN (false);
+ hb_buffer_t *buffer = c->buffer;
+ unsigned int end;
- /* TODO We don't support lookupRecord arrays that are not increasing:
- * Should be easy for in_place ones at least. */
-
- /* Note: If sublookup is reverse, it will underflow after the first loop
- * and we jump out of it. Not entirely disastrous. So we don't check
- * for reverse lookup here.
- */
+ /* All positions are distance from beginning of *output* buffer.
+ * Adjust. */
+ {
+ unsigned int bl = buffer->backtrack_len ();
+ end = bl + match_length;
- hb_apply_context_t::skipping_forward_iterator_t skippy_iter (c, c->buffer->idx, count - 1);
- skippy_iter.set_match_func (match_func, match_data, input);
- uint8_t syllable = c->buffer->cur().syllable();
+ int delta = bl - buffer->idx;
+ /* Convert positions to new indexing. */
+ for (unsigned int j = 0; j < count; j++)
+ match_positions[j] += delta;
+ }
- unsigned int i = 0;
- if (lookupCount && 0 == lookupRecord->sequenceIndex)
+ for (unsigned int i = 0; i < lookupCount; i++)
{
- unsigned int old_pos = c->buffer->idx;
+ unsigned int idx = lookupRecord[i].sequenceIndex;
+ if (idx >= count)
+ continue;
- /* Apply a lookup */
- bool done = c->recurse (lookupRecord->lookupListIndex);
+ buffer->move_to (match_positions[idx]);
- lookupRecord++;
- lookupCount--;
- i++;
+ unsigned int orig_len = buffer->backtrack_len () + buffer->lookahead_len ();
+ if (!c->recurse (lookupRecord[i].lookupListIndex))
+ continue;
- if (!done)
- goto not_applied;
- else
- {
- if (c->table_index == 1)
- c->buffer->idx = old_pos + 1;
- /* Reinitialize iterator. */
- hb_apply_context_t::skipping_forward_iterator_t tmp (c, c->buffer->idx - 1, count - i);
- tmp.set_syllable (syllable);
- skippy_iter = tmp;
- }
- }
- else
- {
- not_applied:
- /* No lookup applied for this index */
- c->buffer->next_glyph ();
- i++;
- }
- while (i < count)
- {
- if (!skippy_iter.next ()) return TRACE_RETURN (true);
- while (c->buffer->idx < skippy_iter.idx)
- c->buffer->next_glyph ();
+ unsigned int new_len = buffer->backtrack_len () + buffer->lookahead_len ();
+ int delta = new_len - orig_len;
- if (lookupCount && i == lookupRecord->sequenceIndex)
- {
- unsigned int old_pos = c->buffer->idx;
+ if (!delta)
+ continue;
- /* Apply a lookup */
- bool done = c->recurse (lookupRecord->lookupListIndex);
+ /* Recursed lookup changed buffer len. Adjust. */
- lookupRecord++;
- lookupCount--;
- i++;
+ /* end can't go back past the current match position. */
+ end = MAX ((int) match_positions[idx] + 1, int (end) + delta);
- if (!done)
- goto not_applied2;
- else
- {
- if (c->table_index == 1)
- c->buffer->idx = old_pos + 1;
- /* Reinitialize iterator. */
- hb_apply_context_t::skipping_forward_iterator_t tmp (c, c->buffer->idx - 1, count - i);
- tmp.set_syllable (syllable);
- skippy_iter = tmp;
- }
+ unsigned int next = idx + 1; /* next now is the position after the recursed lookup. */
+
+ if (delta > 0)
+ {
+ if (unlikely (delta + count > MAX_CONTEXT_LENGTH))
+ break;
}
else
{
- not_applied2:
- /* No lookup applied for this index */
- c->buffer->next_glyph ();
- i++;
+ /* NOTE: delta is negative. */
+ delta = MAX (delta, (int) next - (int) count);
+ next -= delta;
}
+
+ /* Shift! */
+ memmove (match_positions + next + delta, match_positions + next,
+ (count - next) * sizeof (match_positions[0]));
+ next += delta;
+ count += delta;
+
+ /* Fill in new entries. */
+ for (unsigned int j = idx + 1; j < next; j++)
+ match_positions[j] = match_positions[j - 1] + 1;
+
+ /* And fixup the rest. */
+ for (; next < count; next++)
+ match_positions[next] += delta;
}
+ buffer->move_to (end);
+
return TRACE_RETURN (true);
}
@@ -1146,13 +1146,16 @@ static inline bool context_apply_lookup (hb_apply_context_t *c,
const LookupRecord lookupRecord[],
ContextApplyLookupContext &lookup_context)
{
+ unsigned int match_length = 0;
+ unsigned int match_positions[MAX_CONTEXT_LENGTH];
return match_input (c,
inputCount, input,
- lookup_context.funcs.match, lookup_context.match_data)
+ lookup_context.funcs.match, lookup_context.match_data,
+ &match_length, match_positions)
&& apply_lookup (c,
- inputCount, input,
- lookup_context.funcs.match, lookup_context.match_data,
- lookupCount, lookupRecord);
+ inputCount, match_positions,
+ lookupCount, lookupRecord,
+ match_length);
}
struct Rule
@@ -1726,22 +1729,23 @@ static inline bool chain_context_apply_lookup (hb_apply_context_t *c,
const LookupRecord lookupRecord[],
ChainContextApplyLookupContext &lookup_context)
{
- unsigned int lookahead_offset = 0;
+ unsigned int match_length = 0;
+ unsigned int match_positions[MAX_CONTEXT_LENGTH];
return match_input (c,
inputCount, input,
lookup_context.funcs.match, lookup_context.match_data[1],
- &lookahead_offset)
+ &match_length, match_positions)
&& match_backtrack (c,
backtrackCount, backtrack,
lookup_context.funcs.match, lookup_context.match_data[0])
&& match_lookahead (c,
lookaheadCount, lookahead,
lookup_context.funcs.match, lookup_context.match_data[2],
- lookahead_offset)
+ match_length)
&& apply_lookup (c,
- inputCount, input,
- lookup_context.funcs.match, lookup_context.match_data[1],
- lookupCount, lookupRecord);
+ inputCount, match_positions,
+ lookupCount, lookupRecord,
+ match_length);
}
struct ChainRule
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-jstf-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-jstf-table.hh
index 79eb859566a..79eb859566a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-jstf-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-jstf-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-private.hh
index c5ba8b4b4d7..139e33fe7a3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout-private.hh
@@ -1,6 +1,6 @@
/*
* Copyright © 2007,2008,2009 Red Hat, Inc.
- * Copyright © 2012 Google, Inc.
+ * Copyright © 2012,2013 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
@@ -38,40 +38,179 @@
#include "hb-set-private.hh"
-/* buffer var allocations, used during the GSUB/GPOS processing */
-#define glyph_props() var1.u16[0] /* GDEF glyph properties */
-#define syllable() var1.u8[2] /* GSUB/GPOS shaping boundaries */
-#define lig_props() var1.u8[3] /* GSUB/GPOS ligature tracking */
+/*
+ * GDEF
+ */
+
+typedef enum
+{
+ /* The following three match LookupFlags::Ignore* numbers. */
+ HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH = 0x02u,
+ HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE = 0x04u,
+ HB_OT_LAYOUT_GLYPH_PROPS_MARK = 0x08u,
+
+ /* The following are used internally; not derived from GDEF. */
+ HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED = 0x10u,
+ HB_OT_LAYOUT_GLYPH_PROPS_LIGATED = 0x20u,
+
+ HB_OT_LAYOUT_GLYPH_PROPS_PRESERVE = HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED |
+ HB_OT_LAYOUT_GLYPH_PROPS_LIGATED
+} hb_ot_layout_glyph_class_mask_t;
+
+
+/*
+ * GSUB/GPOS
+ */
+
+HB_INTERNAL hb_bool_t
+hb_ot_layout_lookup_would_substitute_fast (hb_face_t *face,
+ unsigned int lookup_index,
+ const hb_codepoint_t *glyphs,
+ unsigned int glyphs_length,
+ hb_bool_t zero_context);
+
+
+/* Should be called before all the substitute_lookup's are done. */
+HB_INTERNAL void
+hb_ot_layout_substitute_start (hb_font_t *font,
+ hb_buffer_t *buffer);
+
+
+struct hb_ot_layout_lookup_accelerator_t;
+
+namespace OT {
+ struct hb_apply_context_t;
+ struct SubstLookup;
+}
+
+HB_INTERNAL void
+hb_ot_layout_substitute_lookup (OT::hb_apply_context_t *c,
+ const OT::SubstLookup &lookup,
+ const hb_ot_layout_lookup_accelerator_t &accel);
+
+
+/* Should be called after all the substitute_lookup's are done */
+HB_INTERNAL void
+hb_ot_layout_substitute_finish (hb_font_t *font,
+ hb_buffer_t *buffer);
+
+
+/* Should be called before all the position_lookup's are done. Resets positions to zero. */
+HB_INTERNAL void
+hb_ot_layout_position_start (hb_font_t *font,
+ hb_buffer_t *buffer);
+
+/* Should be called after all the position_lookup's are done */
+HB_INTERNAL void
+hb_ot_layout_position_finish (hb_font_t *font,
+ hb_buffer_t *buffer);
+
+
+
+/*
+ * hb_ot_layout_t
+ */
+
+namespace OT {
+ struct GDEF;
+ struct GSUB;
+ struct GPOS;
+}
+
+struct hb_ot_layout_lookup_accelerator_t
+{
+ template <typename TLookup>
+ inline void init (const TLookup &lookup)
+ {
+ digest.init ();
+ lookup.add_coverage (&digest);
+ }
+
+ template <typename TLookup>
+ inline void fini (const TLookup &lookup)
+ {
+ }
+
+ hb_set_digest_t digest;
+};
+
+struct hb_ot_layout_t
+{
+ hb_blob_t *gdef_blob;
+ hb_blob_t *gsub_blob;
+ hb_blob_t *gpos_blob;
+
+ const struct OT::GDEF *gdef;
+ const struct OT::GSUB *gsub;
+ const struct OT::GPOS *gpos;
+
+ unsigned int gsub_lookup_count;
+ unsigned int gpos_lookup_count;
+
+ hb_ot_layout_lookup_accelerator_t *gsub_accels;
+ hb_ot_layout_lookup_accelerator_t *gpos_accels;
+};
+
+
+HB_INTERNAL hb_ot_layout_t *
+_hb_ot_layout_create (hb_face_t *face);
+
+HB_INTERNAL void
+_hb_ot_layout_destroy (hb_ot_layout_t *layout);
+
+
+#define hb_ot_layout_from_face(face) ((hb_ot_layout_t *) face->shaper_data.ot)
+
+
+/*
+ * Buffer var routines.
+ */
/* buffer var allocations, used during the entire shaping process */
#define unicode_props0() var2.u8[0]
#define unicode_props1() var2.u8[1]
+/* buffer var allocations, used during the GSUB/GPOS processing */
+#define glyph_props() var1.u16[0] /* GDEF glyph properties */
+#define lig_props() var1.u8[2] /* GSUB/GPOS ligature tracking */
+#define syllable() var1.u8[3] /* GSUB/GPOS shaping boundaries */
+
+/* unicode_props */
+
+enum {
+ MASK0_ZWJ = 0x20u,
+ MASK0_ZWNJ = 0x40u,
+ MASK0_IGNORABLE = 0x80u,
+ MASK0_GEN_CAT = 0x1Fu
+};
inline void
_hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_unicode_funcs_t *unicode)
{
+ /* XXX This shouldn't be inlined, or at least not while is_default_ignorable() is inline. */
info->unicode_props0() = ((unsigned int) unicode->general_category (info->codepoint)) |
- (unicode->is_default_ignorable (info->codepoint) ? 0x80 : 0) |
- (info->codepoint == 0x200C ? 0x40 : 0) |
- (info->codepoint == 0x200D ? 0x20 : 0);
+ (unicode->is_default_ignorable (info->codepoint) ? MASK0_IGNORABLE : 0) |
+ (info->codepoint == 0x200C ? MASK0_ZWNJ : 0) |
+ (info->codepoint == 0x200D ? MASK0_ZWJ : 0);
info->unicode_props1() = unicode->modified_combining_class (info->codepoint);
}
inline void
-_hb_glyph_info_set_general_category (hb_glyph_info_t *info, hb_unicode_general_category_t gen_cat)
+_hb_glyph_info_set_general_category (hb_glyph_info_t *info,
+ hb_unicode_general_category_t gen_cat)
{
- info->unicode_props0() = (unsigned int) gen_cat | ((info->unicode_props0()) & ~0x1F);
+ info->unicode_props0() = (unsigned int) gen_cat | ((info->unicode_props0()) & ~MASK0_GEN_CAT);
}
inline hb_unicode_general_category_t
_hb_glyph_info_get_general_category (const hb_glyph_info_t *info)
{
- return (hb_unicode_general_category_t) (info->unicode_props0() & 0x1F);
+ return (hb_unicode_general_category_t) (info->unicode_props0() & MASK0_GEN_CAT);
}
inline void
-_hb_glyph_info_set_modified_combining_class (hb_glyph_info_t *info, unsigned int modified_class)
+_hb_glyph_info_set_modified_combining_class (hb_glyph_info_t *info,
+ unsigned int modified_class)
{
info->unicode_props1() = modified_class;
}
@@ -85,43 +224,28 @@ _hb_glyph_info_get_modified_combining_class (const hb_glyph_info_t *info)
inline hb_bool_t
_hb_glyph_info_is_default_ignorable (const hb_glyph_info_t *info)
{
- return !!(info->unicode_props0() & 0x80);
+ return !!(info->unicode_props0() & MASK0_IGNORABLE);
}
inline hb_bool_t
_hb_glyph_info_is_zwnj (const hb_glyph_info_t *info)
{
- return !!(info->unicode_props0() & 0x40);
+ return !!(info->unicode_props0() & MASK0_ZWNJ);
}
inline hb_bool_t
_hb_glyph_info_is_zwj (const hb_glyph_info_t *info)
{
- return !!(info->unicode_props0() & 0x20);
+ return !!(info->unicode_props0() & MASK0_ZWJ);
}
+inline void
+_hb_glyph_info_flip_joiners (hb_glyph_info_t *info)
+{
+ info->unicode_props0() ^= MASK0_ZWNJ | MASK0_ZWJ;
+}
-#define hb_ot_layout_from_face(face) ((hb_ot_layout_t *) face->shaper_data.ot)
-
-/*
- * GDEF
- */
-
-typedef enum {
- HB_OT_LAYOUT_GLYPH_PROPS_UNCLASSIFIED = 1 << HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED,
- HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH = 1 << HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH,
- HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE = 1 << HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE,
- HB_OT_LAYOUT_GLYPH_PROPS_MARK = 1 << HB_OT_LAYOUT_GLYPH_CLASS_MARK,
- HB_OT_LAYOUT_GLYPH_PROPS_COMPONENT = 1 << HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT
-} hb_ot_layout_glyph_class_mask_t;
-
-
-
-/*
- * GSUB/GPOS
- */
-
-/* lig_id / lig_comp
+/* lig_props: aka lig_id / lig_comp
*
* When a ligature is formed:
*
@@ -131,7 +255,9 @@ typedef enum {
* - The marks get lig_comp > 0, reflecting which component of the ligature
* they were applied to.
* - This is used in GPOS to attach marks to the right component of a ligature
- * in MarkLigPos.
+ * in MarkLigPos,
+ * - Note that when marks are ligated together, much of the above is skipped
+ * and the current lig_id reused.
*
* When a multiple-substitution is done:
*
@@ -141,156 +267,159 @@ typedef enum {
* multiple substitution in MarkBasePos.
*
* The numbers are also used in GPOS to do mark-to-mark positioning only
- * to marks that belong to the same component of a ligature in MarkMarPos.
+ * to marks that belong to the same component of the same ligature.
*/
+
+static inline void
+_hb_glyph_info_clear_lig_props (hb_glyph_info_t *info)
+{
+ info->lig_props() = 0;
+}
+
#define IS_LIG_BASE 0x10
+
static inline void
-set_lig_props_for_ligature (hb_glyph_info_t &info, unsigned int lig_id, unsigned int lig_num_comps)
+_hb_glyph_info_set_lig_props_for_ligature (hb_glyph_info_t *info,
+ unsigned int lig_id,
+ unsigned int lig_num_comps)
{
- info.lig_props() = (lig_id << 5) | IS_LIG_BASE | (lig_num_comps & 0x0F);
+ info->lig_props() = (lig_id << 5) | IS_LIG_BASE | (lig_num_comps & 0x0F);
}
+
static inline void
-set_lig_props_for_mark (hb_glyph_info_t &info, unsigned int lig_id, unsigned int lig_comp)
+_hb_glyph_info_set_lig_props_for_mark (hb_glyph_info_t *info,
+ unsigned int lig_id,
+ unsigned int lig_comp)
{
- info.lig_props() = (lig_id << 5) | (lig_comp & 0x0F);
+ info->lig_props() = (lig_id << 5) | (lig_comp & 0x0F);
}
+
static inline void
-set_lig_props_for_component (hb_glyph_info_t &info, unsigned int comp)
+_hb_glyph_info_set_lig_props_for_component (hb_glyph_info_t *info, unsigned int comp)
{
- set_lig_props_for_mark (info, 0, comp);
+ _hb_glyph_info_set_lig_props_for_mark (info, 0, comp);
}
static inline unsigned int
-get_lig_id (const hb_glyph_info_t &info)
+_hb_glyph_info_get_lig_id (const hb_glyph_info_t *info)
{
- return info.lig_props() >> 5;
+ return info->lig_props() >> 5;
}
+
static inline bool
-is_a_ligature (const hb_glyph_info_t &info)
+_hb_glyph_info_ligated_internal (const hb_glyph_info_t *info)
{
- return !!(info.lig_props() & IS_LIG_BASE);
+ return !!(info->lig_props() & IS_LIG_BASE);
}
+
static inline unsigned int
-get_lig_comp (const hb_glyph_info_t &info)
+_hb_glyph_info_get_lig_comp (const hb_glyph_info_t *info)
{
- if (is_a_ligature (info))
+ if (_hb_glyph_info_ligated_internal (info))
return 0;
else
- return info.lig_props() & 0x0F;
+ return info->lig_props() & 0x0F;
}
+
static inline unsigned int
-get_lig_num_comps (const hb_glyph_info_t &info)
+_hb_glyph_info_get_lig_num_comps (const hb_glyph_info_t *info)
{
- if ((info.glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE) && is_a_ligature (info))
- return info.lig_props() & 0x0F;
+ if ((info->glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE) &&
+ _hb_glyph_info_ligated_internal (info))
+ return info->lig_props() & 0x0F;
else
return 1;
}
-static inline uint8_t allocate_lig_id (hb_buffer_t *buffer) {
+static inline uint8_t
+_hb_allocate_lig_id (hb_buffer_t *buffer) {
uint8_t lig_id = buffer->next_serial () & 0x07;
if (unlikely (!lig_id))
- lig_id = allocate_lig_id (buffer); /* in case of overflow */
+ lig_id = _hb_allocate_lig_id (buffer); /* in case of overflow */
return lig_id;
}
+/* glyph_props: */
-HB_INTERNAL hb_bool_t
-hb_ot_layout_lookup_would_substitute_fast (hb_face_t *face,
- unsigned int lookup_index,
- const hb_codepoint_t *glyphs,
- unsigned int glyphs_length,
- hb_bool_t zero_context);
-
-
-/* Should be called before all the substitute_lookup's are done. */
-HB_INTERNAL void
-hb_ot_layout_substitute_start (hb_font_t *font,
- hb_buffer_t *buffer);
-
-
-struct hb_ot_layout_lookup_accelerator_t;
-
-namespace OT {
- struct hb_apply_context_t;
- struct SubstLookup;
+inline void
+_hb_glyph_info_set_glyph_props (hb_glyph_info_t *info, unsigned int props)
+{
+ info->glyph_props() = props;
}
-HB_INTERNAL void
-hb_ot_layout_substitute_lookup (OT::hb_apply_context_t *c,
- const OT::SubstLookup &lookup,
- const hb_ot_layout_lookup_accelerator_t &accel);
-
-
-/* Should be called after all the substitute_lookup's are done */
-HB_INTERNAL void
-hb_ot_layout_substitute_finish (hb_font_t *font,
- hb_buffer_t *buffer);
-
-
-/* Should be called before all the position_lookup's are done. Resets positions to zero. */
-HB_INTERNAL void
-hb_ot_layout_position_start (hb_font_t *font,
- hb_buffer_t *buffer);
-
-/* Should be called after all the position_lookup's are done */
-HB_INTERNAL void
-hb_ot_layout_position_finish (hb_font_t *font,
- hb_buffer_t *buffer);
-
-
-
-/*
- * hb_ot_layout_t
- */
-
-namespace OT {
- struct GDEF;
- struct GSUB;
- struct GPOS;
+inline unsigned int
+_hb_glyph_info_get_glyph_props (const hb_glyph_info_t *info)
+{
+ return info->glyph_props();
}
-struct hb_ot_layout_lookup_accelerator_t
+inline bool
+_hb_glyph_info_is_base_glyph (const hb_glyph_info_t *info)
{
- template <typename TLookup>
- inline void init (const TLookup &lookup)
- {
- digest.init ();
- lookup.add_coverage (&digest);
- }
+ return !!(info->glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH);
+}
- template <typename TLookup>
- inline void fini (const TLookup &lookup)
- {
- }
+inline bool
+_hb_glyph_info_is_ligature (const hb_glyph_info_t *info)
+{
+ return !!(info->glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE);
+}
- hb_set_digest_t digest;
-};
+inline bool
+_hb_glyph_info_is_mark (const hb_glyph_info_t *info)
+{
+ return !!(info->glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MARK);
+}
-struct hb_ot_layout_t
+static inline bool
+_hb_glyph_info_substituted (const hb_glyph_info_t *info)
{
- hb_blob_t *gdef_blob;
- hb_blob_t *gsub_blob;
- hb_blob_t *gpos_blob;
+ return !!(info->glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED);
+}
- const struct OT::GDEF *gdef;
- const struct OT::GSUB *gsub;
- const struct OT::GPOS *gpos;
+static inline bool
+_hb_glyph_info_ligated (const hb_glyph_info_t *info)
+{
+ return !!(info->glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_LIGATED);
+}
- unsigned int gsub_lookup_count;
- unsigned int gpos_lookup_count;
+/* Allocation / deallocation. */
- hb_ot_layout_lookup_accelerator_t *gsub_accels;
- hb_ot_layout_lookup_accelerator_t *gpos_accels;
-};
+inline void
+_hb_buffer_allocate_unicode_vars (hb_buffer_t *buffer)
+{
+ HB_BUFFER_ALLOCATE_VAR (buffer, unicode_props0);
+ HB_BUFFER_ALLOCATE_VAR (buffer, unicode_props1);
+}
+inline void
+_hb_buffer_deallocate_unicode_vars (hb_buffer_t *buffer)
+{
+ HB_BUFFER_DEALLOCATE_VAR (buffer, unicode_props0);
+ HB_BUFFER_DEALLOCATE_VAR (buffer, unicode_props1);
+}
-HB_INTERNAL hb_ot_layout_t *
-_hb_ot_layout_create (hb_face_t *face);
+inline void
+_hb_buffer_allocate_gsubgpos_vars (hb_buffer_t *buffer)
+{
+ HB_BUFFER_ALLOCATE_VAR (buffer, glyph_props);
+ HB_BUFFER_ALLOCATE_VAR (buffer, lig_props);
+ HB_BUFFER_ALLOCATE_VAR (buffer, syllable);
+}
-HB_INTERNAL void
-_hb_ot_layout_destroy (hb_ot_layout_t *layout);
+inline void
+_hb_buffer_deallocate_gsubgpos_vars (hb_buffer_t *buffer)
+{
+ HB_BUFFER_DEALLOCATE_VAR (buffer, syllable);
+ HB_BUFFER_DEALLOCATE_VAR (buffer, lig_props);
+ HB_BUFFER_DEALLOCATE_VAR (buffer, glyph_props);
+}
+/* Make sure no one directly touches our props... */
+#undef unicode_props0
+#undef unicode_props1
+#undef lig_props
+#undef glyph_props
#endif /* HB_OT_LAYOUT_PRIVATE_HH */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout.cc
index 07c093f8f4f..183726e63cf 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout.cc
@@ -429,6 +429,7 @@ hb_ot_layout_table_get_lookup_count (hb_face_t *face,
return hb_ot_layout_from_face (face)->gpos_lookup_count;
}
}
+ return 0;
}
static void
@@ -782,6 +783,7 @@ hb_ot_layout_get_size_params (hb_face_t *face,
struct GSUBProxy
{
static const unsigned int table_index = 0;
+ static const bool inplace = false;
typedef OT::SubstLookup Lookup;
GSUBProxy (hb_face_t *face) :
@@ -795,6 +797,7 @@ struct GSUBProxy
struct GPOSProxy
{
static const unsigned int table_index = 1;
+ static const bool inplace = true;
typedef OT::PosLookup Lookup;
GPOSProxy (hb_face_t *face) :
@@ -822,10 +825,9 @@ apply_string (OT::hb_apply_context_t *c,
const hb_ot_layout_lookup_accelerator_t &accel)
{
bool ret = false;
- OT::hb_is_inplace_context_t inplace_c (c->face);
- bool inplace = lookup.is_inplace (&inplace_c);
+ hb_buffer_t *buffer = c->buffer;
- if (unlikely (!c->buffer->len || !c->lookup_mask))
+ if (unlikely (!buffer->len || !c->lookup_mask))
return false;
c->set_lookup (lookup);
@@ -834,43 +836,43 @@ apply_string (OT::hb_apply_context_t *c,
{
/* in/out forward substitution/positioning */
if (Proxy::table_index == 0)
- c->buffer->clear_output ();
- c->buffer->idx = 0;
+ buffer->clear_output ();
+ buffer->idx = 0;
- while (c->buffer->idx < c->buffer->len)
+ while (buffer->idx < buffer->len)
{
- if (accel.digest.may_have (c->buffer->cur().codepoint) &&
- (c->buffer->cur().mask & c->lookup_mask) &&
+ if (accel.digest.may_have (buffer->cur().codepoint) &&
+ (buffer->cur().mask & c->lookup_mask) &&
apply_once (c, lookup))
ret = true;
else
- c->buffer->next_glyph ();
+ buffer->next_glyph ();
}
if (ret)
{
- if (!inplace)
- c->buffer->swap_buffers ();
+ if (!Proxy::inplace)
+ buffer->swap_buffers ();
else
- assert (!c->buffer->has_separate_output ());
+ assert (!buffer->has_separate_output ());
}
}
else
{
/* in-place backward substitution/positioning */
if (Proxy::table_index == 0)
- c->buffer->remove_output ();
- c->buffer->idx = c->buffer->len - 1;
+ buffer->remove_output ();
+ buffer->idx = buffer->len - 1;
do
{
- if (accel.digest.may_have (c->buffer->cur().codepoint) &&
- (c->buffer->cur().mask & c->lookup_mask) &&
+ if (accel.digest.may_have (buffer->cur().codepoint) &&
+ (buffer->cur().mask & c->lookup_mask) &&
apply_once (c, lookup))
ret = true;
- else
- c->buffer->idx--;
+ /* The reverse lookup doesn't "advance" cursor (for good reason). */
+ buffer->idx--;
}
- while ((int) c->buffer->idx >= 0);
+ while ((int) buffer->idx >= 0);
}
return ret;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout.h
index dfc7f2446f7..dfc7f2446f7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-layout.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-layout.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-map-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-map-private.hh
index 0e718a6f1f5..0e718a6f1f5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-map-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-map-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-map.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-map.cc
index 17dc934e2fa..17dc934e2fa 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-map.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-map.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-maxp-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-maxp-table.hh
index e6d255579c6..e6d255579c6 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-maxp-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-maxp-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-name-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-name-table.hh
index 07dc0565ca6..07dc0565ca6 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-name-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-name-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-arabic-fallback.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-arabic-fallback.hh
index 6b2b87e3f28..6b2b87e3f28 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-arabic-fallback.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-arabic-fallback.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-arabic-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-arabic-table.hh
index 730a275bf0a..730a275bf0a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-arabic-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-arabic-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-arabic.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-arabic.cc
index a57e81a5ecf..4f6c86e8ee5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-arabic.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-arabic.cc
@@ -157,6 +157,11 @@ static const struct arabic_state_table_entry {
static void
+nuke_joiners (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer);
+
+static void
arabic_fallback_shape (const hb_ot_shape_plan_t *plan,
hb_font_t *font,
hb_buffer_t *buffer);
@@ -176,6 +181,8 @@ collect_features_arabic (hb_ot_shape_planner_t *plan)
* TODO: Add test cases for these two.
*/
+ map->add_gsub_pause (nuke_joiners);
+
map->add_global_bool_feature (HB_TAG('c','c','m','p'));
map->add_global_bool_feature (HB_TAG('l','o','c','l'));
@@ -273,7 +280,8 @@ arabic_joining (hb_buffer_t *buffer)
const arabic_state_table_entry *entry = &arabic_state_table[state][this_type];
if (entry->prev_action != NONE && prev != (unsigned int) -1)
- buffer->info[prev].arabic_shaping_action() = entry->prev_action;
+ for (; prev < i; prev++)
+ buffer->info[prev].arabic_shaping_action() = entry->prev_action;
buffer->info[i].arabic_shaping_action() = entry->curr_action;
@@ -314,6 +322,17 @@ setup_masks_arabic (const hb_ot_shape_plan_t *plan,
static void
+nuke_joiners (const hb_ot_shape_plan_t *plan HB_UNUSED,
+ hb_font_t *font HB_UNUSED,
+ hb_buffer_t *buffer)
+{
+ unsigned int count = buffer->len;
+ for (unsigned int i = 0; i < count; i++)
+ if (_hb_glyph_info_is_zwj (&buffer->info[i]))
+ _hb_glyph_info_flip_joiners (&buffer->info[i]);
+}
+
+static void
arabic_fallback_shape (const hb_ot_shape_plan_t *plan,
hb_font_t *font,
hb_buffer_t *buffer)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-default.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-default.cc
index d6afa0e1c11..d6afa0e1c11 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-default.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-default.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic-machine.hh
new file mode 100644
index 00000000000..747315b7a2a
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic-machine.hh
@@ -0,0 +1,1824 @@
+
+#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, 31u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 18u, 3u, 31u,
+ 3u, 31u, 4u, 31u, 1u, 18u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 18u, 3u, 31u,
+ 3u, 31u, 4u, 31u, 1u, 18u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 18u, 8u, 18u,
+ 5u, 10u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 18u, 3u, 18u, 8u, 18u,
+ 3u, 10u, 8u, 10u, 3u, 18u, 3u, 18u, 3u, 18u, 3u, 18u, 4u, 18u, 5u, 18u,
+ 3u, 18u, 4u, 18u, 5u, 18u, 3u, 18u, 4u, 18u, 5u, 18u, 3u, 18u, 4u, 18u,
+ 6u, 18u, 3u, 18u, 1u, 18u, 4u, 31u, 4u, 18u, 3u, 31u, 3u, 31u, 1u, 18u,
+ 1u, 18u, 1u, 18u, 1u, 18u, 1u, 18u, 3u, 31u, 3u, 31u, 1u, 18u, 1u, 18u,
+ 1u, 18u, 1u, 18u, 1u, 18u, 3u, 31u, 3u, 31u, 1u, 18u, 1u, 18u, 1u, 18u,
+ 1u, 18u, 1u, 18u, 3u, 31u, 3u, 31u, 1u, 18u, 1u, 18u, 1u, 18u, 1u, 18u,
+ 1u, 18u, 3u, 31u, 3u, 31u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 18u, 3u, 31u,
+ 3u, 31u, 4u, 31u, 1u, 18u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 18u, 3u, 31u,
+ 3u, 31u, 4u, 31u, 1u, 18u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 18u, 8u, 18u,
+ 5u, 10u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 18u, 3u, 18u, 8u, 18u,
+ 3u, 10u, 8u, 10u, 3u, 18u, 3u, 18u, 3u, 18u, 3u, 18u, 4u, 18u, 5u, 18u,
+ 3u, 18u, 4u, 18u, 5u, 18u, 3u, 18u, 4u, 18u, 5u, 18u, 3u, 18u, 4u, 18u,
+ 6u, 18u, 3u, 18u, 1u, 18u, 4u, 31u, 4u, 18u, 3u, 31u, 3u, 31u, 1u, 18u,
+ 1u, 18u, 1u, 18u, 1u, 18u, 1u, 18u, 3u, 31u, 3u, 31u, 1u, 18u, 1u, 18u,
+ 1u, 18u, 1u, 18u, 1u, 18u, 3u, 31u, 3u, 31u, 1u, 18u, 1u, 18u, 1u, 18u,
+ 1u, 18u, 1u, 18u, 3u, 31u, 3u, 31u, 1u, 18u, 1u, 18u, 1u, 18u, 1u, 18u,
+ 4u, 14u, 1u, 18u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 18u, 3u, 31u, 3u, 31u,
+ 4u, 31u, 1u, 18u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 18u, 3u, 31u, 3u, 31u,
+ 4u, 31u, 1u, 18u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 18u, 8u, 18u, 5u, 10u,
+ 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 18u, 3u, 18u, 8u, 18u, 3u, 10u,
+ 8u, 10u, 3u, 18u, 3u, 18u, 3u, 18u, 3u, 18u, 4u, 18u, 5u, 18u, 3u, 18u,
+ 4u, 18u, 5u, 18u, 3u, 18u, 4u, 18u, 5u, 18u, 3u, 18u, 4u, 18u, 6u, 18u,
+ 3u, 18u, 1u, 18u, 4u, 31u, 4u, 18u, 3u, 31u, 3u, 31u, 1u, 18u, 1u, 18u,
+ 1u, 18u, 1u, 18u, 1u, 18u, 3u, 31u, 3u, 31u, 1u, 18u, 1u, 18u, 1u, 18u,
+ 1u, 18u, 1u, 18u, 3u, 31u, 3u, 31u, 1u, 18u, 1u, 18u, 1u, 18u, 1u, 18u,
+ 1u, 18u, 3u, 31u, 3u, 31u, 1u, 18u, 1u, 18u, 1u, 18u, 1u, 18u, 1u, 18u,
+ 4u, 14u, 3u, 31u, 4u, 14u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 18u, 3u, 31u,
+ 3u, 31u, 4u, 31u, 1u, 18u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 18u, 3u, 31u,
+ 3u, 31u, 4u, 31u, 1u, 18u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 18u, 8u, 18u,
+ 5u, 10u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 18u, 3u, 18u, 8u, 18u,
+ 3u, 10u, 8u, 10u, 3u, 18u, 3u, 18u, 3u, 18u, 3u, 18u, 4u, 18u, 5u, 18u,
+ 3u, 18u, 4u, 18u, 5u, 18u, 3u, 18u, 4u, 18u, 5u, 18u, 3u, 18u, 4u, 18u,
+ 6u, 18u, 3u, 18u, 1u, 18u, 4u, 31u, 4u, 18u, 3u, 31u, 3u, 31u, 1u, 18u,
+ 1u, 18u, 1u, 18u, 1u, 18u, 1u, 18u, 3u, 31u, 3u, 31u, 1u, 18u, 1u, 18u,
+ 1u, 18u, 1u, 18u, 1u, 18u, 3u, 31u, 3u, 31u, 1u, 18u, 1u, 18u, 1u, 18u,
+ 1u, 18u, 1u, 18u, 3u, 31u, 3u, 31u, 1u, 18u, 1u, 18u, 1u, 18u, 1u, 18u,
+ 1u, 18u, 3u, 31u, 1u, 31u, 3u, 31u, 1u, 31u, 4u, 18u, 1u, 18u, 3u, 31u,
+ 3u, 31u, 4u, 31u, 5u, 10u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 10u,
+ 8u, 10u, 3u, 31u, 3u, 31u, 1u, 18u, 3u, 18u, 4u, 18u, 5u, 18u, 3u, 18u,
+ 4u, 18u, 5u, 18u, 3u, 18u, 4u, 18u, 5u, 18u, 3u, 18u, 4u, 18u, 8u, 18u,
+ 3u, 18u, 3u, 18u, 8u, 18u, 3u, 18u, 3u, 18u, 1u, 18u, 3u, 10u, 8u, 10u,
+ 5u, 10u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 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, 31, 29, 29, 28, 18, 29,
+ 29, 28, 18, 29, 29, 28, 18, 29,
+ 29, 28, 18, 29, 29, 28, 14, 11,
+ 6, 2, 2, 1, 6, 16, 16, 11,
+ 8, 3, 16, 16, 16, 16, 15, 14,
+ 16, 15, 14, 16, 15, 14, 16, 15,
+ 13, 16, 18, 28, 15, 29, 29, 18,
+ 18, 18, 18, 18, 29, 29, 18, 18,
+ 18, 18, 18, 29, 29, 18, 18, 18,
+ 18, 18, 29, 29, 18, 18, 18, 18,
+ 18, 29, 29, 29, 29, 28, 18, 29,
+ 29, 28, 18, 29, 29, 28, 18, 29,
+ 29, 28, 18, 29, 29, 28, 14, 11,
+ 6, 2, 2, 1, 6, 16, 16, 11,
+ 8, 3, 16, 16, 16, 16, 15, 14,
+ 16, 15, 14, 16, 15, 14, 16, 15,
+ 13, 16, 18, 28, 15, 29, 29, 18,
+ 18, 18, 18, 18, 29, 29, 18, 18,
+ 18, 18, 18, 29, 29, 18, 18, 18,
+ 18, 18, 29, 29, 18, 18, 18, 18,
+ 11, 18, 29, 29, 28, 18, 29, 29,
+ 28, 18, 29, 29, 28, 18, 29, 29,
+ 28, 18, 29, 29, 28, 14, 11, 6,
+ 2, 2, 1, 6, 16, 16, 11, 8,
+ 3, 16, 16, 16, 16, 15, 14, 16,
+ 15, 14, 16, 15, 14, 16, 15, 13,
+ 16, 18, 28, 15, 29, 29, 18, 18,
+ 18, 18, 18, 29, 29, 18, 18, 18,
+ 18, 18, 29, 29, 18, 18, 18, 18,
+ 18, 29, 29, 18, 18, 18, 18, 18,
+ 11, 29, 11, 29, 29, 28, 18, 29,
+ 29, 28, 18, 29, 29, 28, 18, 29,
+ 29, 28, 18, 29, 29, 28, 14, 11,
+ 6, 2, 2, 1, 6, 16, 16, 11,
+ 8, 3, 16, 16, 16, 16, 15, 14,
+ 16, 15, 14, 16, 15, 14, 16, 15,
+ 13, 16, 18, 28, 15, 29, 29, 18,
+ 18, 18, 18, 18, 29, 29, 18, 18,
+ 18, 18, 18, 29, 29, 18, 18, 18,
+ 18, 18, 29, 29, 18, 18, 18, 18,
+ 18, 29, 31, 29, 31, 15, 18, 29,
+ 29, 28, 6, 2, 2, 1, 6, 8,
+ 3, 29, 29, 18, 16, 15, 14, 16,
+ 15, 14, 16, 15, 14, 16, 15, 11,
+ 16, 16, 11, 16, 16, 18, 8, 3,
+ 6, 2, 2, 1, 6
+};
+
+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, 982, 1012, 1042, 1071, 1090,
+ 1120, 1150, 1179, 1198, 1228, 1258, 1287, 1306,
+ 1336, 1366, 1395, 1414, 1444, 1474, 1503, 1518,
+ 1530, 1537, 1540, 1543, 1545, 1552, 1569, 1586,
+ 1598, 1607, 1611, 1628, 1645, 1662, 1679, 1695,
+ 1710, 1727, 1743, 1758, 1775, 1791, 1806, 1823,
+ 1839, 1853, 1870, 1889, 1918, 1934, 1964, 1994,
+ 2013, 2032, 2051, 2070, 2089, 2119, 2149, 2168,
+ 2187, 2206, 2225, 2244, 2274, 2304, 2323, 2342,
+ 2361, 2380, 2399, 2429, 2459, 2478, 2497, 2516,
+ 2535, 2554, 2584, 2614, 2644, 2674, 2703, 2722,
+ 2752, 2782, 2811, 2830, 2860, 2890, 2919, 2938,
+ 2968, 2998, 3027, 3046, 3076, 3106, 3135, 3150,
+ 3162, 3169, 3172, 3175, 3177, 3184, 3201, 3218,
+ 3230, 3239, 3243, 3260, 3277, 3294, 3311, 3327,
+ 3342, 3359, 3375, 3390, 3407, 3423, 3438, 3455,
+ 3471, 3485, 3502, 3521, 3550, 3566, 3596, 3626,
+ 3645, 3664, 3683, 3702, 3721, 3751, 3781, 3800,
+ 3819, 3838, 3857, 3876, 3906, 3936, 3955, 3974,
+ 3993, 4012, 4031, 4061, 4091, 4110, 4129, 4148,
+ 4167, 4179, 4198, 4228, 4258, 4287, 4306, 4336,
+ 4366, 4395, 4414, 4444, 4474, 4503, 4522, 4552,
+ 4582, 4611, 4630, 4660, 4690, 4719, 4734, 4746,
+ 4753, 4756, 4759, 4761, 4768, 4785, 4802, 4814,
+ 4823, 4827, 4844, 4861, 4878, 4895, 4911, 4926,
+ 4943, 4959, 4974, 4991, 5007, 5022, 5039, 5055,
+ 5069, 5086, 5105, 5134, 5150, 5180, 5210, 5229,
+ 5248, 5267, 5286, 5305, 5335, 5365, 5384, 5403,
+ 5422, 5441, 5460, 5490, 5520, 5539, 5558, 5577,
+ 5596, 5615, 5645, 5675, 5694, 5713, 5732, 5751,
+ 5770, 5782, 5812, 5824, 5854, 5884, 5913, 5932,
+ 5962, 5992, 6021, 6040, 6070, 6100, 6129, 6148,
+ 6178, 6208, 6237, 6256, 6286, 6316, 6345, 6360,
+ 6372, 6379, 6382, 6385, 6387, 6394, 6411, 6428,
+ 6440, 6449, 6453, 6470, 6487, 6504, 6521, 6537,
+ 6552, 6569, 6585, 6600, 6617, 6633, 6648, 6665,
+ 6681, 6695, 6712, 6731, 6760, 6776, 6806, 6836,
+ 6855, 6874, 6893, 6912, 6931, 6961, 6991, 7010,
+ 7029, 7048, 7067, 7086, 7116, 7146, 7165, 7184,
+ 7203, 7222, 7241, 7271, 7301, 7320, 7339, 7358,
+ 7377, 7396, 7426, 7458, 7488, 7520, 7536, 7555,
+ 7585, 7615, 7644, 7651, 7654, 7657, 7659, 7666,
+ 7675, 7679, 7709, 7739, 7758, 7775, 7791, 7806,
+ 7823, 7839, 7854, 7871, 7887, 7902, 7919, 7935,
+ 7947, 7964, 7981, 7993, 8010, 8027, 8046, 8055,
+ 8059, 8066, 8069, 8072, 8074
+};
+
+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, 189,
+ 190, 190, 152, 191, 192, 193, 194, 195,
+ 180, 180, 180, 180, 180, 180, 180, 180,
+ 180, 180, 180, 180, 196, 180, 198, 199,
+ 200, 201, 5, 202, 203, 204, 197, 197,
+ 37, 205, 197, 197, 206, 207, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 208, 197, 209, 199, 210, 210,
+ 5, 202, 203, 204, 197, 197, 197, 205,
+ 197, 197, 206, 207, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 208, 197, 199, 210, 210, 5, 202, 203,
+ 204, 197, 197, 197, 205, 197, 197, 206,
+ 207, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 208, 197, 211,
+ 197, 197, 197, 18, 212, 197, 202, 203,
+ 204, 197, 197, 197, 213, 197, 211, 197,
+ 207, 197, 214, 215, 216, 217, 5, 202,
+ 203, 204, 197, 197, 35, 218, 197, 197,
+ 206, 207, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 208, 197,
+ 219, 215, 220, 220, 5, 202, 203, 204,
+ 197, 197, 197, 218, 197, 197, 206, 207,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 208, 197, 215, 220,
+ 220, 5, 202, 203, 204, 197, 197, 197,
+ 218, 197, 197, 206, 207, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 208, 197, 221, 197, 197, 197, 18,
+ 222, 197, 202, 203, 204, 197, 197, 197,
+ 213, 197, 221, 197, 207, 197, 223, 224,
+ 225, 226, 5, 202, 203, 204, 197, 197,
+ 33, 227, 197, 197, 206, 207, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 208, 197, 228, 224, 229, 229,
+ 5, 202, 203, 204, 197, 197, 197, 227,
+ 197, 197, 206, 207, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 208, 197, 224, 229, 229, 5, 202, 203,
+ 204, 197, 197, 197, 227, 197, 197, 206,
+ 207, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 208, 197, 230,
+ 197, 197, 197, 18, 231, 197, 202, 203,
+ 204, 197, 197, 197, 213, 197, 230, 197,
+ 207, 197, 232, 233, 234, 235, 5, 202,
+ 203, 204, 197, 197, 31, 236, 197, 197,
+ 206, 207, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 208, 197,
+ 237, 233, 238, 238, 5, 202, 203, 204,
+ 197, 197, 197, 236, 197, 197, 206, 207,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 208, 197, 233, 238,
+ 238, 5, 202, 203, 204, 197, 197, 197,
+ 236, 197, 197, 206, 207, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 208, 197, 239, 197, 197, 197, 18,
+ 240, 197, 202, 203, 204, 197, 197, 197,
+ 213, 197, 239, 197, 207, 197, 241, 242,
+ 243, 244, 5, 202, 203, 204, 197, 197,
+ 29, 245, 197, 197, 206, 207, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 208, 197, 246, 242, 247, 247,
+ 5, 202, 203, 204, 197, 197, 197, 245,
+ 197, 197, 206, 207, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 208, 197, 242, 247, 247, 5, 202, 203,
+ 204, 197, 197, 197, 245, 197, 197, 206,
+ 207, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 208, 197, 18,
+ 248, 197, 202, 203, 204, 197, 197, 197,
+ 213, 197, 197, 197, 207, 197, 202, 203,
+ 204, 197, 197, 197, 213, 197, 197, 197,
+ 207, 197, 249, 197, 197, 250, 203, 204,
+ 197, 203, 204, 197, 203, 251, 197, 203,
+ 197, 249, 197, 197, 197, 203, 204, 197,
+ 252, 197, 253, 254, 197, 202, 203, 204,
+ 197, 197, 3, 197, 197, 197, 197, 207,
+ 197, 2, 197, 197, 197, 197, 202, 203,
+ 204, 197, 197, 197, 197, 197, 197, 197,
+ 207, 197, 202, 203, 204, 197, 197, 197,
+ 197, 197, 197, 197, 207, 197, 255, 197,
+ 197, 197, 197, 202, 203, 204, 197, 202,
+ 203, 204, 197, 252, 197, 197, 197, 197,
+ 202, 203, 204, 197, 197, 197, 197, 197,
+ 197, 197, 207, 197, 252, 197, 253, 197,
+ 197, 202, 203, 204, 197, 197, 3, 197,
+ 197, 197, 197, 207, 197, 18, 197, 256,
+ 256, 5, 202, 203, 204, 197, 197, 197,
+ 213, 197, 197, 197, 207, 197, 257, 27,
+ 258, 259, 8, 202, 203, 204, 197, 197,
+ 197, 213, 197, 197, 197, 207, 197, 27,
+ 258, 259, 8, 202, 203, 204, 197, 197,
+ 197, 213, 197, 197, 197, 207, 197, 258,
+ 258, 8, 202, 203, 204, 197, 197, 197,
+ 213, 197, 197, 197, 207, 197, 260, 24,
+ 261, 262, 11, 202, 203, 204, 197, 197,
+ 197, 213, 197, 197, 197, 207, 197, 24,
+ 261, 262, 11, 202, 203, 204, 197, 197,
+ 197, 213, 197, 197, 197, 207, 197, 261,
+ 261, 11, 202, 203, 204, 197, 197, 197,
+ 213, 197, 197, 197, 207, 197, 263, 21,
+ 264, 265, 14, 202, 203, 204, 197, 197,
+ 197, 213, 197, 197, 197, 207, 197, 21,
+ 264, 265, 14, 202, 203, 204, 197, 197,
+ 197, 213, 197, 197, 197, 207, 197, 264,
+ 264, 14, 202, 203, 204, 197, 197, 197,
+ 213, 197, 197, 197, 207, 197, 266, 18,
+ 197, 267, 197, 202, 203, 204, 197, 197,
+ 197, 213, 197, 197, 197, 207, 197, 18,
+ 197, 267, 197, 202, 203, 204, 197, 197,
+ 197, 213, 197, 197, 197, 207, 197, 268,
+ 197, 202, 203, 204, 197, 197, 197, 213,
+ 197, 197, 197, 207, 197, 18, 197, 197,
+ 197, 197, 202, 203, 204, 197, 197, 197,
+ 213, 197, 197, 197, 207, 197, 1, 2,
+ 197, 197, 18, 248, 197, 202, 203, 204,
+ 197, 197, 197, 213, 197, 1, 197, 207,
+ 197, 242, 247, 247, 5, 202, 203, 204,
+ 197, 197, 197, 245, 197, 197, 197, 207,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 208, 197, 242, 247,
+ 247, 5, 202, 203, 204, 197, 197, 197,
+ 245, 197, 197, 197, 207, 197, 241, 242,
+ 247, 247, 5, 202, 203, 204, 197, 197,
+ 197, 245, 197, 197, 206, 207, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 208, 197, 241, 242, 243, 247,
+ 5, 202, 203, 204, 197, 197, 29, 245,
+ 197, 197, 206, 207, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 208, 197, 239, 197, 269, 197, 256, 256,
+ 5, 202, 203, 204, 197, 197, 197, 213,
+ 197, 239, 197, 207, 197, 239, 197, 197,
+ 197, 197, 197, 197, 202, 203, 204, 197,
+ 197, 197, 213, 197, 239, 197, 207, 197,
+ 239, 197, 197, 197, 197, 270, 197, 202,
+ 203, 204, 197, 197, 197, 213, 197, 239,
+ 197, 207, 197, 239, 197, 269, 197, 197,
+ 197, 197, 202, 203, 204, 197, 197, 197,
+ 213, 197, 239, 197, 207, 197, 239, 2,
+ 197, 197, 18, 240, 197, 202, 203, 204,
+ 197, 197, 197, 213, 197, 239, 197, 207,
+ 197, 232, 233, 238, 238, 5, 202, 203,
+ 204, 197, 197, 197, 236, 197, 197, 206,
+ 207, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 208, 197, 232,
+ 233, 234, 238, 5, 202, 203, 204, 197,
+ 197, 31, 236, 197, 197, 206, 207, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 208, 197, 230, 197, 271,
+ 197, 256, 256, 5, 202, 203, 204, 197,
+ 197, 197, 213, 197, 230, 197, 207, 197,
+ 230, 197, 197, 197, 197, 197, 197, 202,
+ 203, 204, 197, 197, 197, 213, 197, 230,
+ 197, 207, 197, 230, 197, 197, 197, 197,
+ 272, 197, 202, 203, 204, 197, 197, 197,
+ 213, 197, 230, 197, 207, 197, 230, 197,
+ 271, 197, 197, 197, 197, 202, 203, 204,
+ 197, 197, 197, 213, 197, 230, 197, 207,
+ 197, 230, 2, 197, 197, 18, 231, 197,
+ 202, 203, 204, 197, 197, 197, 213, 197,
+ 230, 197, 207, 197, 223, 224, 229, 229,
+ 5, 202, 203, 204, 197, 197, 197, 227,
+ 197, 197, 206, 207, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 208, 197, 223, 224, 225, 229, 5, 202,
+ 203, 204, 197, 197, 33, 227, 197, 197,
+ 206, 207, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 208, 197,
+ 221, 197, 273, 197, 256, 256, 5, 202,
+ 203, 204, 197, 197, 197, 213, 197, 221,
+ 197, 207, 197, 221, 197, 197, 197, 197,
+ 197, 197, 202, 203, 204, 197, 197, 197,
+ 213, 197, 221, 197, 207, 197, 221, 197,
+ 197, 197, 197, 274, 197, 202, 203, 204,
+ 197, 197, 197, 213, 197, 221, 197, 207,
+ 197, 221, 197, 273, 197, 197, 197, 197,
+ 202, 203, 204, 197, 197, 197, 213, 197,
+ 221, 197, 207, 197, 221, 2, 197, 197,
+ 18, 222, 197, 202, 203, 204, 197, 197,
+ 197, 213, 197, 221, 197, 207, 197, 214,
+ 215, 220, 220, 5, 202, 203, 204, 197,
+ 197, 197, 218, 197, 197, 206, 207, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 208, 197, 214, 215, 216,
+ 220, 5, 202, 203, 204, 197, 197, 35,
+ 218, 197, 197, 206, 207, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 208, 197, 211, 197, 275, 197, 256,
+ 256, 5, 202, 203, 204, 197, 197, 197,
+ 213, 197, 211, 197, 207, 197, 211, 197,
+ 197, 197, 197, 197, 197, 202, 203, 204,
+ 197, 197, 197, 213, 197, 211, 197, 207,
+ 197, 211, 197, 197, 197, 197, 276, 197,
+ 202, 203, 204, 197, 197, 197, 213, 197,
+ 211, 197, 207, 197, 211, 197, 275, 197,
+ 197, 197, 197, 202, 203, 204, 197, 197,
+ 197, 213, 197, 211, 197, 207, 197, 211,
+ 2, 197, 197, 18, 212, 197, 202, 203,
+ 204, 197, 197, 197, 213, 197, 211, 197,
+ 207, 197, 198, 199, 210, 210, 5, 202,
+ 203, 204, 197, 197, 197, 205, 197, 197,
+ 206, 207, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 208, 197,
+ 198, 199, 200, 210, 5, 202, 203, 204,
+ 197, 197, 37, 205, 197, 197, 206, 207,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 208, 197, 278, 279,
+ 280, 281, 43, 282, 283, 284, 277, 277,
+ 75, 285, 277, 277, 286, 287, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 288, 277, 289, 279, 290, 281,
+ 43, 282, 283, 284, 277, 277, 277, 285,
+ 277, 277, 286, 287, 277, 277, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 288, 277, 279, 290, 281, 43, 282, 283,
+ 284, 277, 277, 277, 285, 277, 277, 286,
+ 287, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 277, 277, 277, 288, 277, 291,
+ 277, 277, 277, 56, 292, 277, 282, 283,
+ 284, 277, 277, 277, 293, 277, 291, 277,
+ 287, 277, 294, 295, 296, 297, 43, 282,
+ 283, 284, 277, 277, 73, 298, 277, 277,
+ 286, 287, 277, 277, 277, 277, 277, 277,
+ 277, 277, 277, 277, 277, 277, 288, 277,
+ 299, 295, 300, 300, 43, 282, 283, 284,
+ 277, 277, 277, 298, 277, 277, 286, 287,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 277, 277, 288, 277, 295, 300,
+ 300, 43, 282, 283, 284, 277, 277, 277,
+ 298, 277, 277, 286, 287, 277, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 277, 288, 277, 301, 277, 277, 277, 56,
+ 302, 277, 282, 283, 284, 277, 277, 277,
+ 293, 277, 301, 277, 287, 277, 303, 304,
+ 305, 306, 43, 282, 283, 284, 277, 277,
+ 71, 307, 277, 277, 286, 287, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 288, 277, 308, 304, 309, 309,
+ 43, 282, 283, 284, 277, 277, 277, 307,
+ 277, 277, 286, 287, 277, 277, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 288, 277, 304, 309, 309, 43, 282, 283,
+ 284, 277, 277, 277, 307, 277, 277, 286,
+ 287, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 277, 277, 277, 288, 277, 310,
+ 277, 277, 277, 56, 311, 277, 282, 283,
+ 284, 277, 277, 277, 293, 277, 310, 277,
+ 287, 277, 312, 313, 314, 315, 43, 282,
+ 283, 284, 277, 277, 69, 316, 277, 277,
+ 286, 287, 277, 277, 277, 277, 277, 277,
+ 277, 277, 277, 277, 277, 277, 288, 277,
+ 317, 313, 318, 318, 43, 282, 283, 284,
+ 277, 277, 277, 316, 277, 277, 286, 287,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 277, 277, 288, 277, 313, 318,
+ 318, 43, 282, 283, 284, 277, 277, 277,
+ 316, 277, 277, 286, 287, 277, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 277, 288, 277, 319, 277, 277, 277, 56,
+ 320, 277, 282, 283, 284, 277, 277, 277,
+ 293, 277, 319, 277, 287, 277, 321, 322,
+ 323, 324, 43, 282, 283, 284, 277, 277,
+ 67, 325, 277, 277, 286, 287, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 288, 277, 326, 322, 327, 327,
+ 43, 282, 283, 284, 277, 277, 277, 325,
+ 277, 277, 286, 287, 277, 277, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 288, 277, 322, 327, 327, 43, 282, 283,
+ 284, 277, 277, 277, 325, 277, 277, 286,
+ 287, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 277, 277, 277, 288, 277, 56,
+ 328, 277, 282, 283, 284, 277, 277, 277,
+ 293, 277, 277, 277, 287, 277, 282, 283,
+ 284, 277, 277, 277, 293, 277, 277, 277,
+ 287, 277, 329, 277, 277, 330, 283, 284,
+ 277, 283, 284, 277, 283, 331, 277, 283,
+ 277, 329, 277, 277, 277, 283, 284, 277,
+ 332, 277, 333, 334, 277, 282, 283, 284,
+ 277, 277, 41, 277, 277, 277, 277, 287,
+ 277, 40, 277, 277, 277, 277, 282, 283,
+ 284, 277, 277, 277, 277, 277, 277, 277,
+ 287, 277, 282, 283, 284, 277, 277, 277,
+ 277, 277, 277, 277, 287, 277, 335, 277,
+ 277, 277, 277, 282, 283, 284, 277, 282,
+ 283, 284, 277, 332, 277, 277, 277, 277,
+ 282, 283, 284, 277, 277, 277, 277, 277,
+ 277, 277, 287, 277, 332, 277, 333, 277,
+ 277, 282, 283, 284, 277, 277, 41, 277,
+ 277, 277, 277, 287, 277, 56, 277, 336,
+ 336, 43, 282, 283, 284, 277, 277, 277,
+ 293, 277, 277, 277, 287, 277, 337, 65,
+ 338, 339, 46, 282, 283, 284, 277, 277,
+ 277, 293, 277, 277, 277, 287, 277, 65,
+ 338, 339, 46, 282, 283, 284, 277, 277,
+ 277, 293, 277, 277, 277, 287, 277, 338,
+ 338, 46, 282, 283, 284, 277, 277, 277,
+ 293, 277, 277, 277, 287, 277, 340, 62,
+ 341, 342, 49, 282, 283, 284, 277, 277,
+ 277, 293, 277, 277, 277, 287, 277, 62,
+ 341, 342, 49, 282, 283, 284, 277, 277,
+ 277, 293, 277, 277, 277, 287, 277, 341,
+ 341, 49, 282, 283, 284, 277, 277, 277,
+ 293, 277, 277, 277, 287, 277, 343, 59,
+ 344, 345, 52, 282, 283, 284, 277, 277,
+ 277, 293, 277, 277, 277, 287, 277, 59,
+ 344, 345, 52, 282, 283, 284, 277, 277,
+ 277, 293, 277, 277, 277, 287, 277, 344,
+ 344, 52, 282, 283, 284, 277, 277, 277,
+ 293, 277, 277, 277, 287, 277, 346, 56,
+ 277, 347, 277, 282, 283, 284, 277, 277,
+ 277, 293, 277, 277, 277, 287, 277, 56,
+ 277, 347, 277, 282, 283, 284, 277, 277,
+ 277, 293, 277, 277, 277, 287, 277, 348,
+ 277, 282, 283, 284, 277, 277, 277, 293,
+ 277, 277, 277, 287, 277, 56, 277, 277,
+ 277, 277, 282, 283, 284, 277, 277, 277,
+ 293, 277, 277, 277, 287, 277, 39, 40,
+ 277, 277, 56, 328, 277, 282, 283, 284,
+ 277, 277, 277, 293, 277, 39, 277, 287,
+ 277, 322, 327, 327, 43, 282, 283, 284,
+ 277, 277, 277, 325, 277, 277, 277, 287,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 277, 277, 288, 277, 322, 327,
+ 327, 43, 282, 283, 284, 277, 277, 277,
+ 325, 277, 277, 277, 287, 277, 321, 322,
+ 327, 327, 43, 282, 283, 284, 277, 277,
+ 277, 325, 277, 277, 286, 287, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 288, 277, 321, 322, 323, 327,
+ 43, 282, 283, 284, 277, 277, 67, 325,
+ 277, 277, 286, 287, 277, 277, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 288, 277, 319, 277, 349, 277, 336, 336,
+ 43, 282, 283, 284, 277, 277, 277, 293,
+ 277, 319, 277, 287, 277, 319, 277, 277,
+ 277, 277, 277, 277, 282, 283, 284, 277,
+ 277, 277, 293, 277, 319, 277, 287, 277,
+ 319, 277, 277, 277, 277, 350, 277, 282,
+ 283, 284, 277, 277, 277, 293, 277, 319,
+ 277, 287, 277, 319, 277, 349, 277, 277,
+ 277, 277, 282, 283, 284, 277, 277, 277,
+ 293, 277, 319, 277, 287, 277, 319, 40,
+ 277, 277, 56, 320, 277, 282, 283, 284,
+ 277, 277, 277, 293, 277, 319, 277, 287,
+ 277, 312, 313, 318, 318, 43, 282, 283,
+ 284, 277, 277, 277, 316, 277, 277, 286,
+ 287, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 277, 277, 277, 288, 277, 312,
+ 313, 314, 318, 43, 282, 283, 284, 277,
+ 277, 69, 316, 277, 277, 286, 287, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 277, 288, 277, 310, 277, 351,
+ 277, 336, 336, 43, 282, 283, 284, 277,
+ 277, 277, 293, 277, 310, 277, 287, 277,
+ 310, 277, 277, 277, 277, 277, 277, 282,
+ 283, 284, 277, 277, 277, 293, 277, 310,
+ 277, 287, 277, 310, 277, 277, 277, 277,
+ 352, 277, 282, 283, 284, 277, 277, 277,
+ 293, 277, 310, 277, 287, 277, 310, 277,
+ 351, 277, 277, 277, 277, 282, 283, 284,
+ 277, 277, 277, 293, 277, 310, 277, 287,
+ 277, 310, 40, 277, 277, 56, 311, 277,
+ 282, 283, 284, 277, 277, 277, 293, 277,
+ 310, 277, 287, 277, 303, 304, 309, 309,
+ 43, 282, 283, 284, 277, 277, 277, 307,
+ 277, 277, 286, 287, 277, 277, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 288, 277, 303, 304, 305, 309, 43, 282,
+ 283, 284, 277, 277, 71, 307, 277, 277,
+ 286, 287, 277, 277, 277, 277, 277, 277,
+ 277, 277, 277, 277, 277, 277, 288, 277,
+ 301, 277, 353, 277, 336, 336, 43, 282,
+ 283, 284, 277, 277, 277, 293, 277, 301,
+ 277, 287, 277, 301, 277, 277, 277, 277,
+ 277, 277, 282, 283, 284, 277, 277, 277,
+ 293, 277, 301, 277, 287, 277, 301, 277,
+ 277, 277, 277, 354, 277, 282, 283, 284,
+ 277, 277, 277, 293, 277, 301, 277, 287,
+ 277, 301, 277, 353, 277, 277, 277, 277,
+ 282, 283, 284, 277, 277, 277, 293, 277,
+ 301, 277, 287, 277, 301, 40, 277, 277,
+ 56, 302, 277, 282, 283, 284, 277, 277,
+ 277, 293, 277, 301, 277, 287, 277, 294,
+ 295, 300, 300, 43, 282, 283, 284, 277,
+ 277, 277, 298, 277, 277, 286, 287, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 277, 288, 277, 294, 295, 296,
+ 300, 43, 282, 283, 284, 277, 277, 73,
+ 298, 277, 277, 286, 287, 277, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 277, 288, 277, 291, 277, 355, 277, 336,
+ 336, 43, 282, 283, 284, 277, 277, 277,
+ 293, 277, 291, 277, 287, 277, 291, 277,
+ 277, 277, 277, 277, 277, 282, 283, 284,
+ 277, 277, 277, 293, 277, 291, 277, 287,
+ 277, 291, 277, 277, 277, 277, 356, 277,
+ 282, 283, 284, 277, 277, 277, 293, 277,
+ 291, 277, 287, 277, 291, 277, 355, 277,
+ 277, 277, 277, 282, 283, 284, 277, 277,
+ 277, 293, 277, 291, 277, 287, 277, 74,
+ 42, 42, 43, 277, 277, 277, 277, 277,
+ 277, 74, 277, 291, 40, 277, 277, 56,
+ 292, 277, 282, 283, 284, 277, 277, 277,
+ 293, 277, 291, 277, 287, 277, 278, 279,
+ 290, 281, 43, 282, 283, 284, 277, 277,
+ 277, 285, 277, 277, 286, 287, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 288, 277, 358, 184, 359, 359,
+ 81, 187, 188, 189, 357, 357, 357, 191,
+ 357, 357, 194, 360, 357, 357, 357, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 196, 357, 184, 359, 359, 81, 187, 188,
+ 189, 357, 357, 357, 191, 357, 357, 194,
+ 360, 357, 357, 357, 357, 357, 357, 357,
+ 357, 357, 357, 357, 357, 196, 357, 361,
+ 357, 357, 357, 95, 362, 357, 187, 188,
+ 189, 357, 357, 357, 363, 357, 361, 357,
+ 360, 357, 364, 365, 366, 367, 81, 187,
+ 188, 189, 357, 357, 112, 368, 357, 357,
+ 194, 360, 357, 357, 357, 357, 357, 357,
+ 357, 357, 357, 357, 357, 357, 196, 357,
+ 369, 365, 370, 370, 81, 187, 188, 189,
+ 357, 357, 357, 368, 357, 357, 194, 360,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 357, 357, 357, 357, 196, 357, 365, 370,
+ 370, 81, 187, 188, 189, 357, 357, 357,
+ 368, 357, 357, 194, 360, 357, 357, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 357, 196, 357, 371, 357, 357, 357, 95,
+ 372, 357, 187, 188, 189, 357, 357, 357,
+ 363, 357, 371, 357, 360, 357, 373, 374,
+ 375, 376, 81, 187, 188, 189, 357, 357,
+ 110, 377, 357, 357, 194, 360, 357, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 357, 357, 196, 357, 378, 374, 379, 379,
+ 81, 187, 188, 189, 357, 357, 357, 377,
+ 357, 357, 194, 360, 357, 357, 357, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 196, 357, 374, 379, 379, 81, 187, 188,
+ 189, 357, 357, 357, 377, 357, 357, 194,
+ 360, 357, 357, 357, 357, 357, 357, 357,
+ 357, 357, 357, 357, 357, 196, 357, 380,
+ 357, 357, 357, 95, 381, 357, 187, 188,
+ 189, 357, 357, 357, 363, 357, 380, 357,
+ 360, 357, 382, 383, 384, 385, 81, 187,
+ 188, 189, 357, 357, 108, 386, 357, 357,
+ 194, 360, 357, 357, 357, 357, 357, 357,
+ 357, 357, 357, 357, 357, 357, 196, 357,
+ 387, 383, 388, 388, 81, 187, 188, 189,
+ 357, 357, 357, 386, 357, 357, 194, 360,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 357, 357, 357, 357, 196, 357, 383, 388,
+ 388, 81, 187, 188, 189, 357, 357, 357,
+ 386, 357, 357, 194, 360, 357, 357, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 357, 196, 357, 389, 357, 357, 357, 95,
+ 390, 357, 187, 188, 189, 357, 357, 357,
+ 363, 357, 389, 357, 360, 357, 391, 392,
+ 393, 394, 81, 187, 188, 189, 357, 357,
+ 106, 395, 357, 357, 194, 360, 357, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 357, 357, 196, 357, 396, 392, 397, 397,
+ 81, 187, 188, 189, 357, 357, 357, 395,
+ 357, 357, 194, 360, 357, 357, 357, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 196, 357, 392, 397, 397, 81, 187, 188,
+ 189, 357, 357, 357, 395, 357, 357, 194,
+ 360, 357, 357, 357, 357, 357, 357, 357,
+ 357, 357, 357, 357, 357, 196, 357, 95,
+ 398, 357, 187, 188, 189, 357, 357, 357,
+ 363, 357, 357, 357, 360, 357, 187, 188,
+ 189, 357, 357, 357, 363, 357, 357, 357,
+ 360, 357, 399, 357, 357, 400, 188, 189,
+ 357, 188, 189, 357, 188, 401, 357, 188,
+ 357, 399, 357, 357, 357, 188, 189, 357,
+ 402, 357, 403, 404, 357, 187, 188, 189,
+ 357, 357, 79, 357, 357, 357, 357, 360,
+ 357, 78, 357, 357, 357, 357, 187, 188,
+ 189, 357, 357, 357, 357, 357, 357, 357,
+ 360, 357, 187, 188, 189, 357, 357, 357,
+ 357, 357, 357, 357, 360, 357, 405, 357,
+ 357, 357, 357, 187, 188, 189, 357, 187,
+ 188, 189, 357, 402, 357, 357, 357, 357,
+ 187, 188, 189, 357, 357, 357, 357, 357,
+ 357, 357, 360, 357, 402, 357, 403, 357,
+ 357, 187, 188, 189, 357, 357, 79, 357,
+ 357, 357, 357, 360, 357, 95, 357, 406,
+ 406, 81, 187, 188, 189, 357, 357, 357,
+ 363, 357, 357, 357, 360, 357, 407, 104,
+ 408, 409, 85, 187, 188, 189, 357, 357,
+ 357, 363, 357, 357, 357, 360, 357, 104,
+ 408, 409, 85, 187, 188, 189, 357, 357,
+ 357, 363, 357, 357, 357, 360, 357, 408,
+ 408, 85, 187, 188, 189, 357, 357, 357,
+ 363, 357, 357, 357, 360, 357, 410, 101,
+ 411, 412, 88, 187, 188, 189, 357, 357,
+ 357, 363, 357, 357, 357, 360, 357, 101,
+ 411, 412, 88, 187, 188, 189, 357, 357,
+ 357, 363, 357, 357, 357, 360, 357, 411,
+ 411, 88, 187, 188, 189, 357, 357, 357,
+ 363, 357, 357, 357, 360, 357, 413, 98,
+ 414, 415, 91, 187, 188, 189, 357, 357,
+ 357, 363, 357, 357, 357, 360, 357, 98,
+ 414, 415, 91, 187, 188, 189, 357, 357,
+ 357, 363, 357, 357, 357, 360, 357, 414,
+ 414, 91, 187, 188, 189, 357, 357, 357,
+ 363, 357, 357, 357, 360, 357, 416, 95,
+ 357, 417, 357, 187, 188, 189, 357, 357,
+ 357, 363, 357, 357, 357, 360, 357, 95,
+ 357, 417, 357, 187, 188, 189, 357, 357,
+ 357, 363, 357, 357, 357, 360, 357, 418,
+ 357, 187, 188, 189, 357, 357, 357, 363,
+ 357, 357, 357, 360, 357, 95, 357, 357,
+ 357, 357, 187, 188, 189, 357, 357, 357,
+ 363, 357, 357, 357, 360, 357, 77, 78,
+ 357, 357, 95, 398, 357, 187, 188, 189,
+ 357, 357, 357, 363, 357, 77, 357, 360,
+ 357, 392, 397, 397, 81, 187, 188, 189,
+ 357, 357, 357, 395, 357, 357, 357, 360,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 357, 357, 357, 357, 196, 357, 392, 397,
+ 397, 81, 187, 188, 189, 357, 357, 357,
+ 395, 357, 357, 357, 360, 357, 391, 392,
+ 397, 397, 81, 187, 188, 189, 357, 357,
+ 357, 395, 357, 357, 194, 360, 357, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 357, 357, 196, 357, 391, 392, 393, 397,
+ 81, 187, 188, 189, 357, 357, 106, 395,
+ 357, 357, 194, 360, 357, 357, 357, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 196, 357, 389, 357, 419, 357, 406, 406,
+ 81, 187, 188, 189, 357, 357, 357, 363,
+ 357, 389, 357, 360, 357, 389, 357, 357,
+ 357, 357, 357, 357, 187, 188, 189, 357,
+ 357, 357, 363, 357, 389, 357, 360, 357,
+ 389, 357, 357, 357, 357, 420, 357, 187,
+ 188, 189, 357, 357, 357, 363, 357, 389,
+ 357, 360, 357, 389, 357, 419, 357, 357,
+ 357, 357, 187, 188, 189, 357, 357, 357,
+ 363, 357, 389, 357, 360, 357, 389, 78,
+ 357, 357, 95, 390, 357, 187, 188, 189,
+ 357, 357, 357, 363, 357, 389, 357, 360,
+ 357, 382, 383, 388, 388, 81, 187, 188,
+ 189, 357, 357, 357, 386, 357, 357, 194,
+ 360, 357, 357, 357, 357, 357, 357, 357,
+ 357, 357, 357, 357, 357, 196, 357, 382,
+ 383, 384, 388, 81, 187, 188, 189, 357,
+ 357, 108, 386, 357, 357, 194, 360, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 357, 357, 357, 196, 357, 380, 357, 421,
+ 357, 406, 406, 81, 187, 188, 189, 357,
+ 357, 357, 363, 357, 380, 357, 360, 357,
+ 380, 357, 357, 357, 357, 357, 357, 187,
+ 188, 189, 357, 357, 357, 363, 357, 380,
+ 357, 360, 357, 380, 357, 357, 357, 357,
+ 422, 357, 187, 188, 189, 357, 357, 357,
+ 363, 357, 380, 357, 360, 357, 380, 357,
+ 421, 357, 357, 357, 357, 187, 188, 189,
+ 357, 357, 357, 363, 357, 380, 357, 360,
+ 357, 380, 78, 357, 357, 95, 381, 357,
+ 187, 188, 189, 357, 357, 357, 363, 357,
+ 380, 357, 360, 357, 373, 374, 379, 379,
+ 81, 187, 188, 189, 357, 357, 357, 377,
+ 357, 357, 194, 360, 357, 357, 357, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 196, 357, 373, 374, 375, 379, 81, 187,
+ 188, 189, 357, 357, 110, 377, 357, 357,
+ 194, 360, 357, 357, 357, 357, 357, 357,
+ 357, 357, 357, 357, 357, 357, 196, 357,
+ 371, 357, 423, 357, 406, 406, 81, 187,
+ 188, 189, 357, 357, 357, 363, 357, 371,
+ 357, 360, 357, 371, 357, 357, 357, 357,
+ 357, 357, 187, 188, 189, 357, 357, 357,
+ 363, 357, 371, 357, 360, 357, 371, 357,
+ 357, 357, 357, 424, 357, 187, 188, 189,
+ 357, 357, 357, 363, 357, 371, 357, 360,
+ 357, 371, 357, 423, 357, 357, 357, 357,
+ 187, 188, 189, 357, 357, 357, 363, 357,
+ 371, 357, 360, 357, 371, 78, 357, 357,
+ 95, 372, 357, 187, 188, 189, 357, 357,
+ 357, 363, 357, 371, 357, 360, 357, 364,
+ 365, 370, 370, 81, 187, 188, 189, 357,
+ 357, 357, 368, 357, 357, 194, 360, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 357, 357, 357, 196, 357, 364, 365, 366,
+ 370, 81, 187, 188, 189, 357, 357, 112,
+ 368, 357, 357, 194, 360, 357, 357, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 357, 196, 357, 361, 357, 425, 357, 406,
+ 406, 81, 187, 188, 189, 357, 357, 357,
+ 363, 357, 361, 357, 360, 357, 361, 357,
+ 357, 357, 357, 357, 357, 187, 188, 189,
+ 357, 357, 357, 363, 357, 361, 357, 360,
+ 357, 361, 357, 357, 357, 357, 426, 357,
+ 187, 188, 189, 357, 357, 357, 363, 357,
+ 361, 357, 360, 357, 361, 357, 425, 357,
+ 357, 357, 357, 187, 188, 189, 357, 357,
+ 357, 363, 357, 361, 357, 360, 357, 361,
+ 78, 357, 357, 95, 362, 357, 187, 188,
+ 189, 357, 357, 357, 363, 357, 361, 357,
+ 360, 357, 113, 80, 80, 81, 427, 427,
+ 427, 427, 427, 152, 113, 427, 183, 184,
+ 359, 359, 81, 187, 188, 189, 357, 357,
+ 357, 191, 357, 357, 194, 360, 357, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 357, 357, 196, 357, 113, 80, 80, 81,
+ 427, 427, 427, 427, 427, 427, 113, 427,
+ 429, 430, 431, 432, 119, 433, 434, 435,
+ 428, 428, 151, 436, 428, 428, 437, 438,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 428, 428, 428, 428, 439, 428, 440, 430,
+ 432, 432, 119, 433, 434, 435, 428, 428,
+ 428, 436, 428, 428, 437, 438, 428, 428,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 428, 428, 439, 428, 430, 432, 432, 119,
+ 433, 434, 435, 428, 428, 428, 436, 428,
+ 428, 437, 438, 428, 428, 428, 428, 428,
+ 428, 428, 428, 428, 428, 428, 428, 439,
+ 428, 441, 428, 428, 428, 132, 442, 428,
+ 433, 434, 435, 428, 428, 428, 443, 428,
+ 441, 428, 438, 428, 444, 445, 446, 447,
+ 119, 433, 434, 435, 428, 428, 149, 448,
+ 428, 428, 437, 438, 428, 428, 428, 428,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 439, 428, 449, 445, 450, 450, 119, 433,
+ 434, 435, 428, 428, 428, 448, 428, 428,
+ 437, 438, 428, 428, 428, 428, 428, 428,
+ 428, 428, 428, 428, 428, 428, 439, 428,
+ 445, 450, 450, 119, 433, 434, 435, 428,
+ 428, 428, 448, 428, 428, 437, 438, 428,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 428, 428, 428, 439, 428, 451, 428, 428,
+ 428, 132, 452, 428, 433, 434, 435, 428,
+ 428, 428, 443, 428, 451, 428, 438, 428,
+ 453, 454, 455, 456, 119, 433, 434, 435,
+ 428, 428, 147, 457, 428, 428, 437, 438,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 428, 428, 428, 428, 439, 428, 458, 454,
+ 459, 459, 119, 433, 434, 435, 428, 428,
+ 428, 457, 428, 428, 437, 438, 428, 428,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 428, 428, 439, 428, 454, 459, 459, 119,
+ 433, 434, 435, 428, 428, 428, 457, 428,
+ 428, 437, 438, 428, 428, 428, 428, 428,
+ 428, 428, 428, 428, 428, 428, 428, 439,
+ 428, 460, 428, 428, 428, 132, 461, 428,
+ 433, 434, 435, 428, 428, 428, 443, 428,
+ 460, 428, 438, 428, 462, 463, 464, 465,
+ 119, 433, 434, 435, 428, 428, 145, 466,
+ 428, 428, 437, 438, 428, 428, 428, 428,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 439, 428, 467, 463, 468, 468, 119, 433,
+ 434, 435, 428, 428, 428, 466, 428, 428,
+ 437, 438, 428, 428, 428, 428, 428, 428,
+ 428, 428, 428, 428, 428, 428, 439, 428,
+ 463, 468, 468, 119, 433, 434, 435, 428,
+ 428, 428, 466, 428, 428, 437, 438, 428,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 428, 428, 428, 439, 428, 469, 428, 428,
+ 428, 132, 470, 428, 433, 434, 435, 428,
+ 428, 428, 443, 428, 469, 428, 438, 428,
+ 471, 472, 473, 474, 119, 433, 434, 435,
+ 428, 428, 143, 475, 428, 428, 437, 438,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 428, 428, 428, 428, 439, 428, 476, 472,
+ 477, 477, 119, 433, 434, 435, 428, 428,
+ 428, 475, 428, 428, 437, 438, 428, 428,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 428, 428, 439, 428, 472, 477, 477, 119,
+ 433, 434, 435, 428, 428, 428, 475, 428,
+ 428, 437, 438, 428, 428, 428, 428, 428,
+ 428, 428, 428, 428, 428, 428, 428, 439,
+ 428, 132, 478, 428, 433, 434, 435, 428,
+ 428, 428, 443, 428, 428, 428, 438, 428,
+ 433, 434, 435, 428, 428, 428, 443, 428,
+ 428, 428, 438, 428, 479, 428, 428, 480,
+ 434, 435, 428, 434, 435, 428, 434, 481,
+ 428, 434, 428, 479, 428, 428, 428, 434,
+ 435, 428, 482, 428, 483, 484, 428, 433,
+ 434, 435, 428, 428, 117, 428, 428, 428,
+ 428, 438, 428, 116, 428, 428, 428, 428,
+ 433, 434, 435, 428, 428, 428, 428, 428,
+ 428, 428, 438, 428, 433, 434, 435, 428,
+ 428, 428, 428, 428, 428, 428, 438, 428,
+ 485, 428, 428, 428, 428, 433, 434, 435,
+ 428, 433, 434, 435, 428, 482, 428, 428,
+ 428, 428, 433, 434, 435, 428, 428, 428,
+ 428, 428, 428, 428, 438, 428, 482, 428,
+ 483, 428, 428, 433, 434, 435, 428, 428,
+ 117, 428, 428, 428, 428, 438, 428, 132,
+ 428, 486, 486, 119, 433, 434, 435, 428,
+ 428, 428, 443, 428, 428, 428, 438, 428,
+ 487, 141, 488, 489, 122, 433, 434, 435,
+ 428, 428, 428, 443, 428, 428, 428, 438,
+ 428, 141, 488, 489, 122, 433, 434, 435,
+ 428, 428, 428, 443, 428, 428, 428, 438,
+ 428, 488, 488, 122, 433, 434, 435, 428,
+ 428, 428, 443, 428, 428, 428, 438, 428,
+ 490, 138, 491, 492, 125, 433, 434, 435,
+ 428, 428, 428, 443, 428, 428, 428, 438,
+ 428, 138, 491, 492, 125, 433, 434, 435,
+ 428, 428, 428, 443, 428, 428, 428, 438,
+ 428, 491, 491, 125, 433, 434, 435, 428,
+ 428, 428, 443, 428, 428, 428, 438, 428,
+ 493, 135, 494, 495, 128, 433, 434, 435,
+ 428, 428, 428, 443, 428, 428, 428, 438,
+ 428, 135, 494, 495, 128, 433, 434, 435,
+ 428, 428, 428, 443, 428, 428, 428, 438,
+ 428, 494, 494, 128, 433, 434, 435, 428,
+ 428, 428, 443, 428, 428, 428, 438, 428,
+ 496, 132, 428, 497, 428, 433, 434, 435,
+ 428, 428, 428, 443, 428, 428, 428, 438,
+ 428, 132, 428, 497, 428, 433, 434, 435,
+ 428, 428, 428, 443, 428, 428, 428, 438,
+ 428, 498, 428, 433, 434, 435, 428, 428,
+ 428, 443, 428, 428, 428, 438, 428, 132,
+ 428, 428, 428, 428, 433, 434, 435, 428,
+ 428, 428, 443, 428, 428, 428, 438, 428,
+ 115, 116, 428, 428, 132, 478, 428, 433,
+ 434, 435, 428, 428, 428, 443, 428, 115,
+ 428, 438, 428, 472, 477, 477, 119, 433,
+ 434, 435, 428, 428, 428, 475, 428, 428,
+ 428, 438, 428, 428, 428, 428, 428, 428,
+ 428, 428, 428, 428, 428, 428, 439, 428,
+ 472, 477, 477, 119, 433, 434, 435, 428,
+ 428, 428, 475, 428, 428, 428, 438, 428,
+ 471, 472, 477, 477, 119, 433, 434, 435,
+ 428, 428, 428, 475, 428, 428, 437, 438,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 428, 428, 428, 428, 439, 428, 471, 472,
+ 473, 477, 119, 433, 434, 435, 428, 428,
+ 143, 475, 428, 428, 437, 438, 428, 428,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 428, 428, 439, 428, 469, 428, 499, 428,
+ 486, 486, 119, 433, 434, 435, 428, 428,
+ 428, 443, 428, 469, 428, 438, 428, 469,
+ 428, 428, 428, 428, 428, 428, 433, 434,
+ 435, 428, 428, 428, 443, 428, 469, 428,
+ 438, 428, 469, 428, 428, 428, 428, 500,
+ 428, 433, 434, 435, 428, 428, 428, 443,
+ 428, 469, 428, 438, 428, 469, 428, 499,
+ 428, 428, 428, 428, 433, 434, 435, 428,
+ 428, 428, 443, 428, 469, 428, 438, 428,
+ 469, 116, 428, 428, 132, 470, 428, 433,
+ 434, 435, 428, 428, 428, 443, 428, 469,
+ 428, 438, 428, 462, 463, 468, 468, 119,
+ 433, 434, 435, 428, 428, 428, 466, 428,
+ 428, 437, 438, 428, 428, 428, 428, 428,
+ 428, 428, 428, 428, 428, 428, 428, 439,
+ 428, 462, 463, 464, 468, 119, 433, 434,
+ 435, 428, 428, 145, 466, 428, 428, 437,
+ 438, 428, 428, 428, 428, 428, 428, 428,
+ 428, 428, 428, 428, 428, 439, 428, 460,
+ 428, 501, 428, 486, 486, 119, 433, 434,
+ 435, 428, 428, 428, 443, 428, 460, 428,
+ 438, 428, 460, 428, 428, 428, 428, 428,
+ 428, 433, 434, 435, 428, 428, 428, 443,
+ 428, 460, 428, 438, 428, 460, 428, 428,
+ 428, 428, 502, 428, 433, 434, 435, 428,
+ 428, 428, 443, 428, 460, 428, 438, 428,
+ 460, 428, 501, 428, 428, 428, 428, 433,
+ 434, 435, 428, 428, 428, 443, 428, 460,
+ 428, 438, 428, 460, 116, 428, 428, 132,
+ 461, 428, 433, 434, 435, 428, 428, 428,
+ 443, 428, 460, 428, 438, 428, 453, 454,
+ 459, 459, 119, 433, 434, 435, 428, 428,
+ 428, 457, 428, 428, 437, 438, 428, 428,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 428, 428, 439, 428, 453, 454, 455, 459,
+ 119, 433, 434, 435, 428, 428, 147, 457,
+ 428, 428, 437, 438, 428, 428, 428, 428,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 439, 428, 451, 428, 503, 428, 486, 486,
+ 119, 433, 434, 435, 428, 428, 428, 443,
+ 428, 451, 428, 438, 428, 451, 428, 428,
+ 428, 428, 428, 428, 433, 434, 435, 428,
+ 428, 428, 443, 428, 451, 428, 438, 428,
+ 451, 428, 428, 428, 428, 504, 428, 433,
+ 434, 435, 428, 428, 428, 443, 428, 451,
+ 428, 438, 428, 451, 428, 503, 428, 428,
+ 428, 428, 433, 434, 435, 428, 428, 428,
+ 443, 428, 451, 428, 438, 428, 451, 116,
+ 428, 428, 132, 452, 428, 433, 434, 435,
+ 428, 428, 428, 443, 428, 451, 428, 438,
+ 428, 444, 445, 450, 450, 119, 433, 434,
+ 435, 428, 428, 428, 448, 428, 428, 437,
+ 438, 428, 428, 428, 428, 428, 428, 428,
+ 428, 428, 428, 428, 428, 439, 428, 444,
+ 445, 446, 450, 119, 433, 434, 435, 428,
+ 428, 149, 448, 428, 428, 437, 438, 428,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 428, 428, 428, 439, 428, 441, 428, 505,
+ 428, 486, 486, 119, 433, 434, 435, 428,
+ 428, 428, 443, 428, 441, 428, 438, 428,
+ 441, 428, 428, 428, 428, 428, 428, 433,
+ 434, 435, 428, 428, 428, 443, 428, 441,
+ 428, 438, 428, 441, 428, 428, 428, 428,
+ 506, 428, 433, 434, 435, 428, 428, 428,
+ 443, 428, 441, 428, 438, 428, 441, 428,
+ 505, 428, 428, 428, 428, 433, 434, 435,
+ 428, 428, 428, 443, 428, 441, 428, 438,
+ 428, 441, 116, 428, 428, 132, 442, 428,
+ 433, 434, 435, 428, 428, 428, 443, 428,
+ 441, 428, 438, 428, 429, 430, 432, 432,
+ 119, 433, 434, 435, 428, 428, 428, 436,
+ 428, 428, 437, 438, 428, 428, 428, 428,
+ 428, 428, 428, 428, 428, 428, 428, 428,
+ 439, 428, 181, 182, 183, 184, 507, 359,
+ 81, 187, 188, 189, 190, 190, 152, 191,
+ 357, 181, 194, 360, 357, 357, 357, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357,
+ 196, 357, 198, 508, 200, 201, 5, 202,
+ 203, 204, 197, 197, 37, 205, 197, 197,
+ 206, 207, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 208, 197,
+ 211, 182, 183, 184, 509, 510, 81, 511,
+ 203, 512, 190, 190, 152, 513, 197, 211,
+ 194, 514, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 196, 197,
+ 113, 80, 80, 81, 202, 203, 204, 197,
+ 197, 152, 515, 197, 197, 197, 207, 197,
+ 516, 2, 357, 357, 357, 426, 357, 187,
+ 188, 189, 357, 357, 357, 363, 357, 516,
+ 357, 360, 357, 517, 365, 518, 519, 81,
+ 511, 203, 512, 197, 197, 153, 368, 197,
+ 197, 194, 514, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 196,
+ 197, 520, 365, 370, 370, 81, 511, 203,
+ 512, 197, 197, 197, 368, 197, 197, 194,
+ 514, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 196, 197, 365,
+ 370, 370, 81, 511, 203, 512, 197, 197,
+ 197, 368, 197, 197, 194, 514, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 196, 197, 521, 197, 197, 522,
+ 203, 512, 197, 203, 512, 197, 203, 523,
+ 197, 203, 197, 521, 197, 197, 197, 203,
+ 512, 197, 524, 197, 197, 197, 197, 511,
+ 203, 512, 197, 511, 203, 512, 197, 517,
+ 365, 370, 370, 81, 511, 203, 512, 197,
+ 197, 197, 368, 197, 197, 194, 514, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 197, 197, 196, 197, 517, 365, 518,
+ 370, 81, 511, 203, 512, 197, 197, 153,
+ 368, 197, 197, 194, 514, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 197, 196, 197, 211, 197, 275, 113, 525,
+ 525, 155, 202, 203, 204, 197, 197, 197,
+ 515, 197, 211, 197, 207, 197, 526, 179,
+ 527, 528, 157, 511, 203, 512, 197, 197,
+ 197, 529, 197, 197, 197, 514, 197, 179,
+ 527, 528, 157, 511, 203, 512, 197, 197,
+ 197, 529, 197, 197, 197, 514, 197, 527,
+ 527, 157, 511, 203, 512, 197, 197, 197,
+ 529, 197, 197, 197, 514, 197, 530, 176,
+ 531, 532, 160, 511, 203, 512, 197, 197,
+ 197, 529, 197, 197, 197, 514, 197, 176,
+ 531, 532, 160, 511, 203, 512, 197, 197,
+ 197, 529, 197, 197, 197, 514, 197, 531,
+ 531, 160, 511, 203, 512, 197, 197, 197,
+ 529, 197, 197, 197, 514, 197, 533, 173,
+ 534, 535, 163, 511, 203, 512, 197, 197,
+ 197, 529, 197, 197, 197, 514, 197, 173,
+ 534, 535, 163, 511, 203, 512, 197, 197,
+ 197, 529, 197, 197, 197, 514, 197, 534,
+ 534, 163, 511, 203, 512, 197, 197, 197,
+ 529, 197, 197, 197, 514, 197, 536, 170,
+ 197, 537, 197, 511, 203, 512, 197, 197,
+ 197, 529, 197, 197, 197, 514, 197, 170,
+ 197, 537, 197, 511, 203, 512, 197, 197,
+ 197, 529, 197, 197, 197, 514, 197, 511,
+ 203, 512, 197, 197, 197, 529, 197, 197,
+ 197, 514, 197, 538, 197, 539, 540, 197,
+ 511, 203, 512, 197, 197, 167, 197, 197,
+ 197, 197, 514, 197, 166, 197, 197, 197,
+ 197, 511, 203, 512, 197, 197, 197, 197,
+ 197, 197, 197, 514, 197, 511, 203, 512,
+ 197, 197, 197, 197, 197, 197, 197, 514,
+ 197, 538, 197, 197, 197, 197, 511, 203,
+ 512, 197, 197, 197, 197, 197, 197, 197,
+ 514, 197, 538, 197, 539, 197, 197, 511,
+ 203, 512, 197, 197, 167, 197, 197, 197,
+ 197, 514, 197, 516, 166, 357, 357, 95,
+ 362, 357, 187, 188, 189, 357, 357, 357,
+ 363, 357, 516, 357, 360, 357, 542, 541,
+ 541, 541, 541, 543, 544, 545, 541, 543,
+ 544, 545, 541, 546, 541, 541, 547, 544,
+ 545, 541, 544, 545, 541, 544, 548, 541,
+ 544, 541, 546, 541, 541, 541, 544, 545,
+ 541, 0
+};
+
+static const short _indic_syllable_machine_trans_targs[] = {
+ 170, 197, 199, 202, 3, 205, 4, 6,
+ 208, 7, 9, 211, 10, 12, 214, 13,
+ 15, 16, 191, 18, 19, 213, 21, 22,
+ 210, 24, 25, 207, 216, 221, 225, 228,
+ 232, 235, 239, 242, 246, 249, 170, 277,
+ 279, 282, 39, 285, 40, 42, 288, 43,
+ 45, 291, 46, 48, 294, 49, 51, 52,
+ 271, 54, 55, 293, 57, 58, 290, 60,
+ 61, 287, 296, 301, 305, 308, 312, 315,
+ 319, 322, 326, 330, 170, 356, 358, 361,
+ 75, 364, 170, 76, 78, 367, 79, 81,
+ 370, 82, 84, 373, 85, 87, 88, 350,
+ 90, 91, 372, 93, 94, 369, 96, 97,
+ 366, 375, 380, 384, 387, 391, 394, 398,
+ 401, 405, 170, 437, 439, 442, 110, 445,
+ 111, 113, 448, 114, 116, 451, 117, 119,
+ 454, 120, 122, 123, 431, 125, 126, 453,
+ 128, 129, 450, 131, 132, 447, 456, 461,
+ 465, 468, 472, 475, 479, 482, 486, 489,
+ 409, 505, 146, 508, 148, 511, 149, 151,
+ 514, 152, 154, 517, 155, 520, 522, 523,
+ 159, 160, 519, 162, 163, 516, 165, 166,
+ 513, 168, 169, 510, 170, 171, 251, 331,
+ 333, 408, 410, 351, 170, 353, 411, 407,
+ 490, 491, 378, 526, 379, 170, 172, 174,
+ 35, 250, 192, 170, 194, 248, 219, 200,
+ 220, 173, 34, 175, 244, 0, 176, 178,
+ 33, 243, 241, 177, 32, 179, 237, 180,
+ 182, 31, 236, 234, 181, 30, 183, 230,
+ 184, 186, 29, 229, 227, 185, 28, 187,
+ 223, 188, 190, 27, 222, 218, 189, 26,
+ 204, 193, 196, 195, 198, 1, 203, 201,
+ 2, 206, 5, 23, 209, 8, 20, 212,
+ 11, 17, 215, 14, 217, 224, 226, 231,
+ 233, 238, 240, 245, 247, 170, 252, 254,
+ 71, 328, 272, 170, 274, 329, 299, 280,
+ 300, 253, 70, 255, 324, 36, 256, 258,
+ 69, 323, 321, 257, 68, 259, 317, 260,
+ 262, 67, 316, 314, 261, 66, 263, 310,
+ 264, 266, 65, 309, 307, 265, 64, 267,
+ 303, 268, 270, 63, 302, 298, 269, 62,
+ 284, 273, 276, 275, 278, 37, 283, 281,
+ 38, 286, 41, 59, 289, 44, 56, 292,
+ 47, 53, 295, 50, 297, 304, 306, 311,
+ 313, 318, 320, 325, 327, 170, 332, 106,
+ 359, 334, 403, 72, 335, 337, 105, 402,
+ 400, 336, 104, 338, 396, 339, 341, 103,
+ 395, 393, 340, 102, 342, 389, 343, 345,
+ 101, 388, 386, 344, 100, 346, 382, 347,
+ 349, 99, 381, 377, 348, 98, 363, 352,
+ 355, 354, 357, 73, 362, 360, 74, 365,
+ 77, 95, 368, 80, 92, 371, 83, 89,
+ 374, 86, 376, 383, 385, 390, 392, 397,
+ 399, 404, 406, 170, 170, 412, 414, 142,
+ 141, 432, 170, 434, 488, 459, 440, 460,
+ 413, 415, 484, 107, 416, 418, 140, 483,
+ 481, 417, 139, 419, 477, 420, 422, 138,
+ 476, 474, 421, 137, 423, 470, 424, 426,
+ 136, 469, 467, 425, 135, 427, 463, 428,
+ 430, 134, 462, 458, 429, 133, 444, 433,
+ 436, 435, 438, 108, 443, 441, 109, 446,
+ 112, 130, 449, 115, 127, 452, 118, 124,
+ 455, 121, 457, 464, 466, 471, 473, 478,
+ 480, 485, 487, 143, 492, 493, 507, 498,
+ 500, 525, 503, 494, 495, 496, 144, 506,
+ 497, 499, 502, 501, 504, 145, 509, 147,
+ 167, 156, 512, 150, 164, 515, 153, 161,
+ 518, 158, 521, 157, 524, 170, 527, 528,
+ 170, 530, 529, 532, 531
+};
+
+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, 13, 0, 2, 2,
+ 6, 2, 6, 0, 6, 14, 2, 2,
+ 0, 2, 0, 15, 0, 2, 2, 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, 0, 0, 0, 0, 2, 0,
+ 0, 2, 0, 0, 2, 0, 0, 2,
+ 0, 0, 2, 0, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 16, 2, 2,
+ 0, 2, 0, 17, 0, 2, 2, 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, 0, 0, 0, 0, 2, 0,
+ 0, 2, 0, 0, 2, 0, 0, 2,
+ 0, 0, 2, 0, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 18, 6, 0,
+ 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,
+ 0, 0, 0, 0, 2, 0, 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, 21, 0, 2, 2, 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,
+ 0, 0, 0, 0, 2, 0, 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, 0, 2, 8, 8, 0, 8,
+ 8, 0, 0, 0, 0, 0, 2, 0,
+ 0, 0, 2, 0, 0, 2, 0, 0,
+ 2, 0, 0, 0, 2, 22, 0, 0,
+ 23, 0, 0, 0, 0
+};
+
+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, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 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, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 278, 278, 278, 278, 278,
+ 278, 278, 278, 278, 278, 278, 278, 278,
+ 278, 278, 278, 278, 278, 278, 278, 278,
+ 278, 278, 278, 278, 278, 278, 278, 278,
+ 278, 278, 278, 278, 278, 278, 278, 278,
+ 278, 278, 278, 278, 278, 278, 278, 278,
+ 278, 278, 278, 278, 278, 278, 278, 278,
+ 278, 278, 278, 278, 278, 278, 278, 278,
+ 278, 278, 278, 278, 278, 278, 278, 278,
+ 278, 278, 278, 278, 278, 278, 278, 278,
+ 278, 278, 278, 358, 358, 358, 358, 358,
+ 358, 358, 358, 358, 358, 358, 358, 358,
+ 358, 358, 358, 358, 358, 358, 358, 358,
+ 358, 358, 358, 358, 358, 358, 358, 358,
+ 358, 358, 358, 358, 358, 358, 358, 358,
+ 358, 358, 358, 358, 358, 358, 358, 358,
+ 358, 358, 358, 358, 358, 358, 358, 358,
+ 358, 358, 358, 358, 358, 358, 358, 358,
+ 358, 358, 358, 358, 358, 358, 358, 358,
+ 358, 358, 358, 358, 358, 358, 358, 358,
+ 428, 358, 428, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 358, 198, 198, 198, 358, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 358, 542, 542,
+ 542, 542, 542, 542, 542
+};
+
+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 98 "../../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 HB_UNUSED, act HB_UNUSED;
+ int cs;
+ hb_glyph_info_t *info = buffer->info;
+
+#line 1646 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
+ {
+ cs = indic_syllable_machine_start;
+ ts = 0;
+ te = 0;
+ act = 0;
+ }
+
+#line 119 "../../src/hb-ot-shape-complex-indic-machine.rl"
+
+
+ p = 0;
+ pe = eof = buffer->len;
+
+ unsigned int last = 0;
+ unsigned int syllable_serial = 1;
+
+#line 1663 "../../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 1677 "../../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 15:
+#line 89 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {te = p+1;{ found_syllable (consonant_syllable); }}
+ break;
+ case 17:
+#line 90 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {te = p+1;{ found_syllable (vowel_syllable); }}
+ break;
+ case 21:
+#line 91 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {te = p+1;{ found_syllable (standalone_cluster); }}
+ break;
+ case 23:
+#line 92 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {te = p+1;{ found_syllable (avagraha_cluster); }}
+ break;
+ case 13:
+#line 93 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {te = p+1;{ found_syllable (broken_cluster); }}
+ break;
+ case 11:
+#line 94 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {te = p+1;{ found_syllable (non_indic_cluster); }}
+ break;
+ case 14:
+#line 89 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {te = p;p--;{ found_syllable (consonant_syllable); }}
+ break;
+ case 16:
+#line 90 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {te = p;p--;{ found_syllable (vowel_syllable); }}
+ break;
+ case 20:
+#line 91 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {te = p;p--;{ found_syllable (standalone_cluster); }}
+ break;
+ case 22:
+#line 92 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {te = p;p--;{ found_syllable (avagraha_cluster); }}
+ break;
+ case 18:
+#line 93 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {te = p;p--;{ found_syllable (broken_cluster); }}
+ break;
+ case 19:
+#line 94 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {te = p;p--;{ found_syllable (non_indic_cluster); }}
+ break;
+ case 1:
+#line 89 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
+ break;
+ case 3:
+#line 90 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {{p = ((te))-1;}{ found_syllable (vowel_syllable); }}
+ break;
+ case 7:
+#line 91 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {{p = ((te))-1;}{ found_syllable (standalone_cluster); }}
+ break;
+ case 4:
+#line 93 "../../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 5:
+ {{p = ((te))-1;} found_syllable (broken_cluster); }
+ break;
+ case 6:
+ {{p = ((te))-1;} found_syllable (non_indic_cluster); }
+ break;
+ }
+ }
+ break;
+ case 8:
+#line 1 "NONE"
+ {te = p+1;}
+#line 89 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {act = 1;}
+ break;
+ case 6:
+#line 1 "NONE"
+ {te = p+1;}
+#line 93 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {act = 5;}
+ break;
+ case 12:
+#line 1 "NONE"
+ {te = p+1;}
+#line 94 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {act = 6;}
+ break;
+#line 1796 "../../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 1805 "../../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 128 "../../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.22/src/hb-ot-shape-complex-indic-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic-machine.rl
index f9f07d801d9..5c3e734eb33 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-indic-machine.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic-machine.rl
@@ -51,13 +51,15 @@ VD = 9;
A = 10;
NBSP = 11;
DOTTEDCIRCLE = 12;
-RS = 13;
+RS = 13;
Coeng = 14;
Repha = 15;
Ra = 16;
CM = 17;
+Avag = 18;
+CM2 = 31;
-c = (C | Ra)CM*; # is_consonant
+c = (C | Ra); # is_consonant
n = ((ZWNJ?.RS)? (N.N?)?); # is_consonant_modifier
z = ZWJ|ZWNJ; # is_joiner
h = H | Coeng; # is_halant_or_coeng
@@ -65,24 +67,29 @@ reph = (Ra H | Repha); # possible reph
cn = c.ZWJ?.n?;
forced_rakar = ZWJ H ZWJ Ra;
+avagraha = Avag.N?;
matra_group = z{0,3}.M.N?.(H | forced_rakar)?;
-syllable_tail = (Coeng (cn|V))? (SM.ZWNJ?)? (VD VD?)?;
+syllable_tail2 = (SM.SM?.ZWNJ?)? (A.A?)? VD?;
+syllable_tail = (Coeng (cn|V))? avagraha? syllable_tail2;
place_holder = NBSP | DOTTEDCIRCLE;
halant_group = (z?.h.(ZWJ.N?)?);
final_halant_group = halant_group | h.ZWNJ;
+medial_group = CM?.CM2?;
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 = reph? n? (halant_group.cn){0,4} halant_or_matra_group syllable_tail;
+consonant_syllable = Repha? (cn.halant_group){0,4} cn medial_group halant_or_matra_group syllable_tail;
+vowel_syllable = reph? V.n? (ZWJ | (halant_group.cn){0,4} medial_group halant_or_matra_group syllable_tail);
+standalone_cluster = reph? place_holder.n? (halant_group.cn){0,4} medial_group halant_or_matra_group syllable_tail;
+avagraha_cluster = avagraha syllable_tail2;
+broken_cluster = reph? n? (halant_group.cn){0,4} medial_group halant_or_matra_group syllable_tail;
other = any;
main := |*
consonant_syllable => { found_syllable (consonant_syllable); };
vowel_syllable => { found_syllable (vowel_syllable); };
standalone_cluster => { found_syllable (standalone_cluster); };
+ avagraha_cluster => { found_syllable (avagraha_cluster); };
broken_cluster => { found_syllable (broken_cluster); };
other => { found_syllable (non_indic_cluster); };
*|;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-indic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic-private.hh
index 39268b14533..3de5c203fa3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-indic-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic-private.hh
@@ -43,23 +43,25 @@
* Not sure how to avoid duplication. */
enum indic_category_t {
OT_X = 0,
- OT_C,
- OT_V,
- OT_N,
- OT_H,
- OT_ZWNJ,
- OT_ZWJ,
- OT_M,
- OT_SM,
- OT_VD,
- OT_A,
- OT_NBSP,
- OT_DOTTEDCIRCLE, /* Not in the spec, but special in Uniscribe. /Very very/ special! */
- OT_RS, /* Register Shifter, used in Khmer OT spec */
- OT_Coeng,
- OT_Repha,
- OT_Ra, /* Not explicitly listed in the OT spec, but used in the grammar. */
- OT_CM
+ OT_C = 1,
+ OT_V = 2,
+ OT_N = 3,
+ OT_H = 4,
+ OT_ZWNJ = 5,
+ OT_ZWJ = 6,
+ OT_M = 7,
+ OT_SM = 8,
+ OT_VD = 9,
+ OT_A = 10,
+ OT_NBSP = 11,
+ OT_DOTTEDCIRCLE = 12,
+ OT_RS = 13, /* Register Shifter, used in Khmer OT spec. */
+ OT_Coeng = 14, /* Khmer-style Virama. */
+ OT_Repha = 15, /* Atomically-encoded logical or visual repha. */
+ OT_Ra = 16,
+ OT_CM = 17, /* Consonant-Medial. */
+ OT_Avag = 18, /* Avagraha. */
+ OT_CM2 = 31 /* Consonant-Medial, second slot. */
};
/* Visual positions in a syllable from left to right. */
@@ -93,7 +95,7 @@ enum indic_position_t {
enum indic_syllabic_category_t {
INDIC_SYLLABIC_CATEGORY_OTHER = OT_X,
- INDIC_SYLLABIC_CATEGORY_AVAGRAHA = OT_X,
+ INDIC_SYLLABIC_CATEGORY_AVAGRAHA = OT_Avag,
INDIC_SYLLABIC_CATEGORY_BINDU = OT_SM,
INDIC_SYLLABIC_CATEGORY_CONSONANT = OT_C,
INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD = OT_C,
@@ -101,7 +103,7 @@ enum indic_syllabic_category_t {
INDIC_SYLLABIC_CATEGORY_CONSONANT_HEAD_LETTER = OT_C,
INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL = OT_CM,
INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER = OT_NBSP,
- INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED = OT_C,
+ INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED = OT_CM,
INDIC_SYLLABIC_CATEGORY_CONSONANT_REPHA = OT_Repha,
INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER = OT_X,
INDIC_SYLLABIC_CATEGORY_NUKTA = OT_N,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-indic-table.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic-table.cc
index 18a022bc507..18a022bc507 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-indic-table.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic-table.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-indic.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic.cc
index d3c475b6abb..9edefe305dc 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-indic.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-indic.cc
@@ -128,14 +128,6 @@ static const hb_codepoint_t ra_chars[] = {
0x179A, /* Khmer */ /* No Reph, Visual Repha */
};
-static inline indic_position_t
-consonant_position (hb_codepoint_t u)
-{
- if ((u & ~0x007F) == 0x1780)
- return POS_BELOW_C; /* In Khmer coeng model, post and below forms should not be reordered. */
- return POS_BASE_C; /* Will recategorize later based on font lookups. */
-}
-
static inline bool
is_ra (hb_codepoint_t u)
{
@@ -149,7 +141,7 @@ static inline bool
is_one_of (const hb_glyph_info_t &info, unsigned int flags)
{
/* If it ligated, all bets are off. */
- if (is_a_ligature (info)) return false;
+ if (_hb_glyph_info_ligated (&info)) return false;
return !!(FLAG (info.indic_category()) & flags);
}
@@ -160,12 +152,14 @@ is_joiner (const hb_glyph_info_t &info)
return is_one_of (info, JOINER_FLAGS);
}
+#define MEDIAL_FLAGS (FLAG (OT_CM) | FLAG (OT_CM2))
+
/* Note:
*
* We treat Vowels and placeholders as if they were consonants. This is safe because Vowels
* cannot happen in a consonant syllable. The plus side however is, we can call the
* consonant syllable logic from the vowel syllable function and get it all right! */
-#define CONSONANT_FLAGS (FLAG (OT_C) | FLAG (OT_CM) | FLAG (OT_Ra) | FLAG (OT_V) | FLAG (OT_NBSP) | FLAG (OT_DOTTEDCIRCLE))
+#define CONSONANT_FLAGS (FLAG (OT_C) | FLAG (OT_Ra) | MEDIAL_FLAGS | FLAG (OT_V) | FLAG (OT_NBSP) | FLAG (OT_DOTTEDCIRCLE))
static inline bool
is_consonant (const hb_glyph_info_t &info)
{
@@ -194,15 +188,15 @@ set_indic_properties (hb_glyph_info_t &info)
/* The spec says U+0952 is OT_A. However, testing shows that Uniscribe
- * treats U+0951..U+0952 all as OT_VD.
+ * treats U+0951..U+0954 all behave similarly.
* TESTS:
* U+092E,U+0947,U+0952
* U+092E,U+0952,U+0947
* U+092E,U+0947,U+0951
* U+092E,U+0951,U+0947
- * */
+ */
if (unlikely (hb_in_range<hb_codepoint_t> (u, 0x0951, 0x0954)))
- cat = OT_VD;
+ cat = OT_A;
if (unlikely (u == 0x17D1))
cat = OT_X;
@@ -220,7 +214,10 @@ set_indic_properties (hb_glyph_info_t &info)
else if (unlikely (u == 0x200C)) cat = OT_ZWNJ;
else if (unlikely (u == 0x200D)) cat = OT_ZWJ;
else if (unlikely (u == 0x25CC)) cat = OT_DOTTEDCIRCLE;
- else if (unlikely (u == 0x0A71)) cat = OT_SM; /* GURMUKHI ADDAK. More like consonant medial. like 0A75. */
+ else if (unlikely (u == 0x0A71)) cat = OT_SM; /* GURMUKHI ADDAK. Move it to the end. */
+ else if (unlikely (u == 0xA982)) cat = OT_SM; /* Javanese repha. */
+ else if (unlikely (u == 0xA9BE)) cat = OT_CM2; /* Javanese medial ya. */
+ else if (unlikely (u == 0xA9BD)) { cat = OT_M; pos = POS_POST_C; } /* Javanese vocalic r. */
if (cat == OT_Repha) {
/* There are two kinds of characters marked as Repha:
@@ -241,7 +238,7 @@ set_indic_properties (hb_glyph_info_t &info)
if ((FLAG (cat) & CONSONANT_FLAGS))
{
- pos = consonant_position (u);
+ pos = POS_BASE_C;
if (is_ra (u))
cat = OT_Ra;
}
@@ -249,7 +246,7 @@ set_indic_properties (hb_glyph_info_t &info)
{
pos = matra_position (u, pos);
}
- else if (cat == OT_SM || cat == OT_VD)
+ else if ((FLAG (cat) & (FLAG (OT_SM) | FLAG (OT_VD) | FLAG (OT_A) | FLAG (OT_Avag))))
{
pos = POS_SMVD;
}
@@ -277,16 +274,16 @@ set_indic_properties (hb_glyph_info_t &info)
enum base_position_t {
BASE_POS_FIRST,
+ BASE_POS_LAST_SINHALA,
BASE_POS_LAST
};
enum reph_position_t {
- REPH_POS_DEFAULT = POS_BEFORE_POST,
-
REPH_POS_AFTER_MAIN = POS_AFTER_MAIN,
REPH_POS_BEFORE_SUB = POS_BEFORE_SUB,
REPH_POS_AFTER_SUB = POS_AFTER_SUB,
REPH_POS_BEFORE_POST = POS_BEFORE_POST,
- REPH_POS_AFTER_POST = POS_AFTER_POST
+ REPH_POS_AFTER_POST = POS_AFTER_POST,
+ REPH_POS_DONT_CARE = POS_RA_TO_BECOME_REPH
};
enum reph_mode_t {
REPH_MODE_IMPLICIT, /* Reph formed out of initial Ra,H sequence. */
@@ -294,6 +291,15 @@ enum reph_mode_t {
REPH_MODE_VIS_REPHA, /* Encoded Repha character, no reordering needed. */
REPH_MODE_LOG_REPHA /* Encoded Repha character, needs reordering. */
};
+enum blwf_mode_t {
+ BLWF_MODE_PRE_AND_POST, /* Below-forms feature applied to pre-base and post-base. */
+ BLWF_MODE_POST_ONLY /* Below-forms feature applied to post-base only. */
+};
+enum pref_len_t {
+ PREF_LEN_1 = 1,
+ PREF_LEN_2 = 2,
+ PREF_LEN_DONT_CARE = PREF_LEN_2
+};
struct indic_config_t
{
hb_script_t script;
@@ -302,24 +308,27 @@ struct indic_config_t
base_position_t base_pos;
reph_position_t reph_pos;
reph_mode_t reph_mode;
+ blwf_mode_t blwf_mode;
+ pref_len_t pref_len;
};
static const indic_config_t indic_configs[] =
{
/* Default. Should be first. */
- {HB_SCRIPT_INVALID, false, 0,BASE_POS_LAST, REPH_POS_DEFAULT, REPH_MODE_IMPLICIT},
- {HB_SCRIPT_DEVANAGARI,true, 0x094D,BASE_POS_LAST, REPH_POS_BEFORE_POST,REPH_MODE_IMPLICIT},
- {HB_SCRIPT_BENGALI, true, 0x09CD,BASE_POS_LAST, REPH_POS_AFTER_SUB, REPH_MODE_IMPLICIT},
- {HB_SCRIPT_GURMUKHI, true, 0x0A4D,BASE_POS_LAST, REPH_POS_BEFORE_SUB, REPH_MODE_IMPLICIT},
- {HB_SCRIPT_GUJARATI, true, 0x0ACD,BASE_POS_LAST, REPH_POS_BEFORE_POST,REPH_MODE_IMPLICIT},
- {HB_SCRIPT_ORIYA, true, 0x0B4D,BASE_POS_LAST, REPH_POS_AFTER_MAIN, REPH_MODE_IMPLICIT},
- {HB_SCRIPT_TAMIL, true, 0x0BCD,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_IMPLICIT},
- {HB_SCRIPT_TELUGU, true, 0x0C4D,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_EXPLICIT},
- {HB_SCRIPT_KANNADA, true, 0x0CCD,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_IMPLICIT},
- {HB_SCRIPT_MALAYALAM, true, 0x0D4D,BASE_POS_LAST, REPH_POS_AFTER_MAIN, REPH_MODE_LOG_REPHA},
- {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},
- {HB_SCRIPT_JAVANESE, false,0xA9C0,BASE_POS_LAST, REPH_POS_DEFAULT, REPH_MODE_IMPLICIT},
+ {HB_SCRIPT_INVALID, false, 0,BASE_POS_LAST, REPH_POS_BEFORE_POST,REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_1},
+ {HB_SCRIPT_DEVANAGARI,true, 0x094D,BASE_POS_LAST, REPH_POS_BEFORE_POST,REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_DONT_CARE},
+ {HB_SCRIPT_BENGALI, true, 0x09CD,BASE_POS_LAST, REPH_POS_AFTER_SUB, REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_DONT_CARE},
+ {HB_SCRIPT_GURMUKHI, true, 0x0A4D,BASE_POS_LAST, REPH_POS_BEFORE_SUB, REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_DONT_CARE},
+ {HB_SCRIPT_GUJARATI, true, 0x0ACD,BASE_POS_LAST, REPH_POS_BEFORE_POST,REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_DONT_CARE},
+ {HB_SCRIPT_ORIYA, true, 0x0B4D,BASE_POS_LAST, REPH_POS_AFTER_MAIN, REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_DONT_CARE},
+ {HB_SCRIPT_TAMIL, true, 0x0BCD,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_2},
+ {HB_SCRIPT_TELUGU, true, 0x0C4D,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_EXPLICIT, BLWF_MODE_POST_ONLY, PREF_LEN_2},
+ {HB_SCRIPT_KANNADA, true, 0x0CCD,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_IMPLICIT, BLWF_MODE_POST_ONLY, PREF_LEN_2},
+ {HB_SCRIPT_MALAYALAM, true, 0x0D4D,BASE_POS_LAST, REPH_POS_AFTER_MAIN, REPH_MODE_LOG_REPHA,BLWF_MODE_PRE_AND_POST, PREF_LEN_2},
+ {HB_SCRIPT_SINHALA, false,0x0DCA,BASE_POS_LAST_SINHALA,
+ REPH_POS_AFTER_MAIN, REPH_MODE_EXPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_DONT_CARE},
+ {HB_SCRIPT_KHMER, false,0x17D2,BASE_POS_FIRST,REPH_POS_DONT_CARE, REPH_MODE_VIS_REPHA,BLWF_MODE_PRE_AND_POST, PREF_LEN_2},
+ {HB_SCRIPT_JAVANESE, false,0xA9C0,BASE_POS_FIRST,REPH_POS_DONT_CARE, REPH_MODE_VIS_REPHA,BLWF_MODE_PRE_AND_POST, PREF_LEN_1},
};
@@ -346,15 +355,17 @@ indic_features[] =
{HB_TAG('r','k','r','f'), F_GLOBAL},
{HB_TAG('p','r','e','f'), F_NONE},
{HB_TAG('b','l','w','f'), F_NONE},
- {HB_TAG('h','a','l','f'), F_NONE},
{HB_TAG('a','b','v','f'), F_NONE},
+ {HB_TAG('h','a','l','f'), F_NONE},
{HB_TAG('p','s','t','f'), F_NONE},
- {HB_TAG('c','f','a','r'), F_NONE},
{HB_TAG('v','a','t','u'), F_GLOBAL},
{HB_TAG('c','j','c','t'), F_GLOBAL},
+ {HB_TAG('c','f','a','r'), F_NONE},
/*
* Other features.
* These features are applied all at once, after final_reordering.
+ * Default Bengali font in Windows for example has intermixed
+ * lookups for init,pres,abvs,blws features.
*/
{HB_TAG('i','n','i','t'), F_NONE},
{HB_TAG('p','r','e','s'), F_GLOBAL},
@@ -378,12 +389,12 @@ enum {
_RKRF,
PREF,
BLWF,
- HALF,
ABVF,
+ HALF,
PSTF,
- CFAR,
_VATU,
_CJCT,
+ CFAR,
INIT,
_PRES,
@@ -411,6 +422,10 @@ static void
final_reordering (const hb_ot_shape_plan_t *plan,
hb_font_t *font,
hb_buffer_t *buffer);
+static void
+clear_syllables (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer);
static void
collect_features_indic (hb_ot_shape_planner_t *plan)
@@ -436,14 +451,26 @@ collect_features_indic (hb_ot_shape_planner_t *plan)
for (; i < INDIC_NUM_FEATURES; i++) {
map->add_feature (indic_features[i].tag, 1, indic_features[i].flags | F_MANUAL_ZWJ);
}
+
+ map->add_global_bool_feature (HB_TAG('c','a','l','t'));
+ map->add_global_bool_feature (HB_TAG('c','l','i','g'));
+
+ map->add_gsub_pause (clear_syllables);
}
static void
override_features_indic (hb_ot_shape_planner_t *plan)
{
- /* Uniscribe does not apply 'kern'. */
+ /* Uniscribe does not apply 'kern' in Khmer. */
if (hb_options ().uniscribe_bug_compatible)
- plan->map.add_feature (HB_TAG('k','e','r','n'), 0, F_GLOBAL);
+ {
+ switch ((hb_tag_t) plan->props.script)
+ {
+ case HB_SCRIPT_KHMER:
+ plan->map.add_feature (HB_TAG('k','e','r','n'), 0, F_GLOBAL);
+ break;
+ }
+ }
plan->map.add_feature (HB_TAG('l','i','g','a'), 0, F_GLOBAL);
}
@@ -451,8 +478,9 @@ override_features_indic (hb_ot_shape_planner_t *plan)
struct would_substitute_feature_t
{
- inline void init (const hb_ot_map_t *map, hb_tag_t feature_tag)
+ inline void init (const hb_ot_map_t *map, hb_tag_t feature_tag, bool zero_context_)
{
+ zero_context = zero_context_;
map->get_stage_lookups (0/*GSUB*/,
map->get_feature_stage (0/*GSUB*/, feature_tag),
&lookups, &count);
@@ -460,7 +488,6 @@ struct would_substitute_feature_t
inline bool would_substitute (const hb_codepoint_t *glyphs,
unsigned int glyphs_count,
- bool zero_context,
hb_face_t *face) const
{
for (unsigned int i = 0; i < count; i++)
@@ -472,6 +499,7 @@ struct would_substitute_feature_t
private:
const hb_ot_map_t::lookup_map_t *lookups;
unsigned int count;
+ bool zero_context;
};
struct indic_shape_plan_t
@@ -527,10 +555,13 @@ data_create_indic (const hb_ot_shape_plan_t *plan)
indic_plan->is_old_spec = indic_plan->config->has_old_spec && ((plan->map.chosen_script[0] & 0x000000FF) != '2');
indic_plan->virama_glyph = (hb_codepoint_t) -1;
- indic_plan->rphf.init (&plan->map, HB_TAG('r','p','h','f'));
- indic_plan->pref.init (&plan->map, HB_TAG('p','r','e','f'));
- indic_plan->blwf.init (&plan->map, HB_TAG('b','l','w','f'));
- indic_plan->pstf.init (&plan->map, HB_TAG('p','s','t','f'));
+ /* Use zero-context would_substitute() matching for new-spec of the main
+ * Indic scripts, but not for old-spec or scripts with one spec only. */
+ bool zero_context = indic_plan->config->has_old_spec || !indic_plan->is_old_spec;
+ indic_plan->rphf.init (&plan->map, HB_TAG('r','p','h','f'), zero_context);
+ indic_plan->pref.init (&plan->map, HB_TAG('p','r','e','f'), zero_context);
+ indic_plan->blwf.init (&plan->map, HB_TAG('b','l','w','f'), zero_context);
+ indic_plan->pstf.init (&plan->map, HB_TAG('p','s','t','f'), zero_context);
for (unsigned int i = 0; i < ARRAY_LENGTH (indic_plan->mask_array); i++)
indic_plan->mask_array[i] = (indic_features[i].flags & F_GLOBAL) ?
@@ -547,7 +578,8 @@ data_destroy_indic (void *data)
static indic_position_t
consonant_position_from_face (const indic_shape_plan_t *indic_plan,
- const hb_codepoint_t glyphs[2],
+ const hb_codepoint_t consonant,
+ const hb_codepoint_t virama,
hb_face_t *face)
{
/* For old-spec, the order of glyphs is Consonant,Virama,
@@ -560,16 +592,19 @@ consonant_position_from_face (const indic_shape_plan_t *indic_plan,
* 930,94D in 'blwf', not the expected 94D,930 (with new-spec
* table). As such, we simply match both sequences. Seems
* to work. */
- bool zero_context = indic_plan->is_old_spec ? false : true;
- hb_codepoint_t glyphs_r[2] = {glyphs[1], glyphs[0]};
- if (indic_plan->pref.would_substitute (glyphs , 2, zero_context, face) ||
- indic_plan->pref.would_substitute (glyphs_r, 2, zero_context, face))
- return POS_POST_C;
- if (indic_plan->blwf.would_substitute (glyphs , 2, zero_context, face) ||
- indic_plan->blwf.would_substitute (glyphs_r, 2, zero_context, face))
+ hb_codepoint_t glyphs[3] = {virama, consonant, virama};
+ if (indic_plan->blwf.would_substitute (glyphs , 2, face) ||
+ indic_plan->blwf.would_substitute (glyphs+1, 2, face))
return POS_BELOW_C;
- if (indic_plan->pstf.would_substitute (glyphs , 2, zero_context, face) ||
- indic_plan->pstf.would_substitute (glyphs_r, 2, zero_context, face))
+ if (indic_plan->pstf.would_substitute (glyphs , 2, face) ||
+ indic_plan->pstf.would_substitute (glyphs+1, 2, face))
+ return POS_POST_C;
+ unsigned int pref_len = indic_plan->config->pref_len;
+ if ((pref_len == PREF_LEN_2 &&
+ (indic_plan->pref.would_substitute (glyphs , 2, face) ||
+ indic_plan->pref.would_substitute (glyphs+1, 2, face)))
+ || (pref_len == PREF_LEN_1 &&
+ indic_plan->pref.would_substitute (glyphs+1, 1, face)))
return POS_POST_C;
return POS_BASE_C;
}
@@ -579,6 +614,7 @@ enum syllable_type_t {
consonant_syllable,
vowel_syllable,
standalone_cluster,
+ avagraha_cluster,
broken_cluster,
non_indic_cluster,
};
@@ -628,15 +664,18 @@ update_consonant_positions (const hb_ot_shape_plan_t *plan,
{
const indic_shape_plan_t *indic_plan = (const indic_shape_plan_t *) plan->data;
- hb_codepoint_t glyphs[2];
- if (indic_plan->get_virama_glyph (font, &glyphs[0]))
+ if (indic_plan->config->base_pos != BASE_POS_LAST)
+ return;
+
+ hb_codepoint_t virama;
+ if (indic_plan->get_virama_glyph (font, &virama))
{
hb_face_t *face = font->face;
unsigned int count = buffer->len;
for (unsigned int i = 0; i < count; i++)
if (buffer->info[i].indic_position() == POS_BASE_C) {
- glyphs[1] = buffer->info[i].codepoint;
- buffer->info[i].indic_position() = consonant_position_from_face (indic_plan, glyphs, face);
+ hb_codepoint_t consonant = buffer->info[i].codepoint;
+ buffer->info[i].indic_position() = consonant_position_from_face (indic_plan, consonant, virama, face);
}
}
}
@@ -677,7 +716,8 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
* and has more than one consonant, Ra is excluded from candidates for
* base consonants. */
unsigned int limit = start;
- if (indic_plan->mask_array[RPHF] &&
+ if (indic_plan->config->reph_pos != REPH_POS_DONT_CARE &&
+ indic_plan->mask_array[RPHF] &&
start + 3 <= end &&
(
(indic_plan->config->reph_mode == REPH_MODE_IMPLICIT && !is_joiner (info[start + 2])) ||
@@ -686,7 +726,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
{
/* See if it matches the 'rphf' feature. */
hb_codepoint_t glyphs[2] = {info[start].codepoint, info[start + 1].codepoint};
- if (indic_plan->rphf.would_substitute (glyphs, ARRAY_LENGTH (glyphs), true, face))
+ if (indic_plan->rphf.would_substitute (glyphs, ARRAY_LENGTH (glyphs), face))
{
limit += 2;
while (limit < end && is_joiner (info[limit]))
@@ -758,9 +798,12 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
}
break;
- case BASE_POS_FIRST:
+ case BASE_POS_LAST_SINHALA:
{
- /* In scripts without half forms (eg. Khmer), the first consonant is always the base. */
+ /* Sinhala base positioning is slightly different from main Indic, in that:
+ * 1. It's ZWJ behavior is different,
+ * 2. We don't need to look into the font for consonant positions.
+ */
if (!has_reph)
base = limit;
@@ -768,7 +811,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
/* Find the last base consonant that is not blocked by ZWJ. If there is
* a ZWJ right before a base consonant, that would request a subjoined form. */
for (unsigned int i = limit; i < end; i++)
- if (is_consonant (info[i]) && info[i].indic_position() == POS_BASE_C)
+ if (is_consonant (info[i]))
{
if (limit < i && info[i - 1].indic_category() == OT_ZWJ)
break;
@@ -778,7 +821,23 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
/* Mark all subsequent consonants as below. */
for (unsigned int i = base + 1; i < end; i++)
- if (is_consonant (info[i]) && info[i].indic_position() == POS_BASE_C)
+ if (is_consonant (info[i]))
+ info[i].indic_position() = POS_BELOW_C;
+ }
+ break;
+
+ case BASE_POS_FIRST:
+ {
+ /* The first consonant is always the base. */
+
+ assert (indic_plan->config->reph_mode == REPH_MODE_VIS_REPHA);
+ assert (!has_reph);
+
+ base = start;
+
+ /* Mark all subsequent consonants as below. */
+ for (unsigned int i = base + 1; i < end; i++)
+ if (is_consonant (info[i]))
info[i].indic_position() = POS_BELOW_C;
}
break;
@@ -877,7 +936,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
indic_position_t last_pos = POS_START;
for (unsigned int i = start; i < end; i++)
{
- if ((FLAG (info[i].indic_category()) & (JOINER_FLAGS | FLAG (OT_N) | FLAG (OT_RS) | HALANT_OR_COENG_FLAGS)))
+ if ((FLAG (info[i].indic_category()) & (JOINER_FLAGS | FLAG (OT_N) | FLAG (OT_RS) | MEDIAL_FLAGS | HALANT_OR_COENG_FLAGS)))
{
info[i].indic_position() = last_pos;
if (unlikely (info[i].indic_category() == OT_H &&
@@ -903,33 +962,68 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
}
}
}
- /* Re-attach ZWJ, ZWNJ, and halant to next char, for after-base consonants. */
+ /* For post-base consonants let them own anything before them
+ * since the last consonant or matra. */
{
- unsigned int last_halant = end;
+ unsigned int last = base;
for (unsigned int i = base + 1; i < end; i++)
- if (is_halant_or_coeng (info[i]))
- last_halant = i;
- else if (is_consonant (info[i])) {
- for (unsigned int j = last_halant; j < i; j++)
- if (info[j].indic_position() != POS_SMVD)
+ if (is_consonant (info[i]))
+ {
+ for (unsigned int j = last + 1; j < i; j++)
+ if (info[j].indic_position() < POS_SMVD)
info[j].indic_position() = info[i].indic_position();
- }
+ last = i;
+ } else if (info[i].indic_category() == OT_M)
+ last = i;
}
+
{
- /* Things are out-of-control for post base positions, they may shuffle
- * around like crazy, so merge clusters. For pre-base stuff, we handle
- * cluster issues in final reordering. */
- buffer->merge_clusters (base, end);
+ /* Use syllable() for sort accounting temporarily. */
+ unsigned int syllable = info[start].syllable();
+ for (unsigned int i = start; i < end; i++)
+ info[i].syllable() = i - start;
+
/* Sit tight, rock 'n roll! */
hb_bubble_sort (info + start, end - start, compare_indic_order);
/* Find base again */
base = end;
for (unsigned int i = start; i < end; i++)
- if (info[i].indic_position() == POS_BASE_C) {
- base = i;
+ if (info[i].indic_position() == POS_BASE_C)
+ {
+ base = i;
break;
}
+ /* Things are out-of-control for post base positions, they may shuffle
+ * around like crazy. In old-spec mode, we move halants around, so in
+ * that case merge all clusters after base. Otherwise, check the sort
+ * order and merge as needed.
+ * For pre-base stuff, we handle cluster issues in final reordering. */
+ if (indic_plan->is_old_spec || end - base > 127)
+ buffer->merge_clusters (base, end);
+ else
+ {
+ /* Note! syllable() is a one-byte field. */
+ for (unsigned int i = base; i < end; i++)
+ if (info[i].syllable() != 255)
+ {
+ unsigned int max = i;
+ unsigned int j = start + info[i].syllable();
+ while (j != i)
+ {
+ max = MAX (max, j);
+ unsigned int next = start + info[j].syllable();
+ info[j].syllable() = 255; /* So we don't process j later again. */
+ j = next;
+ }
+ if (i != max)
+ buffer->merge_clusters (i, max + 1);
+ }
+ }
+
+ /* Put syllable back in. */
+ for (unsigned int i = start; i < end; i++)
+ info[i].syllable() = syllable;
}
/* Setup masks now */
@@ -943,6 +1037,9 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
/* Pre-base */
mask = indic_plan->mask_array[HALF];
+ if (!indic_plan->is_old_spec &&
+ indic_plan->config->blwf_mode == BLWF_MODE_PRE_AND_POST)
+ mask |= indic_plan->mask_array[BLWF];
for (unsigned int i = start; i < base; i++)
info[i].mask |= mask;
/* Base */
@@ -987,15 +1084,19 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
}
}
- if (indic_plan->mask_array[PREF] && base + 2 < end)
+ unsigned int pref_len = indic_plan->config->pref_len;
+ if (indic_plan->mask_array[PREF] && base + pref_len < end)
{
+ assert (1 <= pref_len && pref_len <= 2);
/* Find a Halant,Ra sequence and mark it for pre-base reordering processing. */
- for (unsigned int i = base + 1; i + 1 < end; i++) {
- hb_codepoint_t glyphs[2] = {info[i].codepoint, info[i + 1].codepoint};
- if (indic_plan->pref.would_substitute (glyphs, ARRAY_LENGTH (glyphs), true, face))
+ for (unsigned int i = base + 1; i + pref_len - 1 < end; i++) {
+ hb_codepoint_t glyphs[2];
+ for (unsigned int j = 0; j < pref_len; j++)
+ glyphs[j] = info[i + j].codepoint;
+ if (indic_plan->pref.would_substitute (glyphs, pref_len, face))
{
- info[i++].mask |= indic_plan->mask_array[PREF];
- info[i++].mask |= indic_plan->mask_array[PREF];
+ for (unsigned int j = 0; j < pref_len; j++)
+ info[i++].mask |= indic_plan->mask_array[PREF];
/* Mark the subsequent stuff with 'cfar'. Used in Khmer.
* Read the feature spec.
@@ -1003,8 +1104,9 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
* U+1784,U+17D2,U+179A,U+17D2,U+1782
* U+1784,U+17D2,U+1782,U+17D2,U+179A
*/
- for (; i < end; i++)
- info[i].mask |= indic_plan->mask_array[CFAR];
+ if (indic_plan->mask_array[CFAR])
+ for (; i < end; i++)
+ info[i].mask |= indic_plan->mask_array[CFAR];
break;
}
@@ -1075,6 +1177,16 @@ initial_reordering_broken_cluster (const hb_ot_shape_plan_t *plan,
}
static void
+initial_reordering_avagraha_cluster (const hb_ot_shape_plan_t *plan HB_UNUSED,
+ hb_face_t *face HB_UNUSED,
+ hb_buffer_t *buffer HB_UNUSED,
+ unsigned int start HB_UNUSED, unsigned int end HB_UNUSED)
+{
+ /* Nothing to do right now. If we ever switch to using the output
+ * buffer in the reordering process, we'd need to next_glyph() here. */
+}
+
+static void
initial_reordering_non_indic_cluster (const hb_ot_shape_plan_t *plan HB_UNUSED,
hb_face_t *face HB_UNUSED,
hb_buffer_t *buffer HB_UNUSED,
@@ -1096,6 +1208,7 @@ initial_reordering_syllable (const hb_ot_shape_plan_t *plan,
case consonant_syllable: initial_reordering_consonant_syllable (plan, face, buffer, start, end); return;
case vowel_syllable: initial_reordering_vowel_syllable (plan, face, buffer, start, end); return;
case standalone_cluster: initial_reordering_standalone_cluster (plan, face, buffer, start, end); return;
+ case avagraha_cluster: initial_reordering_avagraha_cluster (plan, face, buffer, start, end); return;
case broken_cluster: initial_reordering_broken_cluster (plan, face, buffer, start, end); return;
case non_indic_cluster: initial_reordering_non_indic_cluster (plan, face, buffer, start, end); return;
}
@@ -1265,9 +1378,9 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
info[new_pos] = tmp;
if (old_pos < base && base <= new_pos) /* Shouldn't actually happen. */
base--;
+ buffer->merge_clusters (new_pos, MIN (end, base + 1));
new_pos--;
}
- buffer->merge_clusters (new_pos, MIN (end, base + 1));
} else {
for (unsigned int i = start; i < base; i++)
if (info[i].indic_position () == POS_PRE_M) {
@@ -1287,17 +1400,24 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
* before post-base consonant forms, and after post-base consonant forms.
*/
- /* If there's anything after the Ra that has the REPH pos, it ought to be halant.
- * Which means that the font has failed to ligate the Reph. In which case, we
- * shouldn't move. */
+ /* Two cases:
+ *
+ * - If repha is encoded as a sequence of characters (Ra,H or Ra,H,ZWJ), then
+ * we should only move it if the sequence ligated to the repha form.
+ *
+ * - If repha is encoded separately and in the logical position, we should only
+ * move it if it did NOT ligate. If it ligated, it's probably the font trying
+ * to make it work without the reordering.
+ */
if (start + 1 < end &&
info[start].indic_position() == POS_RA_TO_BECOME_REPH &&
- info[start + 1].indic_position() != POS_RA_TO_BECOME_REPH)
+ ((info[start].indic_category() == OT_Repha) ^
+ _hb_glyph_info_ligated (&info[start])))
{
unsigned int new_reph_pos;
reph_position_t reph_pos = indic_plan->config->reph_pos;
- /* XXX Figure out old behavior too */
+ assert (reph_pos != REPH_POS_DONT_CARE);
/* 1. If reph should be positioned after post-base consonant forms,
* proceed to step 5.
@@ -1339,7 +1459,6 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
if (reph_pos == REPH_POS_AFTER_MAIN)
{
new_reph_pos = base;
- /* XXX Skip potential pre-base reordering Ra. */
while (new_reph_pos + 1 < end && info[new_reph_pos + 1].indic_position() <= POS_AFTER_MAIN)
new_reph_pos++;
if (new_reph_pos < end)
@@ -1412,8 +1531,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
reph_move:
{
- /* Yay, one big cluster! Merge before moving. */
- buffer->merge_clusters (start, end);
+ buffer->merge_clusters (start, new_reph_pos + 1);
/* Move */
hb_glyph_info_t reph = info[start];
@@ -1433,6 +1551,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
if (indic_plan->mask_array[PREF] && base + 1 < end) /* Otherwise there can't be any pre-base reordering Ra. */
{
+ unsigned int pref_len = indic_plan->config->pref_len;
for (unsigned int i = base + 1; i < end; i++)
if ((info[i].mask & indic_plan->mask_array[PREF]) != 0)
{
@@ -1440,7 +1559,13 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
* of the <pref> feature. (Note that a font may shape a Ra consonant with
* the feature generally but block it in certain contexts.)
*/
- if (i + 1 == end || (info[i + 1].mask & indic_plan->mask_array[PREF]) == 0)
+ /* Note: We just check that something got substituted. We don't check that
+ * the <pref> feature actually did it...
+ *
+ * If pref len is longer than one, then only reorder if it ligated. If
+ * pref len is one, only reorder if it didn't ligate with other things. */
+ if (_hb_glyph_info_substituted (&info[i]) &&
+ ((pref_len == 1) ^ _hb_glyph_info_ligated (&info[i])))
{
/*
* 2. Try to find a target position the same way as for pre-base matra.
@@ -1461,7 +1586,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
!(is_one_of (info[new_pos - 1], FLAG(OT_M) | HALANT_OR_COENG_FLAGS)))
new_pos--;
- /* In Khmer coeng model, a V,Ra can go *after* matras. If it goes after a
+ /* In Khmer coeng model, a H,Ra can go *after* matras. If it goes after a
* split matra, it should be reordered to *before* the left part of such matra. */
if (new_pos > start && info[new_pos - 1].indic_category() == OT_M)
{
@@ -1511,11 +1636,20 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
*/
if (hb_options ().uniscribe_bug_compatible)
{
- /* Uniscribe merges the entire cluster.
- * This means, half forms are submerged into the main consonants cluster.
- * This is unnecessary, and makes cursor positioning harder, but that's what
- * Uniscribe does. */
- buffer->merge_clusters (start, end);
+ switch ((hb_tag_t) plan->props.script)
+ {
+ case HB_SCRIPT_TAMIL:
+ case HB_SCRIPT_SINHALA:
+ break;
+
+ default:
+ /* Uniscribe merges the entire cluster... Except for Tamil & Sinhala.
+ * This means, half forms are submerged into the main consonants cluster.
+ * This is unnecessary, and makes cursor positioning harder, but that's what
+ * Uniscribe does. */
+ buffer->merge_clusters (start, end);
+ break;
+ }
}
}
@@ -1539,15 +1673,23 @@ final_reordering (const hb_ot_shape_plan_t *plan,
}
final_reordering_syllable (plan, buffer, last, count);
- /* Zero syllables now... */
- for (unsigned int i = 0; i < count; i++)
- info[i].syllable() = 0;
-
HB_BUFFER_DEALLOCATE_VAR (buffer, indic_category);
HB_BUFFER_DEALLOCATE_VAR (buffer, indic_position);
}
+static void
+clear_syllables (const hb_ot_shape_plan_t *plan HB_UNUSED,
+ hb_font_t *font HB_UNUSED,
+ hb_buffer_t *buffer)
+{
+ hb_glyph_info_t *info = buffer->info;
+ unsigned int count = buffer->len;
+ for (unsigned int i = 0; i < count; i++)
+ info[i].syllable() = 0;
+}
+
+
static hb_ot_shape_normalization_mode_t
normalization_preference_indic (const hb_segment_properties_t *props HB_UNUSED)
{
@@ -1627,7 +1769,7 @@ decompose_indic (const hb_ot_shape_normalize_context_t *c,
if (hb_options ().uniscribe_bug_compatible ||
(c->font->get_glyph (ab, 0, &glyph) &&
- indic_plan->pstf.would_substitute (&glyph, 1, true, c->font->face)))
+ indic_plan->pstf.would_substitute (&glyph, 1, c->font->face)))
{
/* Ok, safe to use Uniscribe-style decomposition. */
*a = 0x0DD9;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-myanmar-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-myanmar-machine.hh
index 797bfc5bea0..797bfc5bea0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-myanmar-machine.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-myanmar-machine.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-myanmar-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-myanmar-machine.rl
index 51d42dd64ab..51d42dd64ab 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-myanmar-machine.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-myanmar-machine.rl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-myanmar.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-myanmar.cc
index 29f29bb556b..a32405a8219 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-myanmar.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-myanmar.cc
@@ -60,6 +60,16 @@ other_features[] =
HB_TAG('p','s','t','s'),
/* Positioning features, though we don't care about the types. */
HB_TAG('d','i','s','t'),
+ /* Pre-release version of Windows 8 Myanmar font had abvm,blwm
+ * features. The released Windows 8 version of the font (as well
+ * as the released spec) used 'mark' instead. The Windows 8
+ * shaper however didn't apply 'mark' but did apply 'mkmk'.
+ * Perhaps it applied abvm/blwm. This was fixed in a Windows 8
+ * update, so now it applies mark/mkmk. We are guessing that
+ * it still applies abvm/blwm too.
+ */
+ HB_TAG('a','b','v','m'),
+ HB_TAG('b','l','w','m'),
};
static void
@@ -141,7 +151,7 @@ static inline bool
is_one_of (const hb_glyph_info_t &info, unsigned int flags)
{
/* If it ligated, all bets are off. */
- if (is_a_ligature (info)) return false;
+ if (_hb_glyph_info_ligated (&info)) return false;
return !!(FLAG (info.myanmar_category()) & flags);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-private.hh
index a099e05d748..ac0072ba565 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-private.hh
@@ -279,9 +279,6 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
/* Unicode-3.0 additions */
case HB_SCRIPT_SINHALA:
- /* Unicode-4.1 additions */
- case HB_SCRIPT_BUGINESE:
-
/* Unicode-5.0 additions */
case HB_SCRIPT_BALINESE:
@@ -336,6 +333,7 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
return &_hb_ot_complex_shaper_default;
/* Unicode-4.1 additions */
+ case HB_SCRIPT_BUGINESE:
case HB_SCRIPT_NEW_TAI_LUE:
/* Unicode-5.1 additions */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-sea-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-sea-machine.hh
index 86b7ae7d5ca..86b7ae7d5ca 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-sea-machine.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-sea-machine.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-sea-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-sea-machine.rl
index 46140fc4d5f..46140fc4d5f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-sea-machine.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-sea-machine.rl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-sea.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-sea.cc
index 9c0c303e3df..da687ed6467 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-sea.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-sea.cc
@@ -266,7 +266,7 @@ initial_reordering_syllable (const hb_ot_shape_plan_t *plan,
switch (syllable_type) {
case consonant_syllable: initial_reordering_consonant_syllable (plan, face, buffer, start, end); return;
case broken_cluster: initial_reordering_broken_cluster (plan, face, buffer, start, end); return;
- case non_sea_cluster: initial_reordering_non_sea_cluster (plan, face, buffer, start, end); return;
+ case non_sea_cluster: initial_reordering_non_sea_cluster (plan, face, buffer, start, end); return;
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-thai.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-thai.cc
index 45945339d6b..45945339d6b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-complex-thai.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-complex-thai.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-fallback-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-fallback-private.hh
index ec653513f1b..ec653513f1b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-fallback-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-fallback-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-fallback.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-fallback.cc
index 284d030d5f4..449b64e5ca7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-fallback.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-fallback.cc
@@ -260,7 +260,13 @@ position_mark (const hb_ot_shape_plan_t *plan,
case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT:
case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW:
- pos.y_offset += base_extents.y_bearing + base_extents.height - mark_extents.y_bearing;
+ pos.y_offset = base_extents.y_bearing + base_extents.height - mark_extents.y_bearing;
+ /* Never shift up "below" marks. */
+ if ((y_gap > 0) == (pos.y_offset > 0))
+ {
+ base_extents.height -= pos.y_offset;
+ pos.y_offset = 0;
+ }
base_extents.height += mark_extents.height;
break;
@@ -274,7 +280,15 @@ position_mark (const hb_ot_shape_plan_t *plan,
case HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE:
case HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT:
- pos.y_offset += base_extents.y_bearing - (mark_extents.y_bearing + mark_extents.height);
+ pos.y_offset = base_extents.y_bearing - (mark_extents.y_bearing + mark_extents.height);
+ /* Don't shift down "above" marks too much. */
+ if ((y_gap > 0) != (pos.y_offset > 0))
+ {
+ unsigned int correction = -pos.y_offset / 2;
+ base_extents.y_bearing += correction;
+ base_extents.height -= correction;
+ pos.y_offset += correction;
+ }
base_extents.y_bearing -= mark_extents.height;
base_extents.height += mark_extents.height;
break;
@@ -300,8 +314,8 @@ position_around_base (const hb_ot_shape_plan_t *plan,
base_extents.x_bearing += buffer->pos[base].x_offset;
base_extents.y_bearing += buffer->pos[base].y_offset;
- unsigned int lig_id = get_lig_id (buffer->info[base]);
- unsigned int num_lig_components = get_lig_num_comps (buffer->info[base]);
+ unsigned int lig_id = _hb_glyph_info_get_lig_id (&buffer->info[base]);
+ unsigned int num_lig_components = _hb_glyph_info_get_lig_num_comps (&buffer->info[base]);
hb_position_t x_offset = 0, y_offset = 0;
if (HB_DIRECTION_IS_FORWARD (buffer->props.direction)) {
@@ -317,8 +331,8 @@ position_around_base (const hb_ot_shape_plan_t *plan,
if (_hb_glyph_info_get_modified_combining_class (&buffer->info[i]))
{
if (num_lig_components > 1) {
- unsigned int this_lig_id = get_lig_id (buffer->info[i]);
- unsigned int this_lig_component = get_lig_comp (buffer->info[i]) - 1;
+ unsigned int this_lig_id = _hb_glyph_info_get_lig_id (&buffer->info[i]);
+ unsigned int this_lig_component = _hb_glyph_info_get_lig_comp (&buffer->info[i]) - 1;
/* Conditions for attaching to the last component. */
if (!lig_id || lig_id != this_lig_id || this_lig_component >= num_lig_components)
this_lig_component = num_lig_components - 1;
@@ -416,41 +430,52 @@ _hb_ot_shape_fallback_kern (const hb_ot_shape_plan_t *plan,
hb_font_t *font,
hb_buffer_t *buffer)
{
- unsigned int count = buffer->len;
hb_mask_t kern_mask = plan->map.get_1_mask (HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction) ?
HB_TAG ('k','e','r','n') : HB_TAG ('v','k','r','n'));
+ if (!kern_mask) return;
+
+ unsigned int count = buffer->len;
OT::hb_apply_context_t c (1, font, buffer);
c.set_lookup_mask (kern_mask);
c.set_lookup_props (OT::LookupFlag::IgnoreMarks);
- for (buffer->idx = 0; buffer->idx < count;)
+ hb_glyph_info_t *info = buffer->info;
+ hb_glyph_position_t *pos = buffer->pos;
+
+ for (unsigned int idx = 0; idx < count;)
{
- OT::hb_apply_context_t::skipping_forward_iterator_t skippy_iter (&c, buffer->idx, 1);
+ OT::hb_apply_context_t::skipping_forward_iterator_t skippy_iter (&c, idx, 1);
if (!skippy_iter.next ())
{
- buffer->idx++;
+ idx++;
continue;
}
- hb_position_t x_kern, y_kern, kern1, kern2;
- font->get_glyph_kerning_for_direction (buffer->info[buffer->idx].codepoint,
- buffer->info[skippy_iter.idx].codepoint,
+ hb_position_t x_kern, y_kern;
+ font->get_glyph_kerning_for_direction (info[idx].codepoint,
+ info[skippy_iter.idx].codepoint,
buffer->props.direction,
&x_kern, &y_kern);
- kern1 = x_kern >> 1;
- kern2 = x_kern - kern1;
- buffer->pos[buffer->idx].x_advance += kern1;
- buffer->pos[skippy_iter.idx].x_advance += kern2;
- buffer->pos[skippy_iter.idx].x_offset += kern2;
+ if (x_kern)
+ {
+ hb_position_t kern1 = x_kern >> 1;
+ hb_position_t kern2 = x_kern - kern1;
+ pos[idx].x_advance += kern1;
+ pos[skippy_iter.idx].x_advance += kern2;
+ pos[skippy_iter.idx].x_offset += kern2;
+ }
- kern1 = y_kern >> 1;
- kern2 = y_kern - kern1;
- buffer->pos[buffer->idx].y_advance += kern1;
- buffer->pos[skippy_iter.idx].y_advance += kern2;
- buffer->pos[skippy_iter.idx].y_offset += kern2;
+ if (y_kern)
+ {
+ hb_position_t kern1 = y_kern >> 1;
+ hb_position_t kern2 = y_kern - kern1;
+ pos[idx].y_advance += kern1;
+ pos[skippy_iter.idx].y_advance += kern2;
+ pos[skippy_iter.idx].y_offset += kern2;
+ }
- buffer->idx = skippy_iter.idx;
+ idx = skippy_iter.idx;
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-normalize-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-normalize-private.hh
index 085d48511d0..085d48511d0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-normalize-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-normalize-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-normalize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-normalize.cc
index 3fee809cf93..6531e1b215c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-normalize.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-normalize.cc
@@ -132,17 +132,19 @@ static inline unsigned int
decompose (const hb_ot_shape_normalize_context_t *c, bool shortest, hb_codepoint_t ab)
{
hb_codepoint_t a, b, a_glyph, b_glyph;
+ hb_buffer_t * const buffer = c->buffer;
+ hb_font_t * const font = c->font;
if (!c->decompose (c, ab, &a, &b) ||
- (b && !c->font->get_glyph (b, 0, &b_glyph)))
+ (b && !font->get_glyph (b, 0, &b_glyph)))
return 0;
- bool has_a = c->font->get_glyph (a, 0, &a_glyph);
+ bool has_a = font->get_glyph (a, 0, &a_glyph);
if (shortest && has_a) {
/* Output a and b */
- output_char (c->buffer, a, a_glyph);
+ output_char (buffer, a, a_glyph);
if (likely (b)) {
- output_char (c->buffer, b, b_glyph);
+ output_char (buffer, b, b_glyph);
return 2;
}
return 1;
@@ -151,16 +153,16 @@ decompose (const hb_ot_shape_normalize_context_t *c, bool shortest, hb_codepoint
unsigned int ret;
if ((ret = decompose (c, shortest, a))) {
if (b) {
- output_char (c->buffer, b, b_glyph);
+ output_char (buffer, b, b_glyph);
return ret + 1;
}
return ret;
}
if (has_a) {
- output_char (c->buffer, a, a_glyph);
+ output_char (buffer, a, a_glyph);
if (likely (b)) {
- output_char (c->buffer, b, b_glyph);
+ output_char (buffer, b, b_glyph);
return 2;
}
return 1;
@@ -214,34 +216,35 @@ static inline void
handle_variation_selector_cluster (const hb_ot_shape_normalize_context_t *c, unsigned int end)
{
hb_buffer_t * const buffer = c->buffer;
+ hb_font_t * const font = c->font;
for (; buffer->idx < end - 1;) {
if (unlikely (buffer->unicode->is_variation_selector (buffer->cur(+1).codepoint))) {
/* The next two lines are some ugly lines... But work. */
- if (c->font->get_glyph (buffer->cur().codepoint, buffer->cur(+1).codepoint, &buffer->cur().glyph_index()))
+ if (font->get_glyph (buffer->cur().codepoint, buffer->cur(+1).codepoint, &buffer->cur().glyph_index()))
{
buffer->replace_glyphs (2, 1, &buffer->cur().codepoint);
}
else
{
/* Just pass on the two characters separately, let GSUB do its magic. */
- set_glyph (buffer->cur(), c->font);
+ set_glyph (buffer->cur(), font);
buffer->next_glyph ();
- set_glyph (buffer->cur(), c->font);
+ set_glyph (buffer->cur(), font);
buffer->next_glyph ();
}
/* Skip any further variation selectors. */
while (buffer->idx < end && unlikely (buffer->unicode->is_variation_selector (buffer->cur().codepoint)))
{
- set_glyph (buffer->cur(), c->font);
+ set_glyph (buffer->cur(), font);
buffer->next_glyph ();
}
} else {
- set_glyph (buffer->cur(), c->font);
+ set_glyph (buffer->cur(), font);
buffer->next_glyph ();
}
}
if (likely (buffer->idx < end)) {
- set_glyph (buffer->cur(), c->font);
+ set_glyph (buffer->cur(), font);
buffer->next_glyph ();
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-private.hh
index 817147199fd..817147199fd 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape.cc
index 4ed6b842071..63c36f936fb 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-shape.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-shape.cc
@@ -290,16 +290,18 @@ hb_ot_mirror_chars (hb_ot_shape_context_t *c)
if (HB_DIRECTION_IS_FORWARD (c->target_direction))
return;
- hb_unicode_funcs_t *unicode = c->buffer->unicode;
+ hb_buffer_t *buffer = c->buffer;
+ hb_unicode_funcs_t *unicode = buffer->unicode;
hb_mask_t rtlm_mask = c->plan->map.get_1_mask (HB_TAG ('r','t','l','m'));
- unsigned int count = c->buffer->len;
+ unsigned int count = buffer->len;
+ hb_glyph_info_t *info = buffer->info;
for (unsigned int i = 0; i < count; i++) {
- hb_codepoint_t codepoint = unicode->mirroring (c->buffer->info[i].codepoint);
- if (likely (codepoint == c->buffer->info[i].codepoint))
- c->buffer->info[i].mask |= rtlm_mask;
+ hb_codepoint_t codepoint = unicode->mirroring (info[i].codepoint);
+ if (likely (codepoint == info[i].codepoint))
+ info[i].mask |= rtlm_mask;
else
- c->buffer->info[i].codepoint = codepoint;
+ info[i].codepoint = codepoint;
}
}
@@ -307,12 +309,13 @@ static inline void
hb_ot_shape_setup_masks (hb_ot_shape_context_t *c)
{
hb_ot_map_t *map = &c->plan->map;
+ hb_buffer_t *buffer = c->buffer;
hb_mask_t global_mask = map->get_global_mask ();
- c->buffer->reset_masks (global_mask);
+ buffer->reset_masks (global_mask);
if (c->plan->shaper->setup_masks)
- c->plan->shaper->setup_masks (c->plan, c->buffer, c->font);
+ c->plan->shaper->setup_masks (c->plan, buffer, c->font);
for (unsigned int i = 0; i < c->num_user_features; i++)
{
@@ -320,7 +323,7 @@ hb_ot_shape_setup_masks (hb_ot_shape_context_t *c)
if (!(feature->start == 0 && feature->end == (unsigned int)-1)) {
unsigned int shift;
hb_mask_t mask = map->get_mask (feature->tag, &shift);
- c->buffer->set_masks (feature->value << shift, mask, feature->start, feature->end);
+ buffer->set_masks (feature->value << shift, mask, feature->start, feature->end);
}
}
}
@@ -338,46 +341,53 @@ static inline void
hb_synthesize_glyph_classes (hb_ot_shape_context_t *c)
{
unsigned int count = c->buffer->len;
+ hb_glyph_info_t *info = c->buffer->info;
for (unsigned int i = 0; i < count; i++)
- c->buffer->info[i].glyph_props() = _hb_glyph_info_get_general_category (&c->buffer->info[i]) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK ?
- HB_OT_LAYOUT_GLYPH_PROPS_MARK :
- HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH;
+ _hb_glyph_info_set_glyph_props (&info[i],
+ _hb_glyph_info_get_general_category (&info[i])
+ == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK ?
+ HB_OT_LAYOUT_GLYPH_PROPS_MARK :
+ HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH);
}
static inline void
hb_ot_substitute_default (hb_ot_shape_context_t *c)
{
+ hb_buffer_t *buffer = c->buffer;
+
if (c->plan->shaper->preprocess_text)
- c->plan->shaper->preprocess_text (c->plan, c->buffer, c->font);
+ c->plan->shaper->preprocess_text (c->plan, buffer, c->font);
hb_ot_mirror_chars (c);
- HB_BUFFER_ALLOCATE_VAR (c->buffer, glyph_index);
+ HB_BUFFER_ALLOCATE_VAR (buffer, glyph_index);
- _hb_ot_shape_normalize (c->plan, c->buffer, c->font);
+ _hb_ot_shape_normalize (c->plan, buffer, c->font);
hb_ot_shape_setup_masks (c);
/* This is unfortunate to go here, but necessary... */
if (!hb_ot_layout_has_positioning (c->face))
- _hb_ot_shape_fallback_position_recategorize_marks (c->plan, c->font, c->buffer);
+ _hb_ot_shape_fallback_position_recategorize_marks (c->plan, c->font, buffer);
- hb_ot_map_glyphs_fast (c->buffer);
+ hb_ot_map_glyphs_fast (buffer);
- HB_BUFFER_DEALLOCATE_VAR (c->buffer, glyph_index);
+ HB_BUFFER_DEALLOCATE_VAR (buffer, glyph_index);
}
static inline void
hb_ot_substitute_complex (hb_ot_shape_context_t *c)
{
- hb_ot_layout_substitute_start (c->font, c->buffer);
+ hb_buffer_t *buffer = c->buffer;
+
+ hb_ot_layout_substitute_start (c->font, buffer);
if (!hb_ot_layout_has_glyph_classes (c->face))
hb_synthesize_glyph_classes (c);
- c->plan->substitute (c->font, c->buffer);
+ c->plan->substitute (c->font, buffer);
- hb_ot_layout_substitute_finish (c->font, c->buffer);
+ hb_ot_layout_substitute_finish (c->font, buffer);
return;
}
@@ -408,7 +418,7 @@ zero_mark_widths_by_gdef (hb_buffer_t *buffer)
{
unsigned int count = buffer->len;
for (unsigned int i = 0; i < count; i++)
- if ((buffer->info[i].glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MARK))
+ if (_hb_glyph_info_is_mark (&buffer->info[i]))
{
buffer->pos[i].x_advance = 0;
buffer->pos[i].y_advance = 0;
@@ -418,17 +428,20 @@ zero_mark_widths_by_gdef (hb_buffer_t *buffer)
static inline void
hb_ot_position_default (hb_ot_shape_context_t *c)
{
+ hb_direction_t direction = c->buffer->props.direction;
unsigned int count = c->buffer->len;
+ hb_glyph_info_t *info = c->buffer->info;
+ hb_glyph_position_t *pos = c->buffer->pos;
for (unsigned int i = 0; i < count; i++)
{
- c->font->get_glyph_advance_for_direction (c->buffer->info[i].codepoint,
- c->buffer->props.direction,
- &c->buffer->pos[i].x_advance,
- &c->buffer->pos[i].y_advance);
- c->font->subtract_glyph_origin_for_direction (c->buffer->info[i].codepoint,
- c->buffer->props.direction,
- &c->buffer->pos[i].x_offset,
- &c->buffer->pos[i].y_offset);
+ c->font->get_glyph_advance_for_direction (info[i].codepoint,
+ direction,
+ &pos[i].x_advance,
+ &pos[i].y_advance);
+ c->font->subtract_glyph_origin_for_direction (info[i].codepoint,
+ direction,
+ &pos[i].x_offset,
+ &pos[i].y_offset);
}
}
@@ -460,22 +473,25 @@ hb_ot_position_complex (hb_ot_shape_context_t *c)
if (hb_ot_layout_has_positioning (c->face))
{
+ hb_glyph_info_t *info = c->buffer->info;
+ hb_glyph_position_t *pos = c->buffer->pos;
+
/* Change glyph origin to what GPOS expects, apply GPOS, change it back. */
for (unsigned int i = 0; i < count; i++) {
- c->font->add_glyph_origin_for_direction (c->buffer->info[i].codepoint,
+ c->font->add_glyph_origin_for_direction (info[i].codepoint,
HB_DIRECTION_LTR,
- &c->buffer->pos[i].x_offset,
- &c->buffer->pos[i].y_offset);
+ &pos[i].x_offset,
+ &pos[i].y_offset);
}
c->plan->position (c->font, c->buffer);
for (unsigned int i = 0; i < count; i++) {
- c->font->subtract_glyph_origin_for_direction (c->buffer->info[i].codepoint,
+ c->font->subtract_glyph_origin_for_direction (info[i].codepoint,
HB_DIRECTION_LTR,
- &c->buffer->pos[i].x_offset,
- &c->buffer->pos[i].y_offset);
+ &pos[i].x_offset,
+ &pos[i].y_offset);
}
ret = true;
@@ -546,7 +562,7 @@ hb_ot_hide_default_ignorables (hb_ot_shape_context_t *c)
unsigned int j = 0;
for (unsigned int i = 0; i < count; i++)
{
- if (unlikely (!is_a_ligature (info[i]) &&
+ if (unlikely (!_hb_glyph_info_ligated (&info[i]) &&
_hb_glyph_info_is_default_ignorable (&info[i])))
{
if (space_status == SPACE_DONT_KNOW)
@@ -582,8 +598,7 @@ hb_ot_shape_internal (hb_ot_shape_context_t *c)
/* Save the original direction, we use it later. */
c->target_direction = c->buffer->props.direction;
- HB_BUFFER_ALLOCATE_VAR (c->buffer, unicode_props0);
- HB_BUFFER_ALLOCATE_VAR (c->buffer, unicode_props1);
+ _hb_buffer_allocate_unicode_vars (c->buffer);
c->buffer->clear_output ();
@@ -598,8 +613,7 @@ hb_ot_shape_internal (hb_ot_shape_context_t *c)
hb_ot_hide_default_ignorables (c);
- HB_BUFFER_DEALLOCATE_VAR (c->buffer, unicode_props1);
- HB_BUFFER_DEALLOCATE_VAR (c->buffer, unicode_props0);
+ _hb_buffer_deallocate_unicode_vars (c->buffer);
c->buffer->props.direction = c->target_direction;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-tag.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-tag.cc
index 91ebec76ee3..91ebec76ee3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-tag.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-tag.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-tag.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-tag.h
index 1bf12ab3c09..1bf12ab3c09 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot-tag.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot-tag.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot.h
index 80739063991..80739063991 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ot.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ot.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-private.hh
index 4152e275523..4152e275523 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-set-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-set-private.hh
index ca2a07b7619..ca2a07b7619 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-set-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-set-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-set.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-set.cc
index 59a0af46ed4..59a0af46ed4 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-set.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-set.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-set.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-set.h
index bafdae96333..bafdae96333 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-set.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-set.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shape-plan-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shape-plan-private.hh
index dd014e38d01..dd014e38d01 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shape-plan-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shape-plan-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shape-plan.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shape-plan.cc
index b44a9e2ab77..b44a9e2ab77 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shape-plan.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shape-plan.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shape-plan.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shape-plan.h
index 8f54552f90b..8f54552f90b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shape-plan.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shape-plan.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shape.cc
index c1b752405e1..c1b752405e1 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shape.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shape.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shape.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shape.h
index 10a35cb517e..10a35cb517e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shape.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shape.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shaper-impl-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shaper-impl-private.hh
index 7844081e95b..7844081e95b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shaper-impl-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shaper-impl-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shaper-list.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shaper-list.hh
index b9c029e58f1..b9c029e58f1 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shaper-list.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shaper-list.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shaper-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shaper-private.hh
index 29c4493943d..29c4493943d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shaper-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shaper-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shaper.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shaper.cc
index 44f718aa702..44f718aa702 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-shaper.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-shaper.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-tt-font.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-tt-font.cc
index c503a404380..c503a404380 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-tt-font.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-tt-font.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ucdn.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ucdn.cc
index 7d24559de67..7d24559de67 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-ucdn.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-ucdn.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-unicode-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-unicode-private.hh
index dd4d00138e1..dd4d00138e1 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-unicode-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-unicode-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-unicode.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-unicode.cc
index 5b44913bd35..5b44913bd35 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-unicode.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-unicode.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-unicode.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-unicode.h
index 1c4e097b92d..1c4e097b92d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-unicode.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-unicode.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-uniscribe.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-uniscribe.cc
index 65a63f3be54..65a63f3be54 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-uniscribe.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-uniscribe.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-uniscribe.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-uniscribe.h
index 51887c8794b..51887c8794b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-uniscribe.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-uniscribe.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-utf-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-utf-private.hh
index b9a6519d28e..b9a6519d28e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-utf-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-utf-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-version.h.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-version.h.in
index 43634f91ce8..43634f91ce8 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-version.h.in
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-version.h.in
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-warning.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-warning.cc
index 4f1f65f5a21..4f1f65f5a21 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb-warning.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb-warning.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb.h
index c5a938a3818..c5a938a3818 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/hb.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/hb.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/main.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/main.cc
index ff75237b23f..ff75237b23f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/main.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/main.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/test-buffer-serialize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/test-buffer-serialize.cc
index 827b0513b37..18c46e9524b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/test-buffer-serialize.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/test-buffer-serialize.cc
@@ -34,7 +34,10 @@
#endif
#ifdef HAVE_GLIB
-#include <glib.h>
+# include <glib.h>
+# if !GLIB_CHECK_VERSION (2, 22, 0)
+# define g_mapped_file_unref g_mapped_file_free
+# endif
#endif
#include <stdlib.h>
#include <stdio.h>
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/test-size-params.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/test-size-params.cc
index 947b5669a14..35d9e3c8e25 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/test-size-params.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/test-size-params.cc
@@ -32,7 +32,10 @@
#include "hb-ot.h"
#ifdef HAVE_GLIB
-#include <glib.h>
+# include <glib.h>
+# if !GLIB_CHECK_VERSION (2, 22, 0)
+# define g_mapped_file_unref g_mapped_file_free
+# endif
#endif
#include <stdlib.h>
#include <stdio.h>
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/test-would-substitute.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/test-would-substitute.cc
index 4731e265607..8ea87cdf397 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/test-would-substitute.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/test-would-substitute.cc
@@ -32,7 +32,10 @@
#include "hb-ot.h"
#ifdef HAVE_GLIB
-#include <glib.h>
+# include <glib.h>
+# if !GLIB_CHECK_VERSION (2, 22, 0)
+# define g_mapped_file_unref g_mapped_file_free
+# endif
#endif
#include <stdlib.h>
#include <stdio.h>
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/test.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/test.cc
index 1acb6ead70b..a8fe046f34c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.22/src/test.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.23/src/test.cc
@@ -31,7 +31,10 @@
#include "hb.h"
#ifdef HAVE_GLIB
-#include <glib.h>
+# include <glib.h>
+# if !GLIB_CHECK_VERSION (2, 22, 0)
+# define g_mapped_file_unref g_mapped_file_free
+# endif
#endif
#include <stdlib.h>
#include <stdio.h>
diff --git a/Build/source/libs/harfbuzz/hbtest.c b/Build/source/libs/harfbuzz/hbtest.c
index eacf3c603cf..09f4d33e572 100644
--- a/Build/source/libs/harfbuzz/hbtest.c
+++ b/Build/source/libs/harfbuzz/hbtest.c
@@ -18,11 +18,15 @@ int main (int argc, char **argv)
char icu_version[U_MAX_VERSION_STRING_LENGTH] = "";
int nMajor, nMinor, nBugFix;
- printf ("%s: using HarfBuzz version %s\n", argv[0], hb_version_string ());
+ printf ("%s: Compiled with HarfBuzz version %s; using %s\n",
+ argv[0], HB_VERSION_STRING, hb_version_string ());
u_getVersion(icuVersion);
u_versionToString(icuVersion, icu_version);
- printf ("%s: using ICU version %s\n", argv[0], icu_version);
+ printf ("%s: Compiled with ICU version %s; using %s\n",
+ argv[0], U_ICU_VERSION, icu_version);
gr_engine_version(&nMajor, &nMinor, &nBugFix);
- printf ("%s: using Graphite2 version %d.%d.%d\n", argv[0], nMajor, nMinor, nBugFix);
+ printf ("%s: Compiled with Graphite2 version %d.%d.%d; using %d.%d.%d\n",
+ argv[0], GR2_VERSION_MAJOR, GR2_VERSION_MINOR, GR2_VERSION_BUGFIX,
+ nMajor, nMinor, nBugFix);
return 0;
}
diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac
index f02192a1d82..1e4e31b914b 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.22])
+m4_define([harfbuzz_version], [0.9.23])