summaryrefslogtreecommitdiff
path: root/Build/source
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2015-07-28 08:29:07 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2015-07-28 08:29:07 +0000
commit83c64f10045f775f72283696d986a0311454a453 (patch)
tree0b2728f0a744630b827ff85607362d3e0820aa93 /Build/source
parentf26301cb391fc31102a4abea7bb7468019d0fe58 (diff)
harfbuzz 1.0.1
git-svn-id: svn://tug.org/texlive/trunk@37977 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source')
-rw-r--r--Build/source/libs/README2
-rw-r--r--Build/source/libs/harfbuzz/ChangeLog5
-rw-r--r--Build/source/libs/harfbuzz/Makefile.am15
-rw-r--r--Build/source/libs/harfbuzz/Makefile.in38
-rwxr-xr-xBuild/source/libs/harfbuzz/configure36
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-sea-machine.hh224
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-sea-machine.rl102
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-sea.cc380
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1-PATCHES/ChangeLog (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41-PATCHES/ChangeLog)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1-PATCHES/TL-Changes (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41-PATCHES/TL-Changes)2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/AUTHORS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/AUTHORS)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/Android.mk (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/Android.mk)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/ChangeLog (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/ChangeLog)917
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/Makefile.am (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/Makefile.am)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/NEWS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/NEWS)37
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/README (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/README)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/README.python (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/README.python)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/THANKS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/THANKS)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/TODO (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/TODO)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-1.0.1/autogen.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/autogen.sh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/config.h.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/config.h.in)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/configure.ac (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/configure.ac)4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/gtk-doc.make (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/gtk-doc.make)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/harfbuzz.doap (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/harfbuzz.doap)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/Makefile.am (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/Makefile.am)32
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-c-linkage-decls.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-c-linkage-decls.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-defs.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-defs.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-header-guards.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-header-guards.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-includes.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-includes.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-libstdc++.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-libstdc++.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-static-inits.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-static-inits.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-symbols.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-symbols.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-1.0.1/src/gen-arabic-table.py (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/gen-arabic-table.py)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-1.0.1/src/gen-indic-table.py (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/gen-indic-table.py)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/harfbuzz-gobject.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/harfbuzz-gobject.pc.in)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/harfbuzz-icu.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/harfbuzz-icu.pc.in)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/harfbuzz.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/harfbuzz.pc.in)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-atomic-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-atomic-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-blob.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-blob.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-blob.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-blob.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-deserialize-json.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-deserialize-json.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-deserialize-json.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-deserialize-json.rl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-deserialize-text.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-deserialize-text.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-deserialize-text.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-deserialize-text.rl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-private.hh)12
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-serialize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-serialize.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer.cc)87
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer.h)12
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-cache-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-cache-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-common.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-common.cc)3
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-common.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-common.h)7
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-coretext.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-coretext.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-coretext.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-coretext.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-deprecated.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-deprecated.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-face-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-face-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-face.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-face.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-face.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-face.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-fallback-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-fallback-shape.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-font-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-font-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-font.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-font.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-font.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-font.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ft.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ft.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ft.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ft.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-glib.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-glib.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-glib.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-glib.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-gobject-enums.cc.tmpl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-gobject-enums.cc.tmpl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-gobject-enums.h.tmpl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-gobject-enums.h.tmpl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-gobject-structs.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-gobject-structs.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-gobject-structs.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-gobject-structs.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-gobject.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-gobject.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-graphite2.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-graphite2.cc)81
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-graphite2.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-graphite2.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-icu.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-icu.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-icu.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-icu.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-mutex-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-mutex-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-object-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-object-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-open-file-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-open-file-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-open-type-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-open-type-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-cmap-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-cmap-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-font.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-font.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-font.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-font.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-head-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-head-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-hhea-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-hhea-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-hmtx-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-hmtx-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-common-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-common-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-gdef-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-gdef-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-gpos-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-gpos-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-gsub-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-gsub-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-gsubgpos-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-gsubgpos-private.hh)7
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-jstf-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-jstf-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-private.hh)45
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout.cc)24
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-map-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-map-private.hh)7
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-map.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-map.cc)10
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-maxp-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-maxp-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-name-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-name-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-arabic-fallback.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-arabic-fallback.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-arabic-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-arabic-table.hh)26
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-arabic-win1256.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-arabic-win1256.hh)4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-arabic.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-arabic.cc)39
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-default.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-default.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-hangul.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-hangul.cc)13
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-hebrew.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-hebrew.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-indic-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-indic-machine.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-indic-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-indic-machine.rl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-indic-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-indic-private.hh)2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-indic-table.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-indic-table.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-indic.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-indic.cc)102
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-myanmar-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-myanmar-machine.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-myanmar-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-myanmar-machine.rl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-myanmar.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-myanmar.cc)64
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-private.hh)136
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-thai.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-thai.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-tibetan.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-tibetan.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-use-machine.hh548
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-use-machine.rl180
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-use.cc593
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-fallback-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-fallback-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-fallback.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-fallback.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-normalize-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-normalize-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-normalize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-normalize.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape.cc)198
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-tag.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-tag.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-tag.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-tag.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-private.hh)9
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-set-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-set-private.hh)10
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-set.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-set.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-set.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-set.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shape-plan-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shape-plan-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shape-plan.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shape-plan.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shape-plan.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shape-plan.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shape.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shape.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shape.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shaper-impl-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shaper-impl-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shaper-list.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shaper-list.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shaper-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shaper-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shaper.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shaper.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ucdn.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ucdn.cc)6
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-unicode-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-unicode-private.hh)2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-unicode.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-unicode.cc)5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-unicode.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-unicode.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-uniscribe.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-uniscribe.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-uniscribe.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-uniscribe.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-utf-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-utf-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-version.h.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-version.h.in)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-warning.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-warning.cc)10
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/main.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/main.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/test-buffer-serialize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/test-buffer-serialize.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/test-size-params.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/test-size-params.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/test-would-substitute.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/test-would-substitute.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/test.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/test.cc)0
-rw-r--r--Build/source/libs/harfbuzz/version.ac2
157 files changed, 2906 insertions, 1132 deletions
diff --git a/Build/source/libs/README b/Build/source/libs/README
index f821e5df1b8..5687c1c4ee6 100644
--- a/Build/source/libs/README
+++ b/Build/source/libs/README
@@ -24,7 +24,7 @@ gmp 6.0.0 - checked 25mar14
graphite2 1.2.4 - checked 2dec13
http://sourceforge.net/projects/silgraphite/files/graphite2/
-harfbuzz 0.9.41 - checked 19jun15
+harfbuzz 1.0.1 - checked 28jul15
http://www.freedesktop.org/software/harfbuzz/release/
icu 55.1 (release) - checked 12apr15
diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog
index 673a86f3236..00f5559393d 100644
--- a/Build/source/libs/harfbuzz/ChangeLog
+++ b/Build/source/libs/harfbuzz/ChangeLog
@@ -1,3 +1,8 @@
+2015-07-28 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Import harfbuzz-1.0.1.
+ * version.ac, Makefile.am: Adjust.
+
2015-07-06 Peter Breitenlohner <peb@mppmu.mpg.de>
* Makefile.am: Better dependencies for 'make check'.
diff --git a/Build/source/libs/harfbuzz/Makefile.am b/Build/source/libs/harfbuzz/Makefile.am
index 9ee8c72afa5..eab4d365a76 100644
--- a/Build/source/libs/harfbuzz/Makefile.am
+++ b/Build/source/libs/harfbuzz/Makefile.am
@@ -85,6 +85,7 @@ libharfbuzz_a_SOURCES += \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-arabic.cc \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-arabic-fallback.hh \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-arabic-table.hh \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-complex-arabic-private.hh \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-default.cc \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-hangul.cc \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-hebrew.cc \
@@ -94,15 +95,17 @@ libharfbuzz_a_SOURCES += \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-indic-table.cc \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-myanmar.cc \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-myanmar-machine.hh \
- @HARFBUZZ_TREE@/src/hb-ot-shape-complex-sea.cc \
- @HARFBUZZ_TREE@/src/hb-ot-shape-complex-sea-machine.hh \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-complex-private.hh \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-thai.cc \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-tibetan.cc \
- @HARFBUZZ_TREE@/src/hb-ot-shape-complex-private.hh \
- @HARFBUZZ_TREE@/src/hb-ot-shape-normalize-private.hh \
- @HARFBUZZ_TREE@/src/hb-ot-shape-normalize.cc \
- @HARFBUZZ_TREE@/src/hb-ot-shape-fallback-private.hh \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-complex-use.cc \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-complex-use-machine.hh \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-complex-use-private.hh \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-complex-use-table.cc \
@HARFBUZZ_TREE@/src/hb-ot-shape-fallback.cc \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-fallback-private.hh \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-normalize.cc \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-normalize-private.hh \
@HARFBUZZ_TREE@/src/hb-ot-shape-private.hh
## ICU library
diff --git a/Build/source/libs/harfbuzz/Makefile.in b/Build/source/libs/harfbuzz/Makefile.in
index c143866693f..1142358a8ad 100644
--- a/Build/source/libs/harfbuzz/Makefile.in
+++ b/Build/source/libs/harfbuzz/Makefile.in
@@ -143,11 +143,12 @@ am_libharfbuzz_a_OBJECTS = @HARFBUZZ_TREE@/src/hb-blob.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-indic.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-indic-table.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-myanmar.$(OBJEXT) \
- @HARFBUZZ_TREE@/src/hb-ot-shape-complex-sea.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-thai.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-tibetan.$(OBJEXT) \
- @HARFBUZZ_TREE@/src/hb-ot-shape-normalize.$(OBJEXT) \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-complex-use.$(OBJEXT) \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-complex-use-table.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-ot-shape-fallback.$(OBJEXT) \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-normalize.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-icu.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-graphite2.$(OBJEXT)
libharfbuzz_a_OBJECTS = $(am_libharfbuzz_a_OBJECTS)
@@ -460,7 +461,7 @@ am__DIST_COMMON = $(srcdir)/../../am/dist_hook.am \
$(top_srcdir)/../../build-aux/install-sh \
$(top_srcdir)/../../build-aux/missing \
$(top_srcdir)/../../build-aux/test-driver \
- $(top_srcdir)/harfbuzz-0.9.41/src/hb-version.h.in \
+ $(top_srcdir)/harfbuzz-1.0.1/src/hb-version.h.in \
../../build-aux/compile ../../build-aux/config.guess \
../../build-aux/config.sub ../../build-aux/depcomp \
../../build-aux/install-sh ../../build-aux/ltmain.sh \
@@ -693,6 +694,7 @@ libharfbuzz_a_SOURCES = @HARFBUZZ_TREE@/src/hb-atomic-private.hh \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-arabic.cc \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-arabic-fallback.hh \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-arabic-table.hh \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-complex-arabic-private.hh \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-default.cc \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-hangul.cc \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-hebrew.cc \
@@ -702,15 +704,17 @@ libharfbuzz_a_SOURCES = @HARFBUZZ_TREE@/src/hb-atomic-private.hh \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-indic-table.cc \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-myanmar.cc \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-myanmar-machine.hh \
- @HARFBUZZ_TREE@/src/hb-ot-shape-complex-sea.cc \
- @HARFBUZZ_TREE@/src/hb-ot-shape-complex-sea-machine.hh \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-complex-private.hh \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-thai.cc \
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-tibetan.cc \
- @HARFBUZZ_TREE@/src/hb-ot-shape-complex-private.hh \
- @HARFBUZZ_TREE@/src/hb-ot-shape-normalize-private.hh \
- @HARFBUZZ_TREE@/src/hb-ot-shape-normalize.cc \
- @HARFBUZZ_TREE@/src/hb-ot-shape-fallback-private.hh \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-complex-use.cc \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-complex-use-machine.hh \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-complex-use-private.hh \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-complex-use-table.cc \
@HARFBUZZ_TREE@/src/hb-ot-shape-fallback.cc \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-fallback-private.hh \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-normalize.cc \
+ @HARFBUZZ_TREE@/src/hb-ot-shape-normalize-private.hh \
@HARFBUZZ_TREE@/src/hb-ot-shape-private.hh \
@HARFBUZZ_TREE@/src/hb-icu.cc \
@HARFBUZZ_TREE@/src/hb-graphite2.cc
@@ -785,7 +789,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.41/src/hb-version.h.in
+hb-version.h: $(top_builddir)/config.status $(top_srcdir)/harfbuzz-1.0.1/src/hb-version.h.in
cd $(top_builddir) && $(SHELL) ./config.status $@
clean-noinstLIBRARIES:
@@ -871,21 +875,24 @@ clean-noinstLIBRARIES:
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-myanmar.$(OBJEXT): \
@HARFBUZZ_TREE@/src/$(am__dirstamp) \
@HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
-@HARFBUZZ_TREE@/src/hb-ot-shape-complex-sea.$(OBJEXT): \
- @HARFBUZZ_TREE@/src/$(am__dirstamp) \
- @HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-thai.$(OBJEXT): \
@HARFBUZZ_TREE@/src/$(am__dirstamp) \
@HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
@HARFBUZZ_TREE@/src/hb-ot-shape-complex-tibetan.$(OBJEXT): \
@HARFBUZZ_TREE@/src/$(am__dirstamp) \
@HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
-@HARFBUZZ_TREE@/src/hb-ot-shape-normalize.$(OBJEXT): \
+@HARFBUZZ_TREE@/src/hb-ot-shape-complex-use.$(OBJEXT): \
+ @HARFBUZZ_TREE@/src/$(am__dirstamp) \
+ @HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
+@HARFBUZZ_TREE@/src/hb-ot-shape-complex-use-table.$(OBJEXT): \
@HARFBUZZ_TREE@/src/$(am__dirstamp) \
@HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
@HARFBUZZ_TREE@/src/hb-ot-shape-fallback.$(OBJEXT): \
@HARFBUZZ_TREE@/src/$(am__dirstamp) \
@HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
+@HARFBUZZ_TREE@/src/hb-ot-shape-normalize.$(OBJEXT): \
+ @HARFBUZZ_TREE@/src/$(am__dirstamp) \
+ @HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
@HARFBUZZ_TREE@/src/hb-icu.$(OBJEXT): \
@HARFBUZZ_TREE@/src/$(am__dirstamp) \
@HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
@@ -933,9 +940,10 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-shape-complex-indic-table.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-shape-complex-indic.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-shape-complex-myanmar.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-shape-complex-sea.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-shape-complex-thai.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-shape-complex-tibetan.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-shape-complex-use-table.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-shape-complex-use.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-shape-fallback.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-shape-normalize.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-shape.Po@am__quote@
diff --git a/Build/source/libs/harfbuzz/configure b/Build/source/libs/harfbuzz/configure
index 6114cc619a9..0c092eca6ad 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.41.
+# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 1.0.1.
#
# 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.41'
-PACKAGE_STRING='harfbuzz (TeX Live) 0.9.41'
+PACKAGE_VERSION='1.0.1'
+PACKAGE_STRING='harfbuzz (TeX Live) 1.0.1'
PACKAGE_BUGREPORT='tex-k@tug.org'
PACKAGE_URL=''
-ac_unique_file="harfbuzz-0.9.41/src/harfbuzz.pc.in"
+ac_unique_file="harfbuzz-1.0.1/src/harfbuzz.pc.in"
# Factoring default headers for most tests.
ac_includes_default="\
#include <stdio.h>
@@ -1312,7 +1312,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.41 to adapt to many kinds of systems.
+\`configure' configures harfbuzz (TeX Live) 1.0.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1383,7 +1383,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of harfbuzz (TeX Live) 0.9.41:";;
+ short | recursive ) echo "Configuration of harfbuzz (TeX Live) 1.0.1:";;
esac
cat <<\_ACEOF
@@ -1490,7 +1490,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-harfbuzz (TeX Live) configure 0.9.41
+harfbuzz (TeX Live) configure 1.0.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2080,7 +2080,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.41, which was
+It was created by harfbuzz (TeX Live) $as_me 1.0.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -4003,7 +4003,7 @@ fi
# Define the identity of the package.
PACKAGE='harfbuzz--tex-live-'
- VERSION='0.9.41'
+ VERSION='1.0.1'
cat >>confdefs.h <<_ACEOF
@@ -4204,10 +4204,10 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags
-HB_VERSION_MAJOR=0
-HB_VERSION_MINOR=9
-HB_VERSION_MICRO=41
-HB_VERSION=0.9.41
+HB_VERSION_MAJOR=1
+HB_VERSION_MINOR=0
+HB_VERSION_MICRO=1
+HB_VERSION=1.0.1
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -6310,14 +6310,14 @@ $as_echo "#define HAVE_INTEL_ATOMIC_PRIMITIVES 1" >>confdefs.h
fi
-HARFBUZZ_TREE=harfbuzz-0.9.41
+HARFBUZZ_TREE=harfbuzz-1.0.1
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.41/src/hb-version.h.in"
+ac_config_files="$ac_config_files Makefile include/Makefile hb-version.h:harfbuzz-1.0.1/src/hb-version.h.in"
cat >confcache <<\_ACEOF
@@ -6866,7 +6866,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.41, which was
+This file was extended by harfbuzz (TeX Live) $as_me 1.0.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -6932,7 +6932,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.41
+harfbuzz (TeX Live) config.status 1.0.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -7065,7 +7065,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.41/src/hb-version.h.in" ;;
+ "hb-version.h") CONFIG_FILES="$CONFIG_FILES hb-version.h:harfbuzz-1.0.1/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.41/src/hb-ot-shape-complex-sea-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-sea-machine.hh
deleted file mode 100644
index 15b862f5a13..00000000000
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-sea-machine.hh
+++ /dev/null
@@ -1,224 +0,0 @@
-
-#line 1 "hb-ot-shape-complex-sea-machine.rl"
-/*
- * Copyright © 2011,2012,2013 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_SEA_MACHINE_HH
-#define HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH
-
-#include "hb-private.hh"
-
-
-#line 36 "hb-ot-shape-complex-sea-machine.hh"
-static const unsigned char _sea_syllable_machine_trans_keys[] = {
- 1u, 1u, 1u, 1u, 1u, 29u, 3u, 29u, 3u, 29u, 1u, 1u, 0
-};
-
-static const char _sea_syllable_machine_key_spans[] = {
- 1, 1, 29, 27, 27, 1
-};
-
-static const char _sea_syllable_machine_index_offsets[] = {
- 0, 2, 4, 34, 62, 90
-};
-
-static const char _sea_syllable_machine_indicies[] = {
- 1, 0, 3, 2, 1, 1, 3, 5,
- 4, 4, 4, 4, 4, 3, 4, 1,
- 4, 4, 4, 4, 3, 4, 4, 4,
- 4, 3, 4, 4, 4, 3, 3, 3,
- 3, 4, 1, 7, 6, 6, 6, 6,
- 6, 1, 6, 6, 6, 6, 6, 6,
- 1, 6, 6, 6, 6, 1, 6, 6,
- 6, 1, 1, 1, 1, 6, 3, 9,
- 8, 8, 8, 8, 8, 3, 8, 8,
- 8, 8, 8, 8, 3, 8, 8, 8,
- 8, 3, 8, 8, 8, 3, 3, 3,
- 3, 8, 3, 10, 0
-};
-
-static const char _sea_syllable_machine_trans_targs[] = {
- 2, 3, 2, 4, 2, 5, 2, 0,
- 2, 1, 2
-};
-
-static const char _sea_syllable_machine_trans_actions[] = {
- 1, 2, 3, 2, 6, 0, 7, 0,
- 8, 0, 9
-};
-
-static const char _sea_syllable_machine_to_state_actions[] = {
- 0, 0, 4, 0, 0, 0
-};
-
-static const char _sea_syllable_machine_from_state_actions[] = {
- 0, 0, 5, 0, 0, 0
-};
-
-static const char _sea_syllable_machine_eof_trans[] = {
- 1, 3, 0, 7, 9, 11
-};
-
-static const int sea_syllable_machine_start = 2;
-static const int sea_syllable_machine_first_final = 2;
-static const int sea_syllable_machine_error = -1;
-
-static const int sea_syllable_machine_en_main = 2;
-
-
-#line 36 "hb-ot-shape-complex-sea-machine.rl"
-
-
-
-#line 67 "hb-ot-shape-complex-sea-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 117 "hb-ot-shape-complex-sea-machine.hh"
- {
- cs = sea_syllable_machine_start;
- ts = 0;
- te = 0;
- act = 0;
- }
-
-#line 88 "hb-ot-shape-complex-sea-machine.rl"
-
-
- p = 0;
- pe = eof = buffer->len;
-
- unsigned int last = 0;
- unsigned int syllable_serial = 1;
-
-#line 134 "hb-ot-shape-complex-sea-machine.hh"
- {
- int _slen;
- int _trans;
- const unsigned char *_keys;
- const char *_inds;
- if ( p == pe )
- goto _test_eof;
-_resume:
- switch ( _sea_syllable_machine_from_state_actions[cs] ) {
- case 5:
-#line 1 "NONE"
- {ts = p;}
- break;
-#line 148 "hb-ot-shape-complex-sea-machine.hh"
- }
-
- _keys = _sea_syllable_machine_trans_keys + (cs<<1);
- _inds = _sea_syllable_machine_indicies + _sea_syllable_machine_index_offsets[cs];
-
- _slen = _sea_syllable_machine_key_spans[cs];
- _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].sea_category()) &&
- ( info[p].sea_category()) <= _keys[1] ?
- ( info[p].sea_category()) - _keys[0] : _slen ];
-
-_eof_trans:
- cs = _sea_syllable_machine_trans_targs[_trans];
-
- if ( _sea_syllable_machine_trans_actions[_trans] == 0 )
- goto _again;
-
- switch ( _sea_syllable_machine_trans_actions[_trans] ) {
- case 2:
-#line 1 "NONE"
- {te = p+1;}
- break;
- case 6:
-#line 63 "hb-ot-shape-complex-sea-machine.rl"
- {te = p+1;{ found_syllable (non_sea_cluster); }}
- break;
- case 7:
-#line 61 "hb-ot-shape-complex-sea-machine.rl"
- {te = p;p--;{ found_syllable (consonant_syllable); }}
- break;
- case 8:
-#line 62 "hb-ot-shape-complex-sea-machine.rl"
- {te = p;p--;{ found_syllable (broken_cluster); }}
- break;
- case 9:
-#line 63 "hb-ot-shape-complex-sea-machine.rl"
- {te = p;p--;{ found_syllable (non_sea_cluster); }}
- break;
- case 1:
-#line 61 "hb-ot-shape-complex-sea-machine.rl"
- {{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
- break;
- case 3:
-#line 62 "hb-ot-shape-complex-sea-machine.rl"
- {{p = ((te))-1;}{ found_syllable (broken_cluster); }}
- break;
-#line 194 "hb-ot-shape-complex-sea-machine.hh"
- }
-
-_again:
- switch ( _sea_syllable_machine_to_state_actions[cs] ) {
- case 4:
-#line 1 "NONE"
- {ts = 0;}
- break;
-#line 203 "hb-ot-shape-complex-sea-machine.hh"
- }
-
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- if ( _sea_syllable_machine_eof_trans[cs] > 0 ) {
- _trans = _sea_syllable_machine_eof_trans[cs] - 1;
- goto _eof_trans;
- }
- }
-
- }
-
-#line 97 "hb-ot-shape-complex-sea-machine.rl"
-
-}
-
-#undef found_syllable
-
-#endif /* HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-sea-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-sea-machine.rl
deleted file mode 100644
index 46140fc4d5f..00000000000
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-sea-machine.rl
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright © 2011,2012,2013 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_SEA_MACHINE_HH
-#define HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH
-
-#include "hb-private.hh"
-
-%%{
- machine sea_syllable_machine;
- alphtype unsigned char;
- write data;
-}%%
-
-%%{
-
-# Same order as enum sea_category_t. Not sure how to avoid duplication.
-C = 1;
-GB = 12; # Generic Base
-H = 4; # Halant
-IV = 2; # Independent Vowel
-MR = 22; # Medial Ra
-CM = 17; # Consonant Medial
-VAbv = 26;
-VBlw = 27;
-VPre = 28;
-VPst = 29;
-T = 3; # Tone Marks
-A = 10; # Anusvara
-
-syllable_tail = (VPre|VAbv|VBlw|VPst|H.C|CM|MR|T|A)*;
-
-consonant_syllable = (C|IV|GB) syllable_tail;
-broken_cluster = syllable_tail;
-other = any;
-
-main := |*
- consonant_syllable => { found_syllable (consonant_syllable); };
- broken_cluster => { found_syllable (broken_cluster); };
- other => { found_syllable (non_sea_cluster); };
-*|;
-
-
-}%%
-
-#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;
- %%{
- write init;
- getkey info[p].sea_category();
- }%%
-
- p = 0;
- pe = eof = buffer->len;
-
- unsigned int last = 0;
- unsigned int syllable_serial = 1;
- %%{
- write exec;
- }%%
-}
-
-#undef found_syllable
-
-#endif /* HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-sea.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-sea.cc
deleted file mode 100644
index f08b7ccb9f4..00000000000
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-sea.cc
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * Copyright © 2011,2012,2013 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
- */
-
-#include "hb-ot-shape-complex-indic-private.hh"
-
-/* buffer var allocations */
-#define sea_category() complex_var_u8_0() /* indic_category_t */
-#define sea_position() complex_var_u8_1() /* indic_position_t */
-
-
-/*
- * South-East Asian shaper.
- * Loosely based on the Myanmar spec / shaper.
- * There is no OpenType spec for this.
- */
-
-static const hb_tag_t
-basic_features[] =
-{
- /*
- * Basic features.
- * These features are applied in order, one at a time, after initial_reordering.
- */
- HB_TAG('p','r','e','f'),
- HB_TAG('a','b','v','f'),
- HB_TAG('b','l','w','f'),
- HB_TAG('p','s','t','f'),
-};
-static const hb_tag_t
-other_features[] =
-{
- /*
- * Other features.
- * These features are applied all at once, after final_reordering.
- */
- HB_TAG('p','r','e','s'),
- HB_TAG('a','b','v','s'),
- HB_TAG('b','l','w','s'),
- HB_TAG('p','s','t','s'),
- /* Positioning features, though we don't care about the types. */
- HB_TAG('d','i','s','t'),
-};
-
-static void
-setup_syllables (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer);
-static void
-initial_reordering (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer);
-static void
-final_reordering (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer);
-
-static void
-collect_features_sea (hb_ot_shape_planner_t *plan)
-{
- hb_ot_map_builder_t *map = &plan->map;
-
- /* Do this before any lookups have been applied. */
- map->add_gsub_pause (setup_syllables);
-
- map->add_global_bool_feature (HB_TAG('l','o','c','l'));
- /* The Indic specs do not require ccmp, but we apply it here since if
- * there is a use of it, it's typically at the beginning. */
- map->add_global_bool_feature (HB_TAG('c','c','m','p'));
-
- map->add_gsub_pause (initial_reordering);
- for (unsigned int i = 0; i < ARRAY_LENGTH (basic_features); i++)
- {
- map->add_feature (basic_features[i], 1, F_GLOBAL | F_MANUAL_ZWJ);
- map->add_gsub_pause (NULL);
- }
- map->add_gsub_pause (final_reordering);
- for (unsigned int i = 0; i < ARRAY_LENGTH (other_features); i++)
- map->add_feature (other_features[i], 1, F_GLOBAL | F_MANUAL_ZWJ);
-}
-
-static void
-override_features_sea (hb_ot_shape_planner_t *plan)
-{
- plan->map.add_feature (HB_TAG('l','i','g','a'), 0, F_GLOBAL);
-}
-
-
-enum syllable_type_t {
- consonant_syllable,
- broken_cluster,
- non_sea_cluster,
-};
-
-#include "hb-ot-shape-complex-sea-machine.hh"
-
-
-/* Note: This enum is duplicated in the -machine.rl source file.
- * Not sure how to avoid duplication. */
-enum sea_category_t {
-// OT_C = 1,
- OT_GB = 12, /* Generic Base XXX DOTTED CIRCLE only for now */
-// OT_H = 4, /* Halant */
- OT_IV = 2, /* Independent Vowel */
- OT_MR = 22, /* Medial Ra */
-// OT_CM = 17, /* Consonant Medial */
- OT_VAbv = 26,
- OT_VBlw = 27,
- OT_VPre = 28,
- OT_VPst = 29,
- OT_T = 3, /* Tone Marks */
-// OT_A = 10, /* Anusvara */
-};
-
-static inline void
-set_sea_properties (hb_glyph_info_t &info)
-{
- hb_codepoint_t u = info.codepoint;
- unsigned int type = hb_indic_get_categories (u);
- indic_category_t cat = (indic_category_t) (type & 0x7Fu);
- indic_position_t pos = (indic_position_t) (type >> 8);
-
- /* Medial Ra */
- if (u == 0x1A55u || u == 0xAA34u)
- cat = (indic_category_t) OT_MR;
-
- if (cat == OT_M)
- {
- switch ((int) pos)
- {
- case POS_PRE_C: cat = (indic_category_t) OT_VPre; break;
- case POS_ABOVE_C: cat = (indic_category_t) OT_VAbv; break;
- case POS_BELOW_C: cat = (indic_category_t) OT_VBlw; break;
- case POS_POST_C: cat = (indic_category_t) OT_VPst; break;
- }
- }
-
- info.sea_category() = (sea_category_t) cat;
- info.sea_position() = pos;
-}
-
-
-static void
-setup_masks_sea (const hb_ot_shape_plan_t *plan HB_UNUSED,
- hb_buffer_t *buffer,
- hb_font_t *font HB_UNUSED)
-{
- HB_BUFFER_ALLOCATE_VAR (buffer, sea_category);
- HB_BUFFER_ALLOCATE_VAR (buffer, sea_position);
-
- /* We cannot setup masks here. We save information about characters
- * and setup masks later on in a pause-callback. */
-
- unsigned int count = buffer->len;
- hb_glyph_info_t *info = buffer->info;
- for (unsigned int i = 0; i < count; i++)
- set_sea_properties (info[i]);
-}
-
-static void
-setup_syllables (const hb_ot_shape_plan_t *plan HB_UNUSED,
- hb_font_t *font HB_UNUSED,
- hb_buffer_t *buffer)
-{
- find_syllables (buffer);
-}
-
-static int
-compare_sea_order (const hb_glyph_info_t *pa, const hb_glyph_info_t *pb)
-{
- int a = pa->sea_position();
- int b = pb->sea_position();
-
- return a < b ? -1 : a == b ? 0 : +1;
-}
-
-
-static void
-initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
- hb_face_t *face,
- hb_buffer_t *buffer,
- unsigned int start, unsigned int end)
-{
- hb_glyph_info_t *info = buffer->info;
- unsigned int base = start;
-
- /* Reorder! */
- unsigned int i = start;
- for (; i < base; i++)
- info[i].sea_position() = POS_PRE_C;
- if (i < end)
- {
- info[i].sea_position() = POS_BASE_C;
- i++;
- }
- for (; i < end; i++)
- {
- if (info[i].sea_category() == OT_MR) /* Pre-base reordering */
- {
- info[i].sea_position() = POS_PRE_C;
- continue;
- }
- if (info[i].sea_category() == OT_VPre) /* Left matra */
- {
- info[i].sea_position() = POS_PRE_M;
- continue;
- }
-
- info[i].sea_position() = POS_AFTER_MAIN;
- }
-
- buffer->merge_clusters (start, end);
- /* Sit tight, rock 'n roll! */
- hb_bubble_sort (info + start, end - start, compare_sea_order);
-}
-
-static void
-initial_reordering_broken_cluster (const hb_ot_shape_plan_t *plan,
- hb_face_t *face,
- hb_buffer_t *buffer,
- unsigned int start, unsigned int end)
-{
- /* We already inserted dotted-circles, so just call the consonant_syllable. */
- initial_reordering_consonant_syllable (plan, face, buffer, start, end);
-}
-
-static void
-initial_reordering_non_sea_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_syllable (const hb_ot_shape_plan_t *plan,
- hb_face_t *face,
- hb_buffer_t *buffer,
- unsigned int start, unsigned int end)
-{
- syllable_type_t syllable_type = (syllable_type_t) (buffer->info[start].syllable() & 0x0F);
- 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;
- }
-}
-
-static inline void
-insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
- hb_font_t *font,
- hb_buffer_t *buffer)
-{
- /* Note: This loop is extra overhead, but should not be measurable. */
- bool has_broken_syllables = false;
- unsigned int count = buffer->len;
- hb_glyph_info_t *info = buffer->info;
- for (unsigned int i = 0; i < count; i++)
- if ((info[i].syllable() & 0x0F) == broken_cluster)
- {
- has_broken_syllables = true;
- break;
- }
- if (likely (!has_broken_syllables))
- return;
-
-
- hb_codepoint_t dottedcircle_glyph;
- if (!font->get_glyph (0x25CCu, 0, &dottedcircle_glyph))
- return;
-
- hb_glyph_info_t dottedcircle = {0};
- dottedcircle.codepoint = 0x25CCu;
- set_sea_properties (dottedcircle);
- dottedcircle.codepoint = dottedcircle_glyph;
-
- buffer->clear_output ();
-
- buffer->idx = 0;
- unsigned int last_syllable = 0;
- while (buffer->idx < buffer->len)
- {
- unsigned int syllable = buffer->cur().syllable();
- syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F);
- if (unlikely (last_syllable != syllable && syllable_type == broken_cluster))
- {
- last_syllable = syllable;
-
- hb_glyph_info_t info = dottedcircle;
- info.cluster = buffer->cur().cluster;
- info.mask = buffer->cur().mask;
- info.syllable() = buffer->cur().syllable();
-
- buffer->output_info (info);
- }
- else
- buffer->next_glyph ();
- }
-
- buffer->swap_buffers ();
-}
-
-static void
-initial_reordering (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer)
-{
- insert_dotted_circles (plan, font, buffer);
-
- hb_glyph_info_t *info = buffer->info;
- unsigned int count = buffer->len;
- if (unlikely (!count)) return;
- unsigned int last = 0;
- unsigned int last_syllable = info[0].syllable();
- for (unsigned int i = 1; i < count; i++)
- if (last_syllable != info[i].syllable()) {
- initial_reordering_syllable (plan, font->face, buffer, last, i);
- last = i;
- last_syllable = info[last].syllable();
- }
- initial_reordering_syllable (plan, font->face, buffer, last, count);
-}
-
-static void
-final_reordering (const hb_ot_shape_plan_t *plan,
- hb_font_t *font HB_UNUSED,
- hb_buffer_t *buffer)
-{
- hb_glyph_info_t *info = buffer->info;
- unsigned int count = buffer->len;
-
- /* Zero syllables now... */
- for (unsigned int i = 0; i < count; i++)
- info[i].syllable() = 0;
-
- HB_BUFFER_DEALLOCATE_VAR (buffer, sea_category);
- HB_BUFFER_DEALLOCATE_VAR (buffer, sea_position);
-}
-
-
-const hb_ot_complex_shaper_t _hb_ot_complex_shaper_sea =
-{
- "sea",
- collect_features_sea,
- override_features_sea,
- NULL, /* data_create */
- NULL, /* data_destroy */
- NULL, /* preprocess_text */
- HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT,
- NULL, /* decompose */
- NULL, /* compose */
- setup_masks_sea,
- HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE,
- false, /* fallback_position */
-};
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41-PATCHES/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-1.0.1-PATCHES/ChangeLog
index 62fff4f77ce..62fff4f77ce 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41-PATCHES/ChangeLog
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1-PATCHES/ChangeLog
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41-PATCHES/TL-Changes b/Build/source/libs/harfbuzz/harfbuzz-1.0.1-PATCHES/TL-Changes
index 24dc4d4de47..33c03df25dd 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41-PATCHES/TL-Changes
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1-PATCHES/TL-Changes
@@ -1,4 +1,4 @@
-Changes applied to the harfbuzz-0.9.41/ tree as obtained from:
+Changes applied to the harfbuzz-1.0.1/ tree as obtained from:
http://www.freedesktop.org/software/harfbuzz/release/
Removed:
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/AUTHORS b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/AUTHORS
index 81cdc4cf37f..81cdc4cf37f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/AUTHORS
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/AUTHORS
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/Android.mk b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/Android.mk
index 05525078516..05525078516 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/Android.mk
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/Android.mk
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/ChangeLog
index bba5e5ebeb0..24d5a24982a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/ChangeLog
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/ChangeLog
@@ -1,3 +1,920 @@
+commit f1c20e1ba5bf218df7dc3e198bdcf1f449fc9387
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 27 12:16:02 2015 +0200
+
+ [USE] Fix out-of-bounds static array access
+
+ src/hb-ot-shape-complex-use.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 260442346a5756c3538ee8fcbf157d1cddcf6f36
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sun Jul 26 23:39:10 2015 +0200
+
+ 1.0.0
+
+ NEWS | 10 ++++++++++
+ configure.ac | 4 ++--
+ src/Makefile.am | 2 +-
+ 3 files changed, 13 insertions(+), 3 deletions(-)
+
+commit df6cb84449a473d540821e41fb5007b59644780f
+Merge: 2ed6be6 786ba45
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sun Jul 26 19:40:55 2015 +0200
+
+ Merge branch 'use'
+
+commit 2ed6be66703e6cc67f3a3746e197001dad3d9b74
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sun Jul 26 19:29:53 2015 +0200
+
+ 0.9.42
+
+ NEWS | 12 ++++++++++++
+ configure.ac | 2 +-
+ 2 files changed, 13 insertions(+), 1 deletion(-)
+
+commit 23e56e088a721863cfdef4f027fb66eecbd77457
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sat Jul 25 17:36:46 2015 +0200
+
+ Fix broken sentence
+
+ src/hb-set-private.hh | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+commit 91a2e5d2878a8c0b4d4500e3d52d4fbaaf1ac0d7
+Author: Grigori Goronzy <greg@chown.ath.cx>
+Date: Wed Jul 8 23:28:11 2015 +0200
+
+ Update UCDN to upstream commit 8af93f30
+
+ This adds support for Unicode 8.0 and fixes a bug with wrong
+ properties
+ for ranges of codepoints.
+
+ src/hb-ucdn.cc | 6 +
+ src/hb-ucdn/ucdn.h | 6 +
+ src/hb-ucdn/unicodedata_db.h | 2167
+ +++++++++++++++++++++---------------------
+ 3 files changed, 1118 insertions(+), 1061 deletions(-)
+
+commit 786ba45847127b9cd4d9c0c01ae0e6c61f3a8e06
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jul 23 13:04:34 2015 +0100
+
+ [test] Encode Kharoshti text
+
+ Ouch!
+
+ .../in-tree/shaper-use/script-kharoshti/misc.txt | 72
+ +++++++++++-----------
+ 1 file changed, 36 insertions(+), 36 deletions(-)
+
+commit b4231255032e243153a6f32cf8c93c158cb0bf6a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jul 23 13:01:55 2015 +0100
+
+ [test] Add Batak and Buginese test texts
+
+ test/shaping/texts/in-tree/shaper-use/MANIFEST | 2 +
+ .../texts/in-tree/shaper-use/script-batak/MANIFEST | 1 +
+ .../texts/in-tree/shaper-use/script-batak/misc.txt | 9 +++
+ .../in-tree/shaper-use/script-buginese/MANIFEST | 1 +
+ .../in-tree/shaper-use/script-buginese/misc.txt | 70
+ ++++++++++++++++++++++
+ 5 files changed, 83 insertions(+)
+
+commit b8c159ffccad090974a2b97be0a0140fa09af132
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jul 23 12:59:17 2015 +0100
+
+ [test] Remove shaper-sea texts under shaper-use
+
+ test/shaping/texts/in-tree/MANIFEST | 1 -
+ test/shaping/texts/in-tree/shaper-sea/MANIFEST | 2 --
+ .../texts/in-tree/shaper-sea/script-cham/MANIFEST | 1 -
+ .../in-tree/shaper-sea/script-cham/misc/MANIFEST | 1 -
+ .../in-tree/shaper-sea/script-cham/misc/misc.txt | 3 ---
+ .../in-tree/shaper-sea/script-tai-tham/MANIFEST | 1 -
+ .../shaper-sea/script-tai-tham/misc/MANIFEST | 2 --
+ .../shaper-sea/script-tai-tham/misc/misc.txt | 2 --
+ .../shaper-sea/script-tai-tham/misc/torture.txt | 23
+ ----------------------
+ test/shaping/texts/in-tree/shaper-use/MANIFEST | 2 ++
+ .../texts/in-tree/shaper-use/script-cham/MANIFEST | 1 +
+ .../texts/in-tree/shaper-use/script-cham/misc.txt | 3 +++
+ .../in-tree/shaper-use/script-tai-tham/MANIFEST | 2 ++
+ .../in-tree/shaper-use/script-tai-tham/misc.txt | 2 ++
+ .../in-tree/shaper-use/script-tai-tham/torture.txt | 23
+ ++++++++++++++++++++++
+ 15 files changed, 33 insertions(+), 36 deletions(-)
+
+commit 67ba7320cc5545baeacfcff64cea338223b9bd6d
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jul 23 12:58:21 2015 +0100
+
+ [test] Remove New Tai Lue texts
+
+ New Tai Lue changed encoding to visual, boring, model.
+
+ test/shaping/texts/in-tree/shaper-sea/MANIFEST |
+ 1 -
+ test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/MANIFEST |
+ 1 -
+ test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/MANIFEST |
+ 1 -
+ test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/misc.txt |
+ 1 -
+ 4 files changed, 4 deletions(-)
+
+commit c81d957a264539dfe3252f9a94ee066c4a44edf4
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jul 23 12:50:48 2015 +0100
+
+ [test] Add tests for improved 'vert' feature
+
+ test/shaping/Makefile.am | 1 +
+ .../sha1sum/191826b9643e3f124d865d617ae609db6a2ce203.ttf | Bin 0 ->
+ 2140 bytes
+ test/shaping/fonts/sha1sum/MANIFEST | 1 +
+ test/shaping/tests/MANIFEST | 1 +
+ test/shaping/tests/vertical.tests | 1 +
+ 5 files changed, 4 insertions(+)
+
+commit 8a6a16dbcb1808c7ed50f9ba320384565bbf405a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jul 23 12:49:09 2015 +0100
+
+ [test] Add recently added test
+
+ Ouch.
+
+ test/shaping/Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 895fb31c7f0201f13df5a6866b367476bc4aab2e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jul 23 12:14:03 2015 +0100
+
+ [test] Support additional options to hb-shape in micro-test suite
+
+ test/shaping/record-test.sh | 47
+ ++++++++++++++++++----
+ test/shaping/run-tests.sh | 9 ++++-
+ test/shaping/tests/arabic-fallback-shaping.tests | 2 +-
+ test/shaping/tests/arabic-feature-order.tests | 6 +--
+ test/shaping/tests/context-matching.tests | 6 +--
+ test/shaping/tests/default-ignorables.tests | 2 +-
+ test/shaping/tests/hangul-jamo.tests | 4 +-
+ test/shaping/tests/indic-joiner-candrabindu.tests | 4 +-
+ test/shaping/tests/indic-old-spec.tests | 4 +-
+ test/shaping/tests/indic-pref-blocking.tests | 4 +-
+ .../tests/mongolian-variation-selector.tests | 6 +--
+ test/shaping/tests/zero-width-marks.tests | 4 +-
+ 12 files changed, 67 insertions(+), 31 deletions(-)
+
+commit 0f98fe88f42471eb8fb28d08d45eca9cd8303f7a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jul 23 11:52:11 2015 +0100
+
+ [ot] Search globally for 'vert' feature if not found in specified
+ script/lang
+
+ Fixes https://github.com/behdad/harfbuzz/issues/63
+
+ src/hb-ot-layout-private.hh | 9 +++++++++
+ src/hb-ot-layout.cc | 22 ++++++++++++++++++++++
+ src/hb-ot-map-private.hh | 7 ++++---
+ src/hb-ot-map.cc | 10 ++++++++++
+ src/hb-ot-shape.cc | 6 +++++-
+ 5 files changed, 50 insertions(+), 4 deletions(-)
+
+commit f327aacfa107bbef0c823ef9c3b7dfc91316040c
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jul 23 11:32:59 2015 +0100
+
+ [ot] Minor
+
+ src/hb-ot-shape.cc | 11 +++--------
+ 1 file changed, 3 insertions(+), 8 deletions(-)
+
+commit d78463c8016ff1852233479a1ebde30c3bb6de6e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jul 23 10:11:35 2015 +0100
+
+ Minor debug output fix
+
+ src/hb-ot-layout.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit d99f50bde0e8be0866385ca6886938d2023dbd4f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jul 23 10:08:48 2015 +0100
+
+ Add missing TRACE_RETURN
+
+ src/hb-ot-layout-gsubgpos-private.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2dc8e3f470d7c0b579f867605b8bf40688bc5722
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jul 23 10:07:21 2015 +0100
+
+ [ot] Add missing return!
+
+ src/hb-ot-layout-gsubgpos-private.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 582069172c39326c7f94373793c656439a4c2b59
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 18:44:59 2015 +0100
+
+ Add test case for deleting default ignorables with positioning
+
+ .../sha1sum/051d92f8bc6ff724511b296c27623f824de256e9.ttf | Bin 0 ->
+ 2028 bytes
+ test/shaping/fonts/sha1sum/MANIFEST | 1 +
+ test/shaping/tests/MANIFEST | 1 +
+ test/shaping/tests/default-ignorables.tests | 1 +
+ 4 files changed, 3 insertions(+)
+
+commit 8cfbc304ee563ec96e402beed34b10b6c0950a6a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 18:41:10 2015 +0100
+
+ Fix hide-default-ignorables after
+ f0010dfd01ef4a927b0bdc175dd4e343a8637174
+
+ We can't delete things before hb_ot_layout_position_finish(). So,
+ just zero the advance before it, and remove later.
+
+ src/hb-ot-shape.cc | 25 +++++++++++++++++++------
+ 1 file changed, 19 insertions(+), 6 deletions(-)
+
+commit 2dbd3d29d6548bd96fd976606ed689fac8ad8817
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 18:28:39 2015 +0100
+
+ Fix hide-ignorables if font doesn't have space glyph
+
+ Was broken by 82b521aeb7cc73879b44ca4278d6fa8b4347527f, as we have
+ positioning data by then and can't use the output buffer. Ouch!
+
+ src/hb-buffer-private.hh | 18 ------------------
+ src/hb-ot-shape.cc | 44
+ +++++++++++++++++++++++++++++++++++---------
+ 2 files changed, 35 insertions(+), 27 deletions(-)
+
+commit 4ba796b26ee62de0d2830a550f3aa3b4aecf6f59
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 17:41:31 2015 +0100
+
+ Refactor _hb_glyph_info_is_default_ignorable()
+
+ src/hb-ot-layout-gsubgpos-private.hh | 3 +--
+ src/hb-ot-layout-private.hh | 4 +++-
+ src/hb-ot-shape.cc | 9 +++------
+ 3 files changed, 7 insertions(+), 9 deletions(-)
+
+commit f0010dfd01ef4a927b0bdc175dd4e343a8637174
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 17:36:23 2015 +0100
+
+ [ot] Hide default-ignorables before finishing off positioning
+
+ For example, fixes the following sequence with Arial XP:
+ 628 25cc 651 25cc 64e 3a 20 628 651 34f 64e
+ 628 25cc 64e 25cc 651 3a 20 628 64e 34f 651
+
+ Discovered as part of:
+ https://bugs.freedesktop.org/show_bug.cgi?id=85873
+
+ src/hb-ot-shape.cc | 125
+ +++++++++++++++++++++++++++--------------------------
+ 1 file changed, 63 insertions(+), 62 deletions(-)
+
+commit 376d587f36b4ff10342ee6ca3bacd73532ea44c8
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 16:51:12 2015 +0100
+
+ Implement more granular cluster-merging
+
+ TODO: Documentation.
+
+ Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=71445
+
+ NEWS | 8 +++++++
+ src/hb-buffer-private.hh | 1 +
+ src/hb-buffer.cc | 46
+ ++++++++++++++++++++++++++++++++++-----
+ src/hb-buffer.h | 12 ++++++++++
+ src/hb-ot-shape-complex-hangul.cc | 13 +++++------
+ src/hb-ot-shape.cc | 7 ++++++
+ util/options.cc | 1 +
+ util/options.hh | 3 +++
+ 8 files changed, 77 insertions(+), 14 deletions(-)
+
+commit a60e2cfa395718cde48eb81f43adc27b4a92e117
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 15:49:08 2015 +0100
+
+ [ot] Don't rely on cluster numbers for ensure_native_direction()
+
+ src/hb-ot-shape.cc | 19 ++++++++++++++++++-
+ 1 file changed, 18 insertions(+), 1 deletion(-)
+
+commit 701112dad9f6e690b253f1e64f4e7e549f5ae65f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 15:42:20 2015 +0100
+
+ [ot] Simplify form_clusters()
+
+ src/hb-buffer-private.hh | 9 ++++++++-
+ src/hb-buffer.cc | 7 ++-----
+ src/hb-ot-shape.cc | 11 +++++++++--
+ 3 files changed, 19 insertions(+), 8 deletions(-)
+
+commit 7b8b63adc5e0389fc4cf2720ef7e5804ab6c29cc
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 15:24:26 2015 +0100
+
+ [ot] Don't mirror character if font doesn't support mirrored
+ character!
+
+ src/hb-ot-shape.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 97d7c3a100e2673279f066540229d229aaf0df78
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 14:28:25 2015 +0100
+
+ [graphite2] Fix bunch of stuff
+
+ Based on patch from Martin Hosken, with review from Jonathan and I.
+
+ src/hb-graphite2.cc | 82
+ +++++++++++++++++++++++++++++++++++------------------
+ 1 file changed, 54 insertions(+), 28 deletions(-)
+
+commit ea7f8414e34d4b5efc7b98974637c08f75440f0e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 13:53:45 2015 +0100
+
+ [graphite2] Enlarge buffer for output glyphs!
+
+ src/hb-graphite2.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 9cd59db1af47ff511edf251949d58b82673cf704
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 13:27:06 2015 +0100
+
+ [USE] Implement topographical features for non-Arabic-joining scripts
+
+ This works per-syllable as per the spec, but we think it should be per
+ spacing/base/??? glyph instead.
+
+ src/hb-ot-shape-complex-use.cc | 87
+ ++++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 80 insertions(+), 7 deletions(-)
+
+commit ecb0b24ef3f8177e7c789f45a2e858bd67e31be3
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 12:02:09 2015 +0100
+
+ Use foreach_cluster in Indic shaper
+
+ src/hb-ot-shape-complex-indic.cc | 90
+ +++++++++-------------------------------
+ 1 file changed, 19 insertions(+), 71 deletions(-)
+
+commit 56f71ff98890fc4fd13e8d9743dc34c4b9407309
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 11:58:11 2015 +0100
+
+ Use foreach_syllable in Myanmar shaper
+
+ src/hb-ot-shape-complex-myanmar.cc | 62
+ ++++++++------------------------------
+ 1 file changed, 12 insertions(+), 50 deletions(-)
+
+commit ac596511a8c9eeaeb455ca16b5b9c5f1b9923b3a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 11:54:02 2015 +0100
+
+ Add foreach_syllable
+
+ Use it in USE.
+
+ src/hb-ot-layout-private.hh | 24 ++++++++
+ src/hb-ot-shape-complex-use.cc | 129
+ +++++++++++++----------------------------
+ 2 files changed, 64 insertions(+), 89 deletions(-)
+
+commit 8ba9e689680f7685c04cfe7c6019222bdf0c52b0
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 11:16:01 2015 +0100
+
+ [USE] Do Arabic-like shaping
+
+ src/hb-ot-shape-complex-use.cc | 77
+ ++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 75 insertions(+), 2 deletions(-)
+
+commit 9daf2dfb6bd5683fd951bdf166c8b87938257e52
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 22 10:32:30 2015 +0100
+
+ Add hb-ot-shape-complex-arabic-private.hh
+
+ src/Makefile.am | 1 +
+ src/hb-ot-shape-complex-arabic-private.hh | 50
+ +++++++++++++++++++++++++++++++
+ src/hb-ot-shape-complex-arabic.cc | 37 +++++++++++++----------
+ 3 files changed, 73 insertions(+), 15 deletions(-)
+
+commit a51a661fe1dcfdd3a274a6be6ad741c68d430c8c
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 18:24:21 2015 +0100
+
+ [USE] Only reorder the first component of a split left mark
+
+ src/hb-ot-shape-complex-use.cc | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit a08a278b15c7e57a1d0a783f2bc877471b9d8229
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 18:09:40 2015 +0100
+
+ [USE] Don't compose split matras
+
+ Same logic as in Indic shaper.
+
+ src/hb-ot-shape-complex-use.cc | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
+commit 21cb08a417f1203523191192d6a342e8cd0ea14c
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 17:47:06 2015 +0100
+
+ Remove unused SEA shaper
+
+ src/Makefile.am | 4 -
+ src/hb-ot-shape-complex-sea-machine.rl | 102 ---------
+ src/hb-ot-shape-complex-sea.cc | 380
+ ---------------------------------
+ 3 files changed, 486 deletions(-)
+
+commit db1e9cdd41ff7c97c29b4d9b64b2351ed0ef0403
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 17:46:06 2015 +0100
+
+ Retire SEA shaper in favor of USE
+
+ src/hb-ot-shape-complex-private.hh | 25 +++----------------------
+ 1 file changed, 3 insertions(+), 22 deletions(-)
+
+commit 87dde9c64753dea4017f11a7734e7528b8eecac0
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 17:31:43 2015 +0100
+
+ [USE] Only use USE shaper if script system is not DFLT
+
+ Same logic as Indic and SEA.
+
+ src/hb-ot-shape-complex-private.hh | 13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+commit 29832d797ff2f3a96721dd44f2f03a83fb2e8dda
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 17:24:18 2015 +0100
+
+ Route misc untested scripts through USE shaper instead of Indic
+
+ These were never tested with Indic shaper, and indeed wouldn't
+ work there
+ because they didn't have their viramas and other config defined.
+ They are
+ all also supported by MS through USE, so route them there.
+
+ src/hb-ot-shape-complex-private.hh | 91
+ +++++---------------------------------
+ 1 file changed, 11 insertions(+), 80 deletions(-)
+
+commit 40c4a991c7ea18017273ff8993eecc3953869e69
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 17:14:54 2015 +0100
+
+ [USE] Implement dotted-circle
+
+ This makes USE feature-complete as far as the Indic-like features
+ are concerned.
+
+ src/hb-ot-shape-complex-use-machine.rl | 10 ++++++++++
+ src/hb-ot-shape-complex-use.cc | 18 +++++++++++++++---
+ 2 files changed, 25 insertions(+), 3 deletions(-)
+
+commit 7ce03ebe7c525919ce22d9094480847ff1b3c2b2
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 16:55:26 2015 +0100
+
+ [USE] Move pref
+
+ src/hb-ot-shape-complex-use-machine.rl | 9 +++++----
+ src/hb-ot-shape-complex-use-private.hh | 9 +++++----
+ src/hb-ot-shape-complex-use.cc | 24 ++++++++++++++++++++++--
+ 3 files changed, 32 insertions(+), 10 deletions(-)
+
+commit 2d4b62ead931b13f95f5dc0e5b740d997a8d1a8e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 16:46:37 2015 +0100
+
+ [USE] Fix-up variation selectors and word joiner in table
+
+ src/gen-use-table.py | 7 ++++++-
+ src/hb-ot-shape-complex-use-table.cc | 34
+ +++++++++++++++++++++++-----------
+ 2 files changed, 29 insertions(+), 12 deletions(-)
+
+commit ad7178227f16abc17456f122deac1508031cbbc3
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 16:43:27 2015 +0100
+
+ [USE] Use a couple warnings
+
+ src/gen-use-table.py | 20 ++++-----
+ src/hb-ot-shape-complex-use-table.cc | 82
+ ++++++++++++++++++------------------
+ 2 files changed, 51 insertions(+), 51 deletions(-)
+
+commit a85c4da9b1750c2f994f9f85226a3e755fafe50b
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 16:07:10 2015 +0100
+
+ [USE] Move rphf
+
+ src/hb-ot-shape-complex-use.cc | 105
+ ++++++++++++++---------------------------
+ 1 file changed, 35 insertions(+), 70 deletions(-)
+
+commit 5b5617e0664e59770910d04d15175f643a5ffb73
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 15:52:15 2015 +0100
+
+ Add FLAG_UNSAFE()
+
+ Unused right now.
+
+ src/hb-private.hh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit f8160a495966c790b79134a9f9382b6545f8c733
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 15:50:02 2015 +0100
+
+ Add FLAG_SAFE() for values known to be small-enough
+
+ And add check to FLAG()
+
+ src/hb-ot-shape-complex-arabic.cc | 2 +-
+ src/hb-ot-shape-complex-indic.cc | 12 ++++++------
+ src/hb-ot-shape-complex-myanmar.cc | 2 +-
+ src/hb-private.hh | 5 +++--
+ src/hb-unicode-private.hh | 2 +-
+ 5 files changed, 12 insertions(+), 11 deletions(-)
+
+commit 366aeaad006b230481a3c08ab4d239fb6b64fef8
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 15:45:48 2015 +0100
+
+ Add note re ASSERT_STATIC_EXPR_ZERO()
+
+ src/hb-private.hh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit d6adca9fbbbd6fc7c8906121b50c3930fbe2de8e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 15:17:27 2015 +0100
+
+ Remove unused macro ASSERT_STATIC_EXPR()
+
+ src/hb-ot-shape-complex-arabic-win1256.hh | 4 ++--
+ src/hb-ot-shape-complex-indic-private.hh | 2 --
+ src/hb-private.hh | 1 -
+ 3 files changed, 2 insertions(+), 5 deletions(-)
+
+commit 1025e1a9e7785ac67cc90d05b02862e38b3e6026
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 15:05:35 2015 +0100
+
+ Use unsigned in FLAG()
+
+ src/hb-private.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit cf59c7589c2b4064f4b9f4936115f830089a8ee7
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 14:51:45 2015 +0100
+
+ [USE] Use use_category() for rphf/pref memory
+
+ src/hb-ot-shape-complex-use.cc | 63
+ +++++++++++++++---------------------------
+ 1 file changed, 22 insertions(+), 41 deletions(-)
+
+commit 595936ec25e9c0924851bd1aa1af5eed3723b54f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 14:15:35 2015 +0100
+
+ [USE] Hook of rphf and pref custom processing
+
+ Still no reordering.
+
+ src/hb-ot-layout-private.hh | 8 ++
+ src/hb-ot-shape-complex-use.cc | 181
+ +++++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 181 insertions(+), 8 deletions(-)
+
+commit ba72801325e4bd58f7597938d4409762c9fa530c
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 11:57:23 2015 +0100
+
+ [USE] Add CGJ to table
+
+ src/gen-use-table.py | 13 ++++++++++---
+ src/hb-ot-shape-complex-use-table.cc | 1 +
+ 2 files changed, 11 insertions(+), 3 deletions(-)
+
+commit 4febed61edc5367543e5a206ae01d3393841b612
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 10:24:32 2015 +0100
+
+ [USE] Set up features
+
+ src/hb-ot-shape-complex-use.cc | 68
+ +++++++++++++++++++++++-------------------
+ 1 file changed, 38 insertions(+), 30 deletions(-)
+
+commit 52a957795697085a5d379921ddd8aa6cf2f1a99d
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 10:02:04 2015 +0100
+
+ [USE] Hook up new scripts to USE shaper
+
+ Don't reroute scripts that we were routing to other shapers
+ before (just yet).
+
+ src/hb-ot-shape-complex-private.hh | 71
+ ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 71 insertions(+)
+
+commit b4c0829bc18b696f140a260fa2e1089d10164519
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 21 09:31:19 2015 +0100
+
+ [USE] Remove unused Unicode data enums from USE C++ side
+
+ src/hb-ot-shape-complex-use-private.hh | 66
+ +---------------------------------
+ src/hb-ot-shape-complex-use.cc | 14 ++------
+ 2 files changed, 3 insertions(+), 77 deletions(-)
+
+commit 44910cef626e6d03baa4d89d8fbe2c088971902d
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 20 18:01:10 2015 +0100
+
+ [USE] Finish converting Unicode positional categories to USE
+
+ Even compiles.
+
+ src/gen-use-table.py | 114 +++++-
+ src/hb-ot-shape-complex-use-table.cc | 702
+ ++++++++++++++++++-----------------
+ 2 files changed, 467 insertions(+), 349 deletions(-)
+
+commit ad725552521273a1f571f04bc96a04221c3e067a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 20 17:00:06 2015 +0100
+
+ [USE] Map from Unicode data to USE syllabic categories
+
+ Positional sub-categories not applied yet.
+
+ src/gen-use-table.py | 128 ++--
+ src/hb-ot-shape-complex-use-table.cc | 1062
+ ++++++++++++----------------------
+ 2 files changed, 409 insertions(+), 781 deletions(-)
+
+commit 20e246e674155d5fb6527722fc3ef3accf2413df
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 20 15:56:19 2015 +0100
+
+ [USE] Start moving Unicode-to-USE mapping into Python code
+
+ src/Makefile.am | 2 +-
+ src/gen-use-table.py | 176
+ +++++++++++++++++++++++++++++++++--
+ src/hb-ot-shape-complex-use-table.cc | 3 +-
+ 3 files changed, 169 insertions(+), 12 deletions(-)
+
+commit eb74535cc2c0d0de41e54e75bdc71825ec969523
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 20 15:33:25 2015 +0100
+
+ [USE] Fix Number clusters
+
+ The spec wrongly has "H" where "HN" is meant.
+
+ src/hb-ot-shape-complex-use-machine.rl | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit a9663958fe861950b6f389b389f146232b2cd909
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 20 14:24:55 2015 +0100
+
+ [USE] Start putting together the shaper body
+
+ src/hb-ot-shape-complex-use-private.hh | 2 +-
+ src/hb-ot-shape-complex-use.cc | 339
+ +++++++++++++++++++++++++++++++++
+ 2 files changed, 340 insertions(+), 1 deletion(-)
+
+commit e0eabd7f67462ac34fbfc749d897be478fbd1224
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 20 13:30:51 2015 +0100
+
+ [USE] Put a Ragel machine together
+
+ Grammar from the spec!
+
+ src/hb-ot-shape-complex-use-machine.rl | 169
+ +++++++++++++++++++++++++++++++++
+ src/hb-ot-shape-complex-use-private.hh | 160
+ +++++++++++++++++++++++++++++++
+ 2 files changed, 329 insertions(+)
+
+commit fd74b939b176f47d34d34b3d33e2a09d255c2d9e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 20 13:30:45 2015 +0100
+
+ Minor
+
+ src/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 5e5c8560cca3cb9c6be90c7c18ecb77d5cca0c0f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 20 12:01:20 2015 +0100
+
+ [USE] Minor optimization of USE table
+
+ src/gen-use-table.py | 2 +-
+ src/hb-ot-shape-complex-use-table.cc | 30 ++++++++++++------------------
+ 2 files changed, 13 insertions(+), 19 deletions(-)
+
+commit 14b12f92a9ef7db57c5252ef0442239319ce4bca
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 20 11:57:44 2015 +0100
+
+ [USE] Add Kharoshti test data from Unicode proposal
+
+ test/shaping/texts/in-tree/MANIFEST | 1 +
+ test/shaping/texts/in-tree/shaper-use/MANIFEST | 1 +
+ .../in-tree/shaper-use/script-kharoshti/MANIFEST | 1 +
+ .../in-tree/shaper-use/script-kharoshti/misc.txt | 36
+ ++++++++++++++++++++++
+ 4 files changed, 39 insertions(+)
+
+commit c48ff288522f33dc6c78520de0a0a74306630895
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 20 11:46:17 2015 +0100
+
+ [USE] Build Universal Shaping Engine data table from Unicode 8 files
+
+ src/gen-use-table.py | 35 +-
+ src/hb-ot-shape-complex-use-table.cc | 1016
+ ++++++++++++++++++++++++++++++++++
+ 2 files changed, 1032 insertions(+), 19 deletions(-)
+
+commit e2c95116e1423f83a692d6170553d0cc95733d24
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 20 11:32:48 2015 +0100
+
+ [USE] Add Universal Shaping Engine to Makefile
+
+ src/Makefile.am | 23 +++-
+ src/gen-use-table.py | 237
+ +++++++++++++++++++++++++++++++++
+ src/hb-ot-shape-complex-use-machine.rl | 0
+ src/hb-ot-shape-complex-use-private.hh | 0
+ src/hb-ot-shape-complex-use-table.cc | 0
+ src/hb-ot-shape-complex-use.cc | 0
+ 6 files changed, 254 insertions(+), 6 deletions(-)
+
+commit 41a29af8053782e3a9c6a96a394bd76ef6d42099
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 15 01:39:57 2015 +0100
+
+ Update Arabic shaping table for Unicode 8.0
+
+ src/hb-ot-shape-complex-arabic-table.hh | 26 +++++++++++++-------------
+ 1 file changed, 13 insertions(+), 13 deletions(-)
+
+commit 64a2726e2c6efce4379a7609024ec21eb4b5e4dc
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 15 01:36:39 2015 +0100
+
+ Add Unicode 8.0 scripts
+
+ Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1183209
+
+ src/hb-common.cc | 3 +++
+ src/hb-common.h | 7 +++++++
+ 2 files changed, 10 insertions(+)
+
+commit 9ae156b76820d9079bae062e7e38c34a386d9bd2
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sun Jul 5 22:43:17 2015 +0100
+
+ Fix pragma usage
+
+ https://bugs.freedesktop.org/show_bug.cgi?id=91228
+
+ Commit cdcdfe61b97a0a48ccf834b6d924d187da9609be changed two `#pragma
+ message` to `#pragma error` in hb-unicode.cc, however MSVC uses
+ #error,
+ just like the #else branch. `#pragma error` is an unknown pragma so
+ MSVC does not fail the build because of it, which I believe was the
+ intention of that commit.
+
+ If it's meant to be an #error, then the #ifdef for _MSC_VER can be
+ removed entirely.
+
+ src/hb-unicode.cc | 5 -----
+ src/hb-warning.cc | 10 ----------
+ 2 files changed, 15 deletions(-)
+
+commit 5f13bbd9d4b0970851626e2ce3cf4ecb3cfde801
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Jun 19 13:31:49 2015 -0700
+
+ When removing default-ignorables, merge clusters
+
+ Fixes test-shape, and:
+ https://code.google.com/p/chromium/issues/detail?id=497578
+
+ src/hb-buffer-private.hh | 2 ++
+ src/hb-buffer.cc | 36 ++++++++++++++++++++++++++++++++++--
+ src/hb-ot-shape.cc | 2 +-
+ 3 files changed, 37 insertions(+), 3 deletions(-)
+
+commit 82b521aeb7cc73879b44ca4278d6fa8b4347527f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Jun 19 11:57:57 2015 -0700
+
+ Rewrite hide_default_ignorables
+
+ Separate the loops for the two cases of replacing with space
+ and deleting. For deleting, use the out-buffer machinery.
+
+ Needed for upcoming cluster merge fix.
+
+ src/hb-buffer-private.hh | 18 ++++++++++++++
+ src/hb-ot-shape.cc | 65
+ +++++++++++++++++++++++++++++-------------------
+ 2 files changed, 57 insertions(+), 26 deletions(-)
+
+commit b3a2f6afbac1956b65f29a17b9dc896e86135329
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 17:15:33 2015 -0700
+
+ [test] Add test for cluster merging
+
+ Based on test from
+ https://code.google.com/p/chromium/issues/detail?id=497578
+
+ Currently fails. Basically, if there's a default_ignorable at the
+ start of text, and font has no space glyph, we remove the
+ default_ignorable,
+ and that makes the first char in text to correspond to no cluster.
+
+ Fix coming.
+
+ test/api/test-shape.c | 43 +++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 43 insertions(+)
+
+commit a6446d44e6d04e1eeea994682e29f9cb6265f7f6
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 11:14:56 2015 -0700
+
+ 0.9.41
+
+ NEWS | 10 ++++++++++
+ configure.ac | 2 +-
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
commit cd042fc8c4a3984c3647cd22a27c34f00636f6e8
Author: Behdad Esfahbod <behdad@behdad.org>
Date: Thu Jun 18 10:55:13 2015 -0700
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/Makefile.am
index 47aeb97768e..47aeb97768e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/Makefile.am
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/Makefile.am
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/NEWS b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/NEWS
index d985427dd1b..ed67abf120e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/NEWS
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/NEWS
@@ -1,3 +1,39 @@
+Overview of changes leading to 1.0.1
+Monday, July 27, 2015
+====================================
+
+- Fix out-of-bounds access in USE shaper.
+
+
+Overview of changes leading to 1.0.0
+Sunday, July 26, 2015
+====================================
+
+- Implement Universal Shaping Engine:
+ https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm
+ http://blogs.windows.com/bloggingwindows/2015/02/23/windows-shapes-the-worlds-languages/
+- Bump version to 1.0.0. The soname was NOT bumped.
+
+
+Overview of changes leading to 0.9.42
+Thursday, July 26, 2015
+=====================================
+
+- New API to allow for retrieving finer-grained cluster
+ mappings if the client desires to handle them. Default
+ behavior is unchanged.
+- Fix cluster merging when removing default-ignorables.
+- Update to Unicode 8.0
+- hb-graphite2 fixes.
+- Misc fixes.
+- Removed HB_NO_MERGE_CLUSTERS hack.
+- New API:
+ hb_buffer_cluster_level_t enum
+ hb_buffer_get_cluster_level()
+ hb_buffer_set_cluster_level()
+ hb-shape / hb-view --cluster-level
+
+
Overview of changes leading to 0.9.41
Thursday, June 18, 2015
=====================================
@@ -8,6 +44,7 @@ Thursday, June 18, 2015
- Fix hb_language_t in language bindings.
- Misc fixes.
+
Overview of changes leading to 0.9.40
Friday, March 20, 2015
=====================================
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/README b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/README
index dea10688f3f..dea10688f3f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/README
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/README
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/README.python b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/README.python
index cd312649dbc..cd312649dbc 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/README.python
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/README.python
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/THANKS b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/THANKS
index 940cfde5c39..940cfde5c39 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/THANKS
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/THANKS
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/TODO b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/TODO
index e1aa39c4c01..e1aa39c4c01 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/TODO
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/TODO
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/autogen.sh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/autogen.sh
index ff1b0c0c99b..ff1b0c0c99b 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/autogen.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/autogen.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/config.h.in b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/config.h.in
index 8937bd644d6..8937bd644d6 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/config.h.in
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/config.h.in
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/configure.ac
index 4d2bbf81e58..4d64586b5ce 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/configure.ac
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/configure.ac
@@ -1,6 +1,6 @@
AC_PREREQ([2.64])
AC_INIT([HarfBuzz],
- [0.9.41],
+ [1.0.1],
[http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz],
[harfbuzz],
[http://harfbuzz.org/])
@@ -51,7 +51,7 @@ m4_if(m4_eval(hb_version_minor % 2), [1],
m4_define([hb_libtool_age],
m4_eval(hb_version_int - hb_libtool_revision))
m4_define([hb_libtool_current],
- m4_eval(hb_version_major + hb_libtool_age))
+ m4_eval(hb_libtool_age))
HB_LIBTOOL_VERSION_INFO=hb_libtool_current:hb_libtool_revision:hb_libtool_age
AC_SUBST(HB_LIBTOOL_VERSION_INFO)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/gtk-doc.make b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/gtk-doc.make
index e7916563d75..e7916563d75 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/gtk-doc.make
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/gtk-doc.make
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/harfbuzz.doap b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/harfbuzz.doap
index d2896ebefa8..d2896ebefa8 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/harfbuzz.doap
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/harfbuzz.doap
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/Makefile.am
index c99967f6904..753b9308f55 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/Makefile.am
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/Makefile.am
@@ -14,7 +14,7 @@ DISTCHECK_CONFIGURE_FLAGS = --enable-introspection
#AM_CXXFLAGS =
# Convenience targets:
-lib: libharfbuzz.la
+lib: $(BUILT_SOURCES) libharfbuzz.la
lib_LTLIBRARIES = libharfbuzz.la
@@ -93,6 +93,7 @@ HBSOURCES += \
hb-ot-shape.cc \
hb-ot-shape-complex-arabic.cc \
hb-ot-shape-complex-arabic-fallback.hh \
+ hb-ot-shape-complex-arabic-private.hh \
hb-ot-shape-complex-arabic-table.hh \
hb-ot-shape-complex-arabic-win1256.hh \
hb-ot-shape-complex-default.cc \
@@ -104,10 +105,12 @@ HBSOURCES += \
hb-ot-shape-complex-indic-table.cc \
hb-ot-shape-complex-myanmar.cc \
hb-ot-shape-complex-myanmar-machine.hh \
- hb-ot-shape-complex-sea.cc \
- hb-ot-shape-complex-sea-machine.hh \
hb-ot-shape-complex-thai.cc \
hb-ot-shape-complex-tibetan.cc \
+ hb-ot-shape-complex-use.cc \
+ hb-ot-shape-complex-use-machine.hh \
+ hb-ot-shape-complex-use-private.hh \
+ hb-ot-shape-complex-use-table.cc \
hb-ot-shape-complex-private.hh \
hb-ot-shape-normalize-private.hh \
hb-ot-shape-normalize.cc \
@@ -276,29 +279,34 @@ harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS)
GENERATORS = \
gen-arabic-table.py \
gen-indic-table.py \
+ gen-use-table.py \
$(NULL)
EXTRA_DIST += $(GENERATORS)
-unicode-tables: arabic-table indic-table
-
-indic-table: gen-indic-table.py IndicSyllabicCategory.txt IndicMatraCategory.txt Blocks.txt
- $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-indic-table.cc \
- || ($(RM) hb-ot-shape-complex-indic-table.cc; false)
+unicode-tables: arabic-table indic-table use-table
arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
$(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-arabic-table.hh \
|| ($(RM) hb-ot-shape-complex-arabic-table.hh; false)
+indic-table: gen-indic-table.py IndicSyllabicCategory-7.0.0.txt IndicMatraCategory-7.0.0.txt Blocks.txt
+ $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-indic-table.cc \
+ || ($(RM) hb-ot-shape-complex-indic-table.cc; false)
+
+use-table: gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt
+ $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-use-table.cc \
+ || ($(RM) hb-ot-shape-complex-use-table.cc; false)
+
built-sources: $(BUILT_SOURCES)
-.PHONY: unicode-tables arabic-table indic-table built-sources
+.PHONY: unicode-tables arabic-table indic-table use-table built-sources
RAGEL_GENERATED = \
$(srcdir)/hb-buffer-deserialize-json.hh \
$(srcdir)/hb-buffer-deserialize-text.hh \
$(srcdir)/hb-ot-shape-complex-indic-machine.hh \
$(srcdir)/hb-ot-shape-complex-myanmar-machine.hh \
- $(srcdir)/hb-ot-shape-complex-sea-machine.hh \
+ $(srcdir)/hb-ot-shape-complex-use-machine.hh \
$(NULL)
BUILT_SOURCES += $(RAGEL_GENERATED)
EXTRA_DIST += \
@@ -306,7 +314,7 @@ EXTRA_DIST += \
hb-buffer-deserialize-text.rl \
hb-ot-shape-complex-indic-machine.rl \
hb-ot-shape-complex-myanmar-machine.rl \
- hb-ot-shape-complex-sea-machine.rl \
+ hb-ot-shape-complex-use-machine.rl \
$(NULL)
MAINTAINERCLEANFILES += $(RAGEL_GENERATED)
$(srcdir)/%.hh: $(srcdir)/%.rl
@@ -363,7 +371,7 @@ TESTS_ENVIRONMENT = \
if HAVE_INTROSPECTION
-include $(INTROSPECTION_MAKEFILE)
-INTROSPECTION_GIRS = HarfBuzz-$(HB_VERSION_MAJOR).0.gir # What does the 0 mean anyway?!
+INTROSPECTION_GIRS = HarfBuzz-0.0.gir # What does the 0 mean anyway?!
INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ --warn-all
INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
INTROSPECTION_SCANNER_ENV = CC="$(CC)"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-c-linkage-decls.sh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-c-linkage-decls.sh
index b10310f5384..b10310f5384 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-c-linkage-decls.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-c-linkage-decls.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-defs.sh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-defs.sh
index 65a24670e48..65a24670e48 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-defs.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-defs.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-header-guards.sh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-header-guards.sh
index 9a3302c7f87..9a3302c7f87 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-header-guards.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-header-guards.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-includes.sh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-includes.sh
index 902f2357e2a..902f2357e2a 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-includes.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-includes.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-libstdc++.sh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-libstdc++.sh
index b541828bcd9..b541828bcd9 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-libstdc++.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-libstdc++.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-static-inits.sh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-static-inits.sh
index 1446fa73405..1446fa73405 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-static-inits.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-static-inits.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-symbols.sh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-symbols.sh
index b2bf43fcea5..b2bf43fcea5 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/check-symbols.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/check-symbols.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/gen-arabic-table.py b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/gen-arabic-table.py
index 308435f991e..308435f991e 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/gen-arabic-table.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/gen-arabic-table.py
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/gen-indic-table.py b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/gen-indic-table.py
index f5716bda789..f5716bda789 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/gen-indic-table.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/gen-indic-table.py
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/harfbuzz-gobject.pc.in b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/harfbuzz-gobject.pc.in
index 70083601901..70083601901 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/harfbuzz-gobject.pc.in
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/harfbuzz-gobject.pc.in
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/harfbuzz-icu.pc.in b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/harfbuzz-icu.pc.in
index 949869a3563..949869a3563 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/harfbuzz-icu.pc.in
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/harfbuzz-icu.pc.in
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/harfbuzz.pc.in b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/harfbuzz.pc.in
index 7f27bbbdef0..7f27bbbdef0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/harfbuzz.pc.in
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/harfbuzz.pc.in
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-atomic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-atomic-private.hh
index 8179571ad2d..8179571ad2d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-atomic-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-atomic-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-blob.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-blob.cc
index 8759a252a57..8759a252a57 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-blob.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-blob.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-blob.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-blob.h
index b2419abfd2a..b2419abfd2a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-blob.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-blob.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-deserialize-json.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-deserialize-json.hh
index 3f626bda40d..3f626bda40d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-deserialize-json.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-deserialize-json.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-deserialize-json.rl b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-deserialize-json.rl
index 91b350f5ac0..91b350f5ac0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-deserialize-json.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-deserialize-json.rl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-deserialize-text.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-deserialize-text.hh
index d2d8daae7ed..d2d8daae7ed 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-deserialize-text.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-deserialize-text.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-deserialize-text.rl b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-deserialize-text.rl
index 8a682f7378a..8a682f7378a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-deserialize-text.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-deserialize-text.rl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-private.hh
index 069f9255811..9aa5e7d7e1f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-private.hh
@@ -50,6 +50,7 @@ struct hb_buffer_t {
/* Information about how the text in the buffer should be treated */
hb_unicode_funcs_t *unicode; /* Unicode functions */
hb_buffer_flags_t flags; /* BOT / EOT / etc. */
+ hb_buffer_cluster_level_t cluster_level;
hb_codepoint_t replacement; /* U+FFFD or something else. */
/* Buffer contents */
@@ -171,9 +172,18 @@ struct hb_buffer_t {
unsigned int cluster_end);
HB_INTERNAL void merge_clusters (unsigned int start,
- unsigned int end);
+ unsigned int end)
+ {
+ if (end - start < 2)
+ return;
+ merge_clusters_impl (start, end);
+ }
+ HB_INTERNAL void merge_clusters_impl (unsigned int start,
+ unsigned int end);
HB_INTERNAL void merge_out_clusters (unsigned int start,
unsigned int end);
+ /* Merge clusters for deleting current glyph, and skip it. */
+ HB_INTERNAL void delete_glyph (void);
/* Internal methods */
HB_INTERNAL bool enlarge (unsigned int size);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-serialize.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-serialize.cc
index 406d69db758..406d69db758 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer-serialize.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer-serialize.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer.cc
index e13ee4a45a7..03fe8e1348b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer.cc
@@ -504,14 +504,10 @@ hb_buffer_t::reverse_clusters (void)
}
void
-hb_buffer_t::merge_clusters (unsigned int start,
- unsigned int end)
+hb_buffer_t::merge_clusters_impl (unsigned int start,
+ unsigned int end)
{
-#ifdef HB_NO_MERGE_CLUSTERS
- return;
-#endif
-
- if (unlikely (end - start < 2))
+ if (cluster_level == HB_BUFFER_CLUSTER_LEVEL_CHARACTERS)
return;
unsigned int cluster = info[start].cluster;
@@ -529,7 +525,7 @@ hb_buffer_t::merge_clusters (unsigned int start,
/* If we hit the start of buffer, continue in out-buffer. */
if (idx == start)
- for (unsigned i = out_len; i && out_info[i - 1].cluster == info[start].cluster; i--)
+ for (unsigned int i = out_len; i && out_info[i - 1].cluster == info[start].cluster; i--)
out_info[i - 1].cluster = cluster;
for (unsigned int i = start; i < end; i++)
@@ -539,9 +535,8 @@ void
hb_buffer_t::merge_out_clusters (unsigned int start,
unsigned int end)
{
-#ifdef HB_NO_MERGE_CLUSTERS
- return;
-#endif
+ if (cluster_level == HB_BUFFER_CLUSTER_LEVEL_CHARACTERS)
+ return;
if (unlikely (end - start < 2))
return;
@@ -561,12 +556,44 @@ hb_buffer_t::merge_out_clusters (unsigned int start,
/* If we hit the end of out-buffer, continue in buffer. */
if (end == out_len)
- for (unsigned i = idx; i < len && info[i].cluster == out_info[end - 1].cluster; i++)
+ for (unsigned int i = idx; i < len && info[i].cluster == out_info[end - 1].cluster; i++)
info[i].cluster = cluster;
for (unsigned int i = start; i < end; i++)
out_info[i].cluster = cluster;
}
+void
+hb_buffer_t::delete_glyph ()
+{
+ unsigned int cluster = info[idx].cluster;
+ if (idx + 1 < len && cluster == info[idx + 1].cluster)
+ {
+ /* Cluster survives; do nothing. */
+ goto done;
+ }
+
+ if (out_len)
+ {
+ /* Merge cluster backward. */
+ if (cluster < out_info[out_len - 1].cluster)
+ {
+ unsigned int old_cluster = out_info[out_len - 1].cluster;
+ for (unsigned i = out_len; i && out_info[i - 1].cluster == old_cluster; i--)
+ out_info[i - 1].cluster = cluster;
+ }
+ goto done;
+ }
+
+ if (idx + 1 < len)
+ {
+ /* Merge cluster forward. */
+ merge_clusters (idx, idx + 2);
+ goto done;
+ }
+
+done:
+ skip_glyph ();
+}
void
hb_buffer_t::guess_segment_properties (void)
@@ -709,6 +736,7 @@ hb_buffer_get_empty (void)
const_cast<hb_unicode_funcs_t *> (&_hb_unicode_funcs_nil),
HB_BUFFER_FLAG_DEFAULT,
+ HB_BUFFER_CLUSTER_LEVEL_DEFAULT,
HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT,
HB_BUFFER_CONTENT_TYPE_INVALID,
@@ -1054,6 +1082,41 @@ hb_buffer_get_flags (hb_buffer_t *buffer)
return buffer->flags;
}
+/**
+ * hb_buffer_set_cluster_level:
+ * @buffer: a buffer.
+ * @cluster_level:
+ *
+ *
+ *
+ * Since: 0.9.42
+ **/
+void
+hb_buffer_set_cluster_level (hb_buffer_t *buffer,
+ hb_buffer_cluster_level_t cluster_level)
+{
+ if (unlikely (hb_object_is_inert (buffer)))
+ return;
+
+ buffer->cluster_level = cluster_level;
+}
+
+/**
+ * hb_buffer_get_cluster_level:
+ * @buffer: a buffer.
+ *
+ *
+ *
+ * Return value:
+ *
+ * Since: 0.9.42
+ **/
+hb_buffer_cluster_level_t
+hb_buffer_get_cluster_level (hb_buffer_t *buffer)
+{
+ return buffer->cluster_level;
+}
+
/**
* hb_buffer_set_replacement_codepoint:
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer.h
index 520141b8adc..4b285bbb3d6 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-buffer.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-buffer.h
@@ -185,7 +185,19 @@ hb_buffer_set_flags (hb_buffer_t *buffer,
hb_buffer_flags_t
hb_buffer_get_flags (hb_buffer_t *buffer);
+typedef enum {
+ HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES = 0,
+ HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS = 1,
+ HB_BUFFER_CLUSTER_LEVEL_CHARACTERS = 2,
+ HB_BUFFER_CLUSTER_LEVEL_DEFAULT = HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES
+} hb_buffer_cluster_level_t;
+
+void
+hb_buffer_set_cluster_level (hb_buffer_t *buffer,
+ hb_buffer_cluster_level_t cluster_level);
+hb_buffer_cluster_level_t
+hb_buffer_get_cluster_level (hb_buffer_t *buffer);
#define HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT 0xFFFDu
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-cache-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-cache-private.hh
index 19b70b7e395..19b70b7e395 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-cache-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-cache-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-common.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-common.cc
index 21d3b411712..d510c9be4f6 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-common.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-common.cc
@@ -493,6 +493,9 @@ hb_script_get_horizontal_direction (hb_script_t script)
case HB_SCRIPT_PALMYRENE:
case HB_SCRIPT_PSALTER_PAHLAVI:
+ /* Unicode-8.0 additions */
+ case HB_SCRIPT_OLD_HUNGARIAN:
+
return HB_DIRECTION_RTL;
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-common.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-common.h
index b6ce3f724de..d160be5ca75 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-common.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-common.h
@@ -296,6 +296,13 @@ typedef enum
/*7.0*/ HB_SCRIPT_TIRHUTA = HB_TAG ('T','i','r','h'),
/*7.0*/ HB_SCRIPT_WARANG_CITI = HB_TAG ('W','a','r','a'),
+ /*8.0*/ HB_SCRIPT_AHOM = HB_TAG ('A','h','o','m'),
+ /*8.0*/ HB_SCRIPT_ANATOLIAN_HIEROGLYPHS = HB_TAG ('H','l','u','w'),
+ /*8.0*/ HB_SCRIPT_HATRAN = HB_TAG ('H','a','t','r'),
+ /*8.0*/ HB_SCRIPT_MULTANI = HB_TAG ('M','u','l','t'),
+ /*8.0*/ HB_SCRIPT_OLD_HUNGARIAN = HB_TAG ('H','u','n','g'),
+ /*8.0*/ HB_SCRIPT_SIGNWRITING = HB_TAG ('S','g','n','w'),
+
/* No script set. */
HB_SCRIPT_INVALID = HB_TAG_NONE,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-coretext.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-coretext.cc
index 0b710c2b7d3..0b710c2b7d3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-coretext.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-coretext.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-coretext.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-coretext.h
index 25267bc9784..25267bc9784 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-coretext.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-coretext.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-deprecated.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-deprecated.h
index 30ae4b1caf7..30ae4b1caf7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-deprecated.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-deprecated.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-face-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-face-private.hh
index c4266fff4f0..c4266fff4f0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-face-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-face-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-face.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-face.cc
index 96ea1da46b0..96ea1da46b0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-face.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-face.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-face.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-face.h
index f682c468de5..f682c468de5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-face.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-face.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-fallback-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-fallback-shape.cc
index 9d061a9e845..9d061a9e845 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-fallback-shape.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-fallback-shape.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-font-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-font-private.hh
index 33bbf7143a2..33bbf7143a2 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-font-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-font-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-font.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-font.cc
index 0cfba837a27..0cfba837a27 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-font.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-font.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-font.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-font.h
index cf22589ec65..cf22589ec65 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-font.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-font.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ft.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ft.cc
index 468742cfd05..468742cfd05 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ft.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ft.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ft.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ft.h
index 92f4b361441..92f4b361441 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ft.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ft.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-glib.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-glib.cc
index 7dbd83d2962..7dbd83d2962 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-glib.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-glib.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-glib.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-glib.h
index 1a8f42ea529..1a8f42ea529 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-glib.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-glib.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-gobject-enums.cc.tmpl b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-gobject-enums.cc.tmpl
index ca458a3846c..ca458a3846c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-gobject-enums.cc.tmpl
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-gobject-enums.cc.tmpl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-gobject-enums.h.tmpl b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-gobject-enums.h.tmpl
index 6ecda06c2a6..6ecda06c2a6 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-gobject-enums.h.tmpl
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-gobject-enums.h.tmpl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-gobject-structs.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-gobject-structs.cc
index 6bd63368b65..6bd63368b65 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-gobject-structs.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-gobject-structs.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-gobject-structs.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-gobject-structs.h
index 0a0387dce31..0a0387dce31 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-gobject-structs.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-gobject-structs.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-gobject.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-gobject.h
index ea1bd25df82..ea1bd25df82 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-gobject.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-gobject.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-graphite2.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-graphite2.cc
index 807c3308771..626b84f4e98 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-graphite2.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-graphite2.cc
@@ -228,12 +228,11 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan,
int lang_len = lang_end ? lang_end - lang : -1;
gr_feature_val *feats = gr_face_featureval_for_lang (grface, lang ? hb_tag_from_string (lang, lang_len) : 0);
- while (num_features--)
+ for (unsigned int i = 0; i < num_features; i++)
{
- const gr_feature_ref *fref = gr_face_find_fref (grface, features->tag);
+ const gr_feature_ref *fref = gr_face_find_fref (grface, features[i].tag);
if (fref)
- gr_fref_set_feature_value (fref, features->value, feats);
- features++;
+ gr_fref_set_feature_value (fref, features[i].value, feats);
}
gr_segment *seg = NULL;
@@ -249,6 +248,8 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan,
for (unsigned int i = 0; i < buffer->len; ++i)
chars[i] = buffer->info[i].codepoint;
+ /* TODO ensure_native_direction. */
+
hb_tag_t script_tag[2];
hb_ot_tags_from_script (hb_buffer_get_script (buffer), &script_tag[0], &script_tag[1]);
@@ -267,9 +268,11 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan,
if (unlikely (!glyph_count)) {
if (feats) gr_featureval_destroy (feats);
gr_seg_destroy (seg);
- return false;
+ buffer->len = 0;
+ return true;
}
+ buffer->ensure (glyph_count);
scratch = buffer->get_scratch_buffer (&scratch_size);
while ((DIV_CEIL (sizeof (hb_graphite2_cluster_t) * buffer->len, sizeof (*scratch)) +
DIV_CEIL (sizeof (hb_codepoint_t) * glyph_count, sizeof (*scratch))) > scratch_size)
@@ -331,7 +334,6 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan,
}
ci++;
- //buffer->clear_output ();
for (unsigned int i = 0; i < ci; ++i)
{
for (unsigned int j = 0; j < clusters[i].num_glyphs; ++j)
@@ -342,32 +344,57 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan,
}
}
buffer->len = glyph_count;
- //buffer->swap_buffers ();
- if (HB_DIRECTION_IS_BACKWARD(buffer->props.direction))
- curradvx = gr_seg_advance_X(seg);
-
- hb_glyph_position_t *pPos;
- for (pPos = hb_buffer_get_glyph_positions (buffer, NULL), is = gr_seg_first_slot (seg);
- is; pPos++, is = gr_slot_next_in_segment (is))
+ /* Positioning. */
+ if (!HB_DIRECTION_IS_BACKWARD(buffer->props.direction))
{
- pPos->x_offset = gr_slot_origin_X (is) - curradvx;
- pPos->y_offset = gr_slot_origin_Y (is) - curradvy;
- pPos->x_advance = gr_slot_advance_X (is, grface, grfont);
- pPos->y_advance = gr_slot_advance_Y (is, grface, grfont);
- if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction))
- curradvx -= pPos->x_advance;
- pPos->x_offset = gr_slot_origin_X (is) - curradvx;
- if (!HB_DIRECTION_IS_BACKWARD (buffer->props.direction))
+ hb_glyph_position_t *pPos;
+ for (pPos = hb_buffer_get_glyph_positions (buffer, NULL), is = gr_seg_first_slot (seg);
+ is; pPos++, is = gr_slot_next_in_segment (is))
+ {
+ pPos->x_offset = gr_slot_origin_X (is) - curradvx;
+ pPos->y_offset = gr_slot_origin_Y (is) - curradvy;
+ pPos->x_advance = gr_slot_advance_X (is, grface, grfont);
+ pPos->y_advance = gr_slot_advance_Y (is, grface, grfont);
curradvx += pPos->x_advance;
- pPos->y_offset = gr_slot_origin_Y (is) - curradvy;
- curradvy += pPos->y_advance;
- }
- if (!HB_DIRECTION_IS_BACKWARD (buffer->props.direction))
+ curradvy += pPos->y_advance;
+ }
pPos[-1].x_advance += gr_seg_advance_X(seg) - curradvx;
-
- if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction))
+ }
+ else
+ {
+ hb_glyph_position_t *pPos = hb_buffer_get_glyph_positions (buffer, NULL) + buffer->len - 1;
+ const hb_glyph_info_t *info = buffer->info + buffer->len - 1;
+ const hb_glyph_info_t *tinfo;
+ const gr_slot *tis;
+ int currclus = -1;
+ float clusx = 0., clusy = 0.;
+ for (is = gr_seg_last_slot (seg); is; pPos--, info--, is = gr_slot_prev_in_segment (is))
+ {
+ if (info->cluster != currclus)
+ {
+ curradvx += clusx;
+ curradvy += clusy;
+ currclus = info->cluster;
+ clusx = 0.;
+ clusy = 0.;
+ for (tis = is, tinfo = info; tis && tinfo->cluster == currclus; tis = gr_slot_prev_in_segment (tis), tinfo--)
+ {
+ clusx += gr_slot_advance_X (tis, grface, grfont);
+ clusy += gr_slot_advance_Y (tis, grface, grfont);
+ }
+ curradvx += clusx;
+ curradvy += clusy;
+ }
+ pPos->x_advance = gr_slot_advance_X (is, grface, grfont);
+ pPos->y_advance = gr_slot_advance_Y (is, grface, grfont);
+ curradvx -= pPos->x_advance;
+ curradvy -= pPos->y_advance;
+ pPos->x_offset = gr_slot_origin_X (is) - curradvx;
+ pPos->y_offset = gr_slot_origin_Y (is) - curradvy;
+ }
hb_buffer_reverse_clusters (buffer);
+ }
if (feats) gr_featureval_destroy (feats);
gr_seg_destroy (seg);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-graphite2.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-graphite2.h
index 3eae54acbd8..3eae54acbd8 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-graphite2.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-graphite2.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-icu.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-icu.cc
index 24cec9d7266..24cec9d7266 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-icu.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-icu.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-icu.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-icu.h
index f2f35f0f2ce..f2f35f0f2ce 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-icu.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-icu.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-mutex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-mutex-private.hh
index ed2703571c1..ed2703571c1 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-mutex-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-mutex-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-object-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-object-private.hh
index 635d62dc1ae..635d62dc1ae 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-object-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-object-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-open-file-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-open-file-private.hh
index 178bc7ccb85..178bc7ccb85 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-open-file-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-open-file-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-open-type-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-open-type-private.hh
index 75a0f568d11..75a0f568d11 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-open-type-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-open-type-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-cmap-table.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-cmap-table.hh
index 04823125538..04823125538 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-cmap-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-cmap-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-font.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-font.cc
index df6514dd31f..df6514dd31f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-font.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-font.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-font.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-font.h
index b9947a16bc8..b9947a16bc8 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-font.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-font.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-head-table.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-head-table.hh
index 268f133408c..268f133408c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-head-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-head-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-hhea-table.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-hhea-table.hh
index 992fe552021..992fe552021 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-hhea-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-hhea-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-hmtx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-hmtx-table.hh
index a0e3855a849..a0e3855a849 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-hmtx-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-hmtx-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-common-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-common-private.hh
index 3db7f57ab42..3db7f57ab42 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-common-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-common-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-gdef-table.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-gdef-table.hh
index 7a6c04d1700..7a6c04d1700 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-gdef-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-gdef-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-gpos-table.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-gpos-table.hh
index 69609d06cbe..69609d06cbe 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-gpos-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-gpos-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-gsub-table.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-gsub-table.hh
index ad1339dc64d..ad1339dc64d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-gsub-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-gsub-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-gsubgpos-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-gsubgpos-private.hh
index 842be880d7a..5033a223dfa 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-gsubgpos-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-gsubgpos-private.hh
@@ -328,8 +328,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)) &&
- !_hb_glyph_info_ligated (&info)))
+ (ignore_zwj || !_hb_glyph_info_is_zwj (&info))))
return SKIP_MAYBE;
return SKIP_NO;
@@ -720,7 +719,7 @@ static inline bool match_input (hb_apply_context_t *c,
{
TRACE_APPLY (NULL);
- if (unlikely (count > MAX_CONTEXT_LENGTH)) TRACE_RETURN (false);
+ if (unlikely (count > MAX_CONTEXT_LENGTH)) return TRACE_RETURN (false);
hb_buffer_t *buffer = c->buffer;
@@ -2165,7 +2164,7 @@ struct ExtensionFormat1
{
TRACE_DISPATCH (this, format);
if (unlikely (!c->may_dispatch (this, this))) TRACE_RETURN (c->default_return_value ());
- return get_subtable<typename T::LookupSubTable> ().dispatch (c, get_type ());
+ return TRACE_RETURN (get_subtable<typename T::LookupSubTable> ().dispatch (c, get_type ()));
}
/* This is called from may_dispatch() above with hb_sanitize_context_t. */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-jstf-table.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-jstf-table.hh
index 739dfd91067..739dfd91067 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-jstf-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-jstf-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-private.hh
index 47fecd216d3..d168e27f534 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout-private.hh
@@ -36,6 +36,15 @@
#include "hb-set-private.hh"
+/* Private API corresponding to hb-ot-layout.h: */
+
+HB_INTERNAL hb_bool_t
+hb_ot_layout_table_find_feature (hb_face_t *face,
+ hb_tag_t table_tag,
+ hb_tag_t feature_tag,
+ unsigned int *feature_index);
+
+
/*
* GDEF
*/
@@ -179,6 +188,30 @@ _hb_ot_layout_destroy (hb_ot_layout_t *layout);
#define lig_props() var1.u8[2] /* GSUB/GPOS ligature tracking */
#define syllable() var1.u8[3] /* GSUB/GPOS shaping boundaries */
+
+/* loop over syllables */
+
+#define foreach_syllable(buffer, start, end) \
+ for (unsigned int \
+ _count = buffer->len, \
+ start = 0, end = _count ? _next_syllable (buffer, 0) : 0; \
+ start < _count; \
+ start = end, end = _next_syllable (buffer, start))
+
+static inline unsigned int
+_next_syllable (hb_buffer_t *buffer, unsigned int start)
+{
+ hb_glyph_info_t *info = buffer->info;
+ unsigned int count = buffer->len;
+
+ unsigned int syllable = info[start].syllable();
+ while (++start < count && syllable == info[start].syllable())
+ ;
+
+ return start;
+}
+
+
/* unicode_props */
enum {
@@ -225,10 +258,12 @@ _hb_glyph_info_get_modified_combining_class (const hb_glyph_info_t *info)
return info->unicode_props1();
}
+static inline bool _hb_glyph_info_ligated (const hb_glyph_info_t *info);
+
static inline hb_bool_t
_hb_glyph_info_is_default_ignorable (const hb_glyph_info_t *info)
{
- return !!(info->unicode_props0() & MASK0_IGNORABLE);
+ return (info->unicode_props0() & MASK0_IGNORABLE) && !_hb_glyph_info_ligated (info);
}
static inline hb_bool_t
@@ -406,6 +441,14 @@ _hb_glyph_info_clear_ligated_and_multiplied (hb_glyph_info_t *info)
HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED);
}
+static inline void
+_hb_glyph_info_clear_substituted_and_ligated_and_multiplied (hb_glyph_info_t *info)
+{
+ info->glyph_props() &= ~(HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED |
+ HB_OT_LAYOUT_GLYPH_PROPS_LIGATED |
+ HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED);
+}
+
/* Allocation / deallocation. */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout.cc
index 05ea0603cd3..6fe7b6ca01b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout.cc
@@ -291,6 +291,28 @@ hb_ot_layout_table_get_feature_tags (hb_face_t *face,
return g.get_feature_tags (start_offset, feature_count, feature_tags);
}
+hb_bool_t
+hb_ot_layout_table_find_feature (hb_face_t *face,
+ hb_tag_t table_tag,
+ hb_tag_t feature_tag,
+ unsigned int *feature_index)
+{
+ ASSERT_STATIC (OT::Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_NO_FEATURE_INDEX);
+ const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
+
+ unsigned int num_features = g.get_feature_count ();
+ for (unsigned int i = 0; i < num_features; i++)
+ {
+ if (feature_tag == g.get_feature_tag (i)) {
+ if (feature_index) *feature_index = i;
+ return true;
+ }
+ }
+
+ if (feature_index) *feature_index = HB_OT_LAYOUT_NO_FEATURE_INDEX;
+ return false;
+}
+
unsigned int
hb_ot_layout_script_get_language_tags (hb_face_t *face,
@@ -905,7 +927,7 @@ apply_backward (OT::hb_apply_context_t *c,
struct hb_apply_forward_context_t
{
- inline const char *get_name (void) { return "APPLY_FORWARD"; }
+ inline const char *get_name (void) { return "APPLY_FWD"; }
static const unsigned int max_debug_depth = HB_DEBUG_APPLY;
typedef bool return_t;
template <typename T, typename F>
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout.h
index 949678ac422..949678ac422 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-layout.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-layout.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-map-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-map-private.hh
index 86b7e9fafea..f9538af1831 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-map-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-map-private.hh
@@ -154,9 +154,10 @@ struct hb_ot_map_t
enum hb_ot_map_feature_flags_t {
F_NONE = 0x0000u,
- F_GLOBAL = 0x0001u,
- F_HAS_FALLBACK = 0x0002u,
- F_MANUAL_ZWJ = 0x0004u
+ F_GLOBAL = 0x0001u, /* Feature applies to all characters; results in no mask allocated for it. */
+ F_HAS_FALLBACK = 0x0002u, /* Has fallback implementation, so include mask bit even if feature not found. */
+ F_MANUAL_ZWJ = 0x0004u, /* Don't skip over ZWJ when matching. */
+ F_GLOBAL_SEARCH = 0x0008u /* If feature not found in LangSys, look for it in global feature list and pick one. */
};
/* Macro version for where const is desired. */
#define F_COMBINE(l,r) (hb_ot_map_feature_flags_t ((unsigned int) (l) | (unsigned int) (r)))
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-map.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-map.cc
index 4985eb22b20..95bd04ee8e2 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-map.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-map.cc
@@ -216,6 +216,16 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m)
info->tag,
&feature_index[table_index]);
}
+ if (!found && (info->flags & F_GLOBAL_SEARCH))
+ {
+ for (unsigned int table_index = 0; table_index < 2; table_index++)
+ {
+ found |= hb_ot_layout_table_find_feature (face,
+ table_tags[table_index],
+ info->tag,
+ &feature_index[table_index]);
+ }
+ }
if (!found && !(info->flags & F_HAS_FALLBACK))
continue;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-maxp-table.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-maxp-table.hh
index 0d9a0fa1d87..0d9a0fa1d87 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-maxp-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-maxp-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-name-table.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-name-table.hh
index 21450c61382..21450c61382 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-name-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-name-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-arabic-fallback.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-arabic-fallback.hh
index a77f24ec849..a77f24ec849 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-arabic-fallback.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-arabic-fallback.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-arabic-table.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-arabic-table.hh
index 17100497ecb..80d50443546 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-arabic-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-arabic-table.hh
@@ -6,10 +6,10 @@
*
* on files with these headers:
*
- * # ArabicShaping-7.0.0.txt
- * # Date: 2014-02-14, 21:00:00 GMT [RP, KW, LI]
- * # Blocks-7.0.0.txt
- * # Date: 2014-04-03, 23:23:00 GMT [RP, KW]
+ * # ArabicShaping-8.0.0.txt
+ * # Date: 2015-02-17, 23:33:00 GMT [RP]
+ * # Blocks-8.0.0.txt
+ * # Date: 2014-11-10, 23:04:00 GMT [KW]
* UnicodeData.txt does not have a header.
*/
@@ -76,9 +76,9 @@ static const uint8_t joining_table[] =
/* Arabic Extended-A */
- /* 08A0 */ D,D,D,D,D,D,D,D,D,D,R,R,R,U,R,D,D,R,R,
+ /* 08A0 */ D,D,D,D,D,D,D,D,D,D,R,R,R,U,R,D,D,R,R,D,D,
-#define joining_offset_0x1806u 691
+#define joining_offset_0x1806u 693
/* Mongolian */
@@ -89,40 +89,40 @@ static const uint8_t joining_table[] =
/* 1880 */ U,U,U,U,U,U,U,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,
/* 18A0 */ D,D,D,D,D,D,D,D,D,X,D,
-#define joining_offset_0x200cu 856
+#define joining_offset_0x200cu 858
/* General Punctuation */
/* 2000 */ U,C,
-#define joining_offset_0x2066u 858
+#define joining_offset_0x2066u 860
/* General Punctuation */
/* 2060 */ U,U,U,U,
-#define joining_offset_0xa840u 862
+#define joining_offset_0xa840u 864
/* Phags-pa */
/* A840 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,
/* A860 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,L,U,
-#define joining_offset_0x10ac0u 914
+#define joining_offset_0x10ac0u 916
/* Manichaean */
/* 10AC0 */ D,D,D,D,D,R,U,R,U,R,R,U,U,L,R,R,R,R,R,D,D,D,D,L,D,D,D,D,D,R,D,D,
/* 10AE0 */ D,R,U,U,R,X,X,X,X,X,X,D,D,D,D,R,
-#define joining_offset_0x10b80u 962
+#define joining_offset_0x10b80u 964
/* Psalter Pahlavi */
/* 10B80 */ D,R,D,R,R,R,D,D,D,R,D,D,R,D,R,R,D,R,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
/* 10BA0 */ X,X,X,X,X,X,X,X,X,R,R,R,R,D,D,U,
-}; /* Table items: 1010; occupancy: 57% */
+}; /* Table items: 1012; occupancy: 57% */
static unsigned int
@@ -131,7 +131,7 @@ joining_type (hb_codepoint_t u)
switch (u >> 12)
{
case 0x0u:
- if (hb_in_range (u, 0x0600u, 0x08B2u)) return joining_table[u - 0x0600u + joining_offset_0x0600u];
+ if (hb_in_range (u, 0x0600u, 0x08B4u)) return joining_table[u - 0x0600u + joining_offset_0x0600u];
break;
case 0x1u:
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-arabic-win1256.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-arabic-win1256.hh
index 8edd3ba8027..e70c48f427c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-arabic-win1256.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-arabic-win1256.hh
@@ -142,7 +142,7 @@
OT_UARRAY(Name##Substitute, OT_LIST(ToGlyphs)) \
) \
OT_COVERAGE1(Name##Coverage, OT_LIST(FromGlyphs)) \
- /* ASSERT_STATIC_EXPR len(FromGlyphs) == len(ToGlyphs) */
+ /* ASSERT_STATIC_EXPR_ZERO (len(FromGlyphs) == len(ToGlyphs)) */
#define OT_SUBLOOKUP_LIGATURE_SUBST_FORMAT1(Name, FirstGlyphs, LigatureSetOffsets) \
OT_SUBLOOKUP(Name, 1, \
@@ -151,7 +151,7 @@
OT_UARRAY(Name##LigatureSetOffsetsArray, OT_LIST(LigatureSetOffsets)) \
) \
OT_COVERAGE1(Name##Coverage, OT_LIST(FirstGlyphs)) \
- /* ASSERT_STATIC_EXPR len(FirstGlyphs) == len(LigatureSetOffsets) */
+ /* ASSERT_STATIC_EXPR_ZERO (len(FirstGlyphs) == len(LigatureSetOffsets)) */
#define OT_LIGATURE_SET(Name, LigatureSetOffsets) \
OT_UARRAY(Name, OT_LIST(LigatureSetOffsets))
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-arabic.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-arabic.cc
index ae908641271..cde02e0a567 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-arabic.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-arabic.cc
@@ -24,7 +24,7 @@
* Google Author(s): Behdad Esfahbod
*/
-#include "hb-ot-shape-complex-private.hh"
+#include "hb-ot-shape-complex-arabic-private.hh"
#include "hb-ot-shape-private.hh"
@@ -33,9 +33,13 @@
/*
+ * Joining types:
+ */
+
+/*
* Bits used in the joining tables
*/
-enum {
+enum hb_arabic_joining_type_t {
JOINING_TYPE_U = 0,
JOINING_TYPE_L = 1,
JOINING_TYPE_R = 2,
@@ -49,10 +53,6 @@ enum {
JOINING_TYPE_X = 8 /* means: use general-category to choose between U or T. */
};
-/*
- * Joining types:
- */
-
#include "hb-ot-shape-complex-arabic-table.hh"
static unsigned int get_joining_type (hb_codepoint_t u, hb_unicode_general_category_t gen_cat)
@@ -61,7 +61,7 @@ static unsigned int get_joining_type (hb_codepoint_t u, hb_unicode_general_categ
if (likely (j_type != JOINING_TYPE_X))
return j_type;
- return (FLAG(gen_cat) &
+ return (FLAG_SAFE(gen_cat) &
(FLAG(HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) |
FLAG(HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) |
FLAG(HB_UNICODE_GENERAL_CATEGORY_FORMAT))
@@ -212,7 +212,7 @@ struct arabic_shape_plan_t
arabic_fallback_plan_t *fallback_plan;
};
-static void *
+void *
data_create_arabic (const hb_ot_shape_plan_t *plan)
{
arabic_shape_plan_t *arabic_plan = (arabic_shape_plan_t *) calloc (1, sizeof (arabic_shape_plan_t));
@@ -230,7 +230,7 @@ data_create_arabic (const hb_ot_shape_plan_t *plan)
return arabic_plan;
}
-static void
+void
data_destroy_arabic (void *data)
{
arabic_shape_plan_t *arabic_plan = (arabic_shape_plan_t *) data;
@@ -305,17 +305,15 @@ mongolian_variation_selectors (hb_buffer_t *buffer)
info[i].arabic_shaping_action() = info[i - 1].arabic_shaping_action();
}
-static void
-setup_masks_arabic (const hb_ot_shape_plan_t *plan,
- hb_buffer_t *buffer,
- hb_font_t *font HB_UNUSED)
+void
+setup_masks_arabic_plan (const arabic_shape_plan_t *arabic_plan,
+ hb_buffer_t *buffer,
+ hb_script_t script)
{
HB_BUFFER_ALLOCATE_VAR (buffer, arabic_shaping_action);
- const arabic_shape_plan_t *arabic_plan = (const arabic_shape_plan_t *) plan->data;
-
arabic_joining (buffer);
- if (plan->props.script == HB_SCRIPT_MONGOLIAN)
+ if (script == HB_SCRIPT_MONGOLIAN)
mongolian_variation_selectors (buffer);
unsigned int count = buffer->len;
@@ -326,6 +324,15 @@ setup_masks_arabic (const hb_ot_shape_plan_t *plan,
HB_BUFFER_DEALLOCATE_VAR (buffer, arabic_shaping_action);
}
+static void
+setup_masks_arabic (const hb_ot_shape_plan_t *plan,
+ hb_buffer_t *buffer,
+ hb_font_t *font HB_UNUSED)
+{
+ const arabic_shape_plan_t *arabic_plan = (const arabic_shape_plan_t *) plan->data;
+ setup_masks_arabic_plan (arabic_plan, buffer, plan->props.script);
+}
+
static void
nuke_joiners (const hb_ot_shape_plan_t *plan HB_UNUSED,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-default.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-default.cc
index f7f097eedaa..f7f097eedaa 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-default.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-default.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-hangul.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-hangul.cc
index 6ac18b08bff..763dbf00d08 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-hangul.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-hangul.cc
@@ -209,13 +209,8 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan,
hb_glyph_info_t tone = info[end];
memmove (&info[start + 1], &info[start], (end - start) * sizeof (hb_glyph_info_t));
info[start] = tone;
+ buffer->merge_out_clusters (start, end + 1);
}
- /* Merge clusters across the (possibly reordered) syllable+tone.
- * We want to merge even in the zero-width tone mark case here,
- * so that clustering behavior isn't dependent on how the tone mark
- * is handled by the font.
- */
- buffer->merge_out_clusters (start, end + 1);
}
else
{
@@ -296,7 +291,8 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan,
}
else
end = start + 2;
- buffer->merge_out_clusters (start, end);
+ if (buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES)
+ buffer->merge_out_clusters (start, end);
continue;
}
}
@@ -368,7 +364,8 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan,
info[i++].hangul_shaping_feature() = VJMO;
if (i < end)
info[i++].hangul_shaping_feature() = TJMO;
- buffer->merge_out_clusters (start, end);
+ if (buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES)
+ buffer->merge_out_clusters (start, end);
continue;
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-hebrew.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-hebrew.cc
index c7b7a5eba6a..c7b7a5eba6a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-hebrew.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-hebrew.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-indic-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-indic-machine.hh
index f652d4fda73..f652d4fda73 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-indic-machine.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-indic-machine.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-indic-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-indic-machine.rl
index 694b235d1d1..694b235d1d1 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-indic-machine.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-indic-machine.rl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-indic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-indic-private.hh
index d8dfc6507d9..559ebe49867 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-indic-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-indic-private.hh
@@ -161,8 +161,6 @@ enum indic_matra_category_t {
INDIC_MATRA_CATEGORY_VISUAL_ORDER_LEFT = POS_PRE_M
};
-/* Note: We use ASSERT_STATIC_EXPR_ZERO() instead of ASSERT_STATIC_EXPR() and the comma operation
- * because gcc fails to optimize the latter and fills the table in at runtime. */
#define INDIC_COMBINE_CATEGORIES(S,M) \
(ASSERT_STATIC_EXPR_ZERO (M == INDIC_MATRA_CATEGORY_NOT_APPLICABLE || \
( \
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-indic-table.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-indic-table.cc
index 2e159a12b00..2e159a12b00 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-indic-table.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-indic-table.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-indic.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-indic.cc
index 7723600410a..b7f3d5c66e7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-indic.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-indic.cc
@@ -142,7 +142,7 @@ is_one_of (const hb_glyph_info_t &info, unsigned int flags)
{
/* If it ligated, all bets are off. */
if (_hb_glyph_info_ligated (&info)) return false;
- return !!(FLAG (info.indic_category()) & flags);
+ return !!(FLAG_SAFE (info.indic_category()) & flags);
}
static inline bool
@@ -237,7 +237,7 @@ set_indic_properties (hb_glyph_info_t &info)
* Re-assign position.
*/
- if ((FLAG (cat) & CONSONANT_FLAGS))
+ if ((FLAG_SAFE (cat) & CONSONANT_FLAGS))
{
pos = POS_BASE_C;
if (is_ra (u))
@@ -247,7 +247,7 @@ set_indic_properties (hb_glyph_info_t &info)
{
pos = matra_position (u, pos);
}
- else if ((FLAG (cat) & (FLAG (OT_SM) | FLAG (OT_VD) | FLAG (OT_A) | FLAG (OT_Symbol))))
+ else if ((FLAG_SAFE (cat) & (FLAG (OT_SM) | FLAG (OT_VD) | FLAG (OT_A) | FLAG (OT_Symbol))))
{
pos = POS_SMVD;
}
@@ -963,7 +963,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) | MEDIAL_FLAGS | HALANT_OR_COENG_FLAGS)))
+ if ((FLAG_SAFE (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 &&
@@ -1161,17 +1161,6 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
}
}
-
-static void
-initial_reordering_vowel_syllable (const hb_ot_shape_plan_t *plan,
- hb_face_t *face,
- hb_buffer_t *buffer,
- unsigned int start, unsigned int end)
-{
- /* We made the vowels look like consonants. So let's call the consonant logic! */
- initial_reordering_consonant_syllable (plan, face, buffer, start, end);
-}
-
static void
initial_reordering_standalone_cluster (const hb_ot_shape_plan_t *plan,
hb_face_t *face,
@@ -1194,50 +1183,27 @@ initial_reordering_standalone_cluster (const hb_ot_shape_plan_t *plan,
}
static void
-initial_reordering_broken_cluster (const hb_ot_shape_plan_t *plan,
- hb_face_t *face,
- hb_buffer_t *buffer,
- unsigned int start, unsigned int end)
-{
- /* We already inserted dotted-circles, so just call the standalone_cluster. */
- initial_reordering_standalone_cluster (plan, face, buffer, start, end);
-}
-
-static void
-initial_reordering_symbol_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,
- 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_syllable (const hb_ot_shape_plan_t *plan,
hb_face_t *face,
hb_buffer_t *buffer,
unsigned int start, unsigned int end)
{
syllable_type_t syllable_type = (syllable_type_t) (buffer->info[start].syllable() & 0x0F);
- switch (syllable_type) {
- 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 symbol_cluster: initial_reordering_symbol_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;
+ switch (syllable_type)
+ {
+ case vowel_syllable: /* We made the vowels look like consonants. So let's call the consonant logic! */
+ case consonant_syllable:
+ initial_reordering_consonant_syllable (plan, face, buffer, start, end);
+ break;
+
+ case broken_cluster: /* We already inserted dotted-circles, so just call the standalone_cluster. */
+ case standalone_cluster:
+ initial_reordering_standalone_cluster (plan, face, buffer, start, end);
+ break;
+
+ case symbol_cluster:
+ case non_indic_cluster:
+ break;
}
}
@@ -1310,18 +1276,8 @@ initial_reordering (const hb_ot_shape_plan_t *plan,
update_consonant_positions (plan, font, buffer);
insert_dotted_circles (plan, font, buffer);
- hb_glyph_info_t *info = buffer->info;
- unsigned int count = buffer->len;
- if (unlikely (!count)) return;
- unsigned int last = 0;
- unsigned int last_syllable = info[0].syllable();
- for (unsigned int i = 1; i < count; i++)
- if (last_syllable != info[i].syllable()) {
- initial_reordering_syllable (plan, font->face, buffer, last, i);
- last = i;
- last_syllable = info[last].syllable();
- }
- initial_reordering_syllable (plan, font->face, buffer, last, count);
+ foreach_syllable (buffer, start, end)
+ initial_reordering_syllable (plan, font->face, buffer, start, end);
}
static void
@@ -1550,7 +1506,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
{
new_reph_pos = base;
while (new_reph_pos < end &&
- !( FLAG (info[new_reph_pos + 1].indic_position()) & (FLAG (POS_POST_C) | FLAG (POS_AFTER_POST) | FLAG (POS_SMVD))))
+ !( FLAG_SAFE (info[new_reph_pos + 1].indic_position()) & (FLAG (POS_POST_C) | FLAG (POS_AFTER_POST) | FLAG (POS_SMVD))))
new_reph_pos++;
if (new_reph_pos < end)
goto reph_move;
@@ -1701,7 +1657,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
/* Apply 'init' to the Left Matra if it's a word start. */
if (info[start].indic_position () == POS_PRE_M &&
(!start ||
- !(FLAG (_hb_glyph_info_get_general_category (&info[start - 1])) &
+ !(FLAG_SAFE (_hb_glyph_info_get_general_category (&info[start - 1])) &
FLAG_RANGE (HB_UNICODE_GENERAL_CATEGORY_FORMAT, HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK))))
info[start].mask |= indic_plan->mask_array[INIT];
@@ -1737,16 +1693,8 @@ final_reordering (const hb_ot_shape_plan_t *plan,
unsigned int count = buffer->len;
if (unlikely (!count)) return;
- hb_glyph_info_t *info = buffer->info;
- unsigned int last = 0;
- unsigned int last_syllable = info[0].syllable();
- for (unsigned int i = 1; i < count; i++)
- if (last_syllable != info[i].syllable()) {
- final_reordering_syllable (plan, buffer, last, i);
- last = i;
- last_syllable = info[last].syllable();
- }
- final_reordering_syllable (plan, buffer, last, count);
+ foreach_syllable (buffer, start, end)
+ final_reordering_syllable (plan, buffer, start, end);
HB_BUFFER_DEALLOCATE_VAR (buffer, indic_category);
HB_BUFFER_DEALLOCATE_VAR (buffer, indic_position);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-myanmar-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-myanmar-machine.hh
index 29fdf9a1aef..29fdf9a1aef 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-myanmar-machine.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-myanmar-machine.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-myanmar-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-myanmar-machine.rl
index 9649a916f02..9649a916f02 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-myanmar-machine.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-myanmar-machine.rl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-myanmar.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-myanmar.cc
index d016380cc63..7e3ab01d525 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-myanmar.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-myanmar.cc
@@ -154,7 +154,7 @@ is_one_of (const hb_glyph_info_t &info, unsigned int flags)
{
/* If it ligated, all bets are off. */
if (_hb_glyph_info_ligated (&info)) return false;
- return !!(FLAG (info.myanmar_category()) & flags);
+ return !!(FLAG_SAFE (info.myanmar_category()) & flags);
}
static inline bool
@@ -304,9 +304,7 @@ compare_myanmar_order (const hb_glyph_info_t *pa, const hb_glyph_info_t *pb)
* http://www.microsoft.com/typography/OpenTypeDev/myanmar/intro.htm */
static void
-initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
- hb_face_t *face,
- hb_buffer_t *buffer,
+initial_reordering_consonant_syllable (hb_buffer_t *buffer,
unsigned int start, unsigned int end)
{
hb_glyph_info_t *info = buffer->info;
@@ -399,37 +397,6 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
}
static void
-initial_reordering_broken_cluster (const hb_ot_shape_plan_t *plan,
- hb_face_t *face,
- hb_buffer_t *buffer,
- unsigned int start, unsigned int end)
-{
- /* We already inserted dotted-circles, so just call the consonant_syllable. */
- initial_reordering_consonant_syllable (plan, face, buffer, start, end);
-}
-
-static void
-initial_reordering_punctuation_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_myanmar_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_syllable (const hb_ot_shape_plan_t *plan,
hb_face_t *face,
hb_buffer_t *buffer,
@@ -437,10 +404,15 @@ initial_reordering_syllable (const hb_ot_shape_plan_t *plan,
{
syllable_type_t syllable_type = (syllable_type_t) (buffer->info[start].syllable() & 0x0F);
switch (syllable_type) {
- case consonant_syllable: initial_reordering_consonant_syllable (plan, face, buffer, start, end); return;
- case punctuation_cluster: initial_reordering_punctuation_cluster (plan, face, buffer, start, end); return;
- case broken_cluster: initial_reordering_broken_cluster (plan, face, buffer, start, end); return;
- case non_myanmar_cluster: initial_reordering_non_myanmar_cluster (plan, face, buffer, start, end); return;
+
+ case broken_cluster: /* We already inserted dotted-circles, so just call the consonant_syllable. */
+ case consonant_syllable:
+ initial_reordering_consonant_syllable (buffer, start, end);
+ break;
+
+ case punctuation_cluster:
+ case non_myanmar_cluster:
+ break;
}
}
@@ -505,18 +477,8 @@ initial_reordering (const hb_ot_shape_plan_t *plan,
{
insert_dotted_circles (plan, font, buffer);
- hb_glyph_info_t *info = buffer->info;
- unsigned int count = buffer->len;
- if (unlikely (!count)) return;
- unsigned int last = 0;
- unsigned int last_syllable = info[0].syllable();
- for (unsigned int i = 1; i < count; i++)
- if (last_syllable != info[i].syllable()) {
- initial_reordering_syllable (plan, font->face, buffer, last, i);
- last = i;
- last_syllable = info[last].syllable();
- }
- initial_reordering_syllable (plan, font->face, buffer, last, count);
+ foreach_syllable (buffer, start, end)
+ initial_reordering_syllable (plan, font->face, buffer, start, end);
}
static void
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-private.hh
index 4dc4f58d728..8d03dee51f1 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-private.hh
@@ -59,9 +59,9 @@ enum hb_ot_shape_zero_width_marks_type_t {
HB_COMPLEX_SHAPER_IMPLEMENT (myanmar_old) \
HB_COMPLEX_SHAPER_IMPLEMENT (indic) \
HB_COMPLEX_SHAPER_IMPLEMENT (myanmar) \
- HB_COMPLEX_SHAPER_IMPLEMENT (sea) \
HB_COMPLEX_SHAPER_IMPLEMENT (thai) \
HB_COMPLEX_SHAPER_IMPLEMENT (tibetan) \
+ HB_COMPLEX_SHAPER_IMPLEMENT (use) \
/* ^--- Add new shapers here */
@@ -217,61 +217,9 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
/* ^--- Add new shapers here */
-
#if 0
- /* Note:
- *
- * These disabled scripts are listed in ucd/IndicSyllabicCategory.txt, but according
- * to Martin Hosken and Jonathan Kew do not require complex shaping.
- *
- * TODO We should automate figuring out which scripts do not need complex shaping
- *
- * TODO We currently keep data for these scripts in our indic table. Need to fix the
- * generator to not do that.
- */
-
-
- /* Simple? */
-
- /* Unicode-3.2 additions */
- case HB_SCRIPT_BUHID:
- case HB_SCRIPT_HANUNOO:
-
- /* Unicode-5.1 additions */
- case HB_SCRIPT_SAURASHTRA:
-
- /* Unicode-6.0 additions */
- case HB_SCRIPT_BATAK:
- case HB_SCRIPT_BRAHMI:
-
-
- /* Simple */
-
- /* Unicode-1.1 additions */
- /* These have their own shaper now. */
- case HB_SCRIPT_LAO:
- case HB_SCRIPT_THAI:
-
- /* Unicode-3.2 additions */
- case HB_SCRIPT_TAGALOG:
- case HB_SCRIPT_TAGBANWA:
-
- /* Unicode-4.0 additions */
- case HB_SCRIPT_LIMBU:
- case HB_SCRIPT_TAI_LE:
-
/* Unicode-4.1 additions */
- case HB_SCRIPT_KHAROSHTHI:
case HB_SCRIPT_NEW_TAI_LUE:
- case HB_SCRIPT_SYLOTI_NAGRI:
-
- /* Unicode-5.1 additions */
- case HB_SCRIPT_KAYAH_LI:
-
- /* Unicode-5.2 additions */
- case HB_SCRIPT_TAI_VIET:
-
-
#endif
/* Unicode-1.1 additions */
@@ -288,28 +236,11 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
/* Unicode-3.0 additions */
case HB_SCRIPT_SINHALA:
- /* Unicode-5.0 additions */
- case HB_SCRIPT_BALINESE:
-
- /* Unicode-5.1 additions */
- case HB_SCRIPT_LEPCHA:
- case HB_SCRIPT_REJANG:
- case HB_SCRIPT_SUNDANESE:
-
/* Unicode-5.2 additions */
case HB_SCRIPT_JAVANESE:
- case HB_SCRIPT_KAITHI:
- case HB_SCRIPT_MEETEI_MAYEK:
-
- /* Unicode-6.0 additions */
-
- /* Unicode-6.1 additions */
- case HB_SCRIPT_CHAKMA:
- case HB_SCRIPT_SHARADA:
- case HB_SCRIPT_TAKRI:
/* If the designer designed the font for the 'DFLT' script,
- * use the default shaper. Otherwise, use the Indic shaper.
+ * use the default shaper. Otherwise, use the specific shaper.
* Note that for some simple scripts, there may not be *any*
* GSUB/GPOS needed, so there may be no scripts found! */
if (planner->map.chosen_script[0] == HB_TAG ('D','F','L','T'))
@@ -341,23 +272,82 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
else
return &_hb_ot_complex_shaper_default;
+
+ /* Unicode-2.0 additions */
+ //case HB_SCRIPT_TIBETAN:
+
+ /* Unicode-3.0 additions */
+ //case HB_SCRIPT_MONGOLIAN:
+ //case HB_SCRIPT_SINHALA:
+
+ /* Unicode-3.2 additions */
+ case HB_SCRIPT_BUHID:
+ case HB_SCRIPT_HANUNOO:
+ case HB_SCRIPT_TAGALOG:
+ case HB_SCRIPT_TAGBANWA:
+
+ /* Unicode-4.0 additions */
+ case HB_SCRIPT_LIMBU:
+ case HB_SCRIPT_TAI_LE:
+
/* Unicode-4.1 additions */
case HB_SCRIPT_BUGINESE:
+ case HB_SCRIPT_KHAROSHTHI:
+ case HB_SCRIPT_SYLOTI_NAGRI:
+ case HB_SCRIPT_TIFINAGH:
+
+ /* Unicode-5.0 additions */
+ case HB_SCRIPT_BALINESE:
+ //case HB_SCRIPT_NKO:
+ //case HB_SCRIPT_PHAGS_PA:
/* Unicode-5.1 additions */
case HB_SCRIPT_CHAM:
+ case HB_SCRIPT_KAYAH_LI:
+ case HB_SCRIPT_LEPCHA:
+ case HB_SCRIPT_REJANG:
+ case HB_SCRIPT_SAURASHTRA:
+ case HB_SCRIPT_SUNDANESE:
/* Unicode-5.2 additions */
+ case HB_SCRIPT_EGYPTIAN_HIEROGLYPHS:
+ //case HB_SCRIPT_JAVANESE:
+ case HB_SCRIPT_KAITHI:
+ case HB_SCRIPT_MEETEI_MAYEK:
case HB_SCRIPT_TAI_THAM:
+ case HB_SCRIPT_TAI_VIET:
+
+ /* Unicode-6.0 additions */
+ case HB_SCRIPT_BATAK:
+ case HB_SCRIPT_BRAHMI:
+ //case HB_SCRIPT_MANDAIC:
+
+ /* Unicode-6.1 additions */
+ case HB_SCRIPT_CHAKMA:
+ case HB_SCRIPT_SHARADA:
+ case HB_SCRIPT_TAKRI:
+
+ /* Unicode-7.0 additions */
+ case HB_SCRIPT_DUPLOYAN:
+ case HB_SCRIPT_GRANTHA:
+ case HB_SCRIPT_KHOJKI:
+ case HB_SCRIPT_KHUDAWADI:
+ case HB_SCRIPT_MAHAJANI:
+ //case HB_SCRIPT_MANICHAEAN:
+ case HB_SCRIPT_MODI:
+ case HB_SCRIPT_PAHAWH_HMONG:
+ //case HB_SCRIPT_PSALTER_PAHLAVI:
+ case HB_SCRIPT_SIDDHAM:
+ case HB_SCRIPT_TIRHUTA:
/* If the designer designed the font for the 'DFLT' script,
- * use the default shaper. Otherwise, use the Indic shaper.
+ * use the default shaper. Otherwise, use the specific shaper.
* Note that for some simple scripts, there may not be *any*
* GSUB/GPOS needed, so there may be no scripts found! */
if (planner->map.chosen_script[0] == HB_TAG ('D','F','L','T'))
return &_hb_ot_complex_shaper_default;
else
- return &_hb_ot_complex_shaper_sea;
+ return &_hb_ot_complex_shaper_use;
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-thai.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-thai.cc
index feb7fc7a148..feb7fc7a148 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-thai.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-thai.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-tibetan.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-tibetan.cc
index 01465a426f8..01465a426f8 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-tibetan.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-tibetan.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-use-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-use-machine.hh
new file mode 100644
index 00000000000..ced9d97f28f
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-use-machine.hh
@@ -0,0 +1,548 @@
+
+#line 1 "hb-ot-shape-complex-use-machine.rl"
+/*
+ * Copyright © 2015 Mozilla Foundation.
+ * Copyright © 2015 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.
+ *
+ * Mozilla Author(s): Jonathan Kew
+ * Google Author(s): Behdad Esfahbod
+ */
+
+#ifndef HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
+#define HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
+
+#include "hb-private.hh"
+
+
+#line 38 "hb-ot-shape-complex-use-machine.hh"
+static const unsigned char _use_syllable_machine_trans_keys[] = {
+ 0u, 0u, 4u, 4u, 1u, 1u, 0u, 39u, 21u, 21u, 8u, 39u, 8u, 39u, 1u, 1u,
+ 8u, 39u, 8u, 39u, 8u, 39u, 8u, 26u, 8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u,
+ 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u,
+ 8u, 39u, 8u, 39u, 8u, 39u, 1u, 1u, 8u, 39u, 8u, 39u, 8u, 26u, 8u, 26u,
+ 8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u,
+ 8u, 39u, 12u, 21u, 12u, 13u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 26u,
+ 8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u,
+ 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 1u, 39u, 8u, 39u, 21u, 42u, 41u, 42u,
+ 42u, 42u, 0
+};
+
+static const char _use_syllable_machine_key_spans[] = {
+ 0, 1, 1, 40, 1, 32, 32, 1,
+ 32, 32, 32, 19, 19, 19, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 1, 32, 32, 19, 19,
+ 19, 32, 32, 32, 32, 32, 32, 32,
+ 32, 10, 2, 32, 32, 32, 32, 19,
+ 19, 19, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 39, 32, 22, 2,
+ 1
+};
+
+static const short _use_syllable_machine_index_offsets[] = {
+ 0, 0, 2, 4, 45, 47, 80, 113,
+ 115, 148, 181, 214, 234, 254, 274, 307,
+ 340, 373, 406, 439, 472, 505, 538, 571,
+ 604, 637, 670, 703, 705, 738, 771, 791,
+ 811, 831, 864, 897, 930, 963, 996, 1029,
+ 1062, 1095, 1106, 1109, 1142, 1175, 1208, 1241,
+ 1261, 1281, 1301, 1334, 1367, 1400, 1433, 1466,
+ 1499, 1532, 1565, 1598, 1631, 1671, 1704, 1727,
+ 1730
+};
+
+static const char _use_syllable_machine_indicies[] = {
+ 1, 0, 3, 2, 4, 5, 6,
+ 4, 1, 5, 8, 8, 7, 8, 8,
+ 3, 9, 8, 8, 8, 4, 4, 10,
+ 11, 8, 8, 12, 13, 14, 15, 16,
+ 17, 18, 12, 19, 20, 21, 22, 23,
+ 24, 8, 25, 26, 27, 8, 29, 28,
+ 31, 30, 30, 32, 33, 30, 30, 30,
+ 30, 30, 30, 30, 30, 34, 35, 36,
+ 37, 38, 39, 40, 41, 35, 42, 34,
+ 43, 44, 45, 46, 30, 47, 48, 49,
+ 30, 31, 30, 30, 32, 33, 30, 30,
+ 30, 30, 30, 30, 30, 30, 50, 35,
+ 36, 37, 38, 39, 40, 41, 35, 42,
+ 43, 43, 44, 45, 46, 30, 47, 48,
+ 49, 30, 32, 51, 31, 30, 30, 32,
+ 33, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 35, 36, 37, 38, 39, 40,
+ 41, 35, 42, 43, 43, 44, 45, 46,
+ 30, 47, 48, 49, 30, 31, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 35, 36, 37, 38, 39,
+ 30, 30, 30, 30, 30, 30, 44, 45,
+ 46, 30, 47, 48, 49, 30, 31, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 36, 37, 38,
+ 39, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 47, 48, 49, 30, 31,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 37,
+ 38, 39, 30, 31, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 38, 39, 30, 31,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 39, 30, 31, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 37, 38, 39, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 47, 48, 49, 30, 31, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 37, 38, 39, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 48, 49, 30, 31, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 37, 38, 39,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 49, 30, 31, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 36, 37, 38,
+ 39, 30, 30, 30, 30, 30, 30, 44,
+ 45, 46, 30, 47, 48, 49, 30, 31,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 36, 37,
+ 38, 39, 30, 30, 30, 30, 30, 30,
+ 30, 45, 46, 30, 47, 48, 49, 30,
+ 31, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 36,
+ 37, 38, 39, 30, 30, 30, 30, 30,
+ 30, 30, 30, 46, 30, 47, 48, 49,
+ 30, 31, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 35,
+ 36, 37, 38, 39, 30, 41, 35, 30,
+ 30, 30, 44, 45, 46, 30, 47, 48,
+ 49, 30, 31, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 35, 36, 37, 38, 39, 30, 30, 35,
+ 30, 30, 30, 44, 45, 46, 30, 47,
+ 48, 49, 30, 31, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 35, 36, 37, 38, 39, 40, 41,
+ 35, 30, 30, 30, 44, 45, 46, 30,
+ 47, 48, 49, 30, 31, 30, 30, 32,
+ 33, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 35, 36, 37, 38, 39, 40,
+ 41, 35, 42, 30, 43, 44, 45, 46,
+ 30, 47, 48, 49, 30, 31, 30, 30,
+ 32, 33, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 35, 36, 37, 38, 39,
+ 40, 41, 35, 42, 34, 43, 44, 45,
+ 46, 30, 47, 48, 49, 30, 53, 52,
+ 52, 54, 55, 52, 52, 52, 52, 52,
+ 52, 52, 52, 56, 52, 57, 58, 59,
+ 60, 61, 62, 57, 63, 56, 64, 52,
+ 52, 52, 52, 65, 66, 67, 52, 53,
+ 52, 52, 54, 55, 52, 52, 52, 52,
+ 52, 52, 52, 52, 68, 52, 57, 58,
+ 59, 60, 61, 62, 57, 63, 64, 64,
+ 52, 52, 52, 52, 65, 66, 67, 52,
+ 54, 51, 53, 52, 52, 54, 55, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 57, 58, 59, 60, 61, 62, 57,
+ 63, 64, 64, 52, 52, 52, 52, 65,
+ 66, 67, 52, 53, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 57, 58, 59, 60, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 65, 66, 67, 52, 53, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 58, 59, 60, 52,
+ 53, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 59, 60, 52, 53, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 60, 52,
+ 53, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 58, 59, 60, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 65, 66, 67,
+ 52, 53, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 58, 59, 60, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 66,
+ 67, 52, 53, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 58, 59, 60, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 67, 52, 53, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 57, 58, 59, 60, 52, 62,
+ 57, 52, 52, 52, 52, 52, 52, 52,
+ 65, 66, 67, 52, 53, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 57, 58, 59, 60, 52,
+ 52, 57, 52, 52, 52, 52, 52, 52,
+ 52, 65, 66, 67, 52, 53, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 57, 58, 59, 60,
+ 61, 62, 57, 52, 52, 52, 52, 52,
+ 52, 52, 65, 66, 67, 52, 53, 52,
+ 52, 54, 55, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 57, 58, 59,
+ 60, 61, 62, 57, 63, 52, 64, 52,
+ 52, 52, 52, 65, 66, 67, 52, 53,
+ 52, 52, 54, 55, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 57, 58,
+ 59, 60, 61, 62, 57, 63, 56, 64,
+ 52, 52, 52, 52, 65, 66, 67, 52,
+ 70, 71, 69, 69, 69, 69, 69, 69,
+ 69, 72, 69, 70, 71, 69, 7, 73,
+ 73, 3, 9, 73, 73, 73, 73, 73,
+ 73, 73, 73, 74, 12, 13, 14, 15,
+ 16, 17, 18, 12, 19, 21, 21, 22,
+ 23, 24, 73, 25, 26, 27, 73, 7,
+ 73, 73, 3, 9, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 12, 13, 14,
+ 15, 16, 17, 18, 12, 19, 21, 21,
+ 22, 23, 24, 73, 25, 26, 27, 73,
+ 7, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 12, 13,
+ 14, 15, 16, 73, 73, 73, 73, 73,
+ 73, 22, 23, 24, 73, 25, 26, 27,
+ 73, 7, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 13, 14, 15, 16, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 25, 26,
+ 27, 73, 7, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 14, 15, 16, 73, 7, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 15,
+ 16, 73, 7, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 16, 73, 7, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 14, 15,
+ 16, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 25, 26, 27, 73, 7,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 14,
+ 15, 16, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 26, 27, 73,
+ 7, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 14, 15, 16, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 27,
+ 73, 7, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 13, 14, 15, 16, 73, 73, 73, 73,
+ 73, 73, 22, 23, 24, 73, 25, 26,
+ 27, 73, 7, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 13, 14, 15, 16, 73, 73, 73,
+ 73, 73, 73, 73, 23, 24, 73, 25,
+ 26, 27, 73, 7, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 13, 14, 15, 16, 73, 73,
+ 73, 73, 73, 73, 73, 73, 24, 73,
+ 25, 26, 27, 73, 7, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 12, 13, 14, 15, 16, 73,
+ 18, 12, 73, 73, 73, 22, 23, 24,
+ 73, 25, 26, 27, 73, 7, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 12, 13, 14, 15, 16,
+ 73, 73, 12, 73, 73, 73, 22, 23,
+ 24, 73, 25, 26, 27, 73, 7, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 12, 13, 14, 15,
+ 16, 17, 18, 12, 73, 73, 73, 22,
+ 23, 24, 73, 25, 26, 27, 73, 7,
+ 73, 73, 3, 9, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 12, 13, 14,
+ 15, 16, 17, 18, 12, 19, 73, 21,
+ 22, 23, 24, 73, 25, 26, 27, 73,
+ 5, 6, 73, 73, 5, 73, 73, 7,
+ 73, 73, 3, 9, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 12, 13, 14,
+ 15, 16, 17, 18, 12, 19, 20, 21,
+ 22, 23, 24, 73, 25, 26, 27, 73,
+ 7, 73, 73, 3, 9, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 12, 13,
+ 14, 15, 16, 17, 18, 12, 19, 20,
+ 21, 22, 23, 24, 73, 25, 26, 27,
+ 73, 76, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 76, 77, 75,
+ 76, 77, 75, 77, 75, 0
+};
+
+static const char _use_syllable_machine_trans_targs[] = {
+ 3, 41, 3, 43, 4, 5, 25, 3,
+ 0, 2, 60, 62, 45, 46, 47, 48,
+ 49, 56, 57, 58, 61, 59, 53, 54,
+ 55, 50, 51, 52, 3, 3, 3, 3,
+ 6, 7, 24, 9, 10, 11, 12, 13,
+ 20, 21, 22, 23, 17, 18, 19, 14,
+ 15, 16, 8, 3, 3, 3, 26, 27,
+ 40, 29, 30, 31, 32, 36, 37, 38,
+ 39, 33, 34, 35, 28, 3, 3, 1,
+ 42, 3, 44, 3, 63, 64
+};
+
+static const char _use_syllable_machine_trans_actions[] = {
+ 1, 2, 3, 4, 0, 0, 0, 7,
+ 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 4, 0, 0,
+ 0, 0, 0, 0, 8, 9, 10, 11,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 12, 13, 14, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 15, 16, 0,
+ 2, 17, 4, 18, 0, 0
+};
+
+static const char _use_syllable_machine_to_state_actions[] = {
+ 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 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 _use_syllable_machine_from_state_actions[] = {
+ 0, 0, 0, 6, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 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 _use_syllable_machine_eof_trans[] = {
+ 0, 1, 3, 0, 29, 31, 31, 52,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 53, 53, 52, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 70, 70, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 76, 76,
+ 76
+};
+
+static const int use_syllable_machine_start = 3;
+static const int use_syllable_machine_first_final = 3;
+static const int use_syllable_machine_error = 0;
+
+static const int use_syllable_machine_en_main = 3;
+
+
+#line 38 "hb-ot-shape-complex-use-machine.rl"
+
+
+
+#line 145 "hb-ot-shape-complex-use-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 388 "hb-ot-shape-complex-use-machine.hh"
+ {
+ cs = use_syllable_machine_start;
+ ts = 0;
+ te = 0;
+ act = 0;
+ }
+
+#line 166 "hb-ot-shape-complex-use-machine.rl"
+
+
+ p = 0;
+ pe = eof = buffer->len;
+
+ unsigned int last = 0;
+ unsigned int syllable_serial = 1;
+
+#line 405 "hb-ot-shape-complex-use-machine.hh"
+ {
+ int _slen;
+ int _trans;
+ const unsigned char *_keys;
+ const char *_inds;
+ if ( p == pe )
+ goto _test_eof;
+ if ( cs == 0 )
+ goto _out;
+_resume:
+ switch ( _use_syllable_machine_from_state_actions[cs] ) {
+ case 6:
+#line 1 "NONE"
+ {ts = p;}
+ break;
+#line 421 "hb-ot-shape-complex-use-machine.hh"
+ }
+
+ _keys = _use_syllable_machine_trans_keys + (cs<<1);
+ _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
+
+ _slen = _use_syllable_machine_key_spans[cs];
+ _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].use_category()) &&
+ ( info[p].use_category()) <= _keys[1] ?
+ ( info[p].use_category()) - _keys[0] : _slen ];
+
+_eof_trans:
+ cs = _use_syllable_machine_trans_targs[_trans];
+
+ if ( _use_syllable_machine_trans_actions[_trans] == 0 )
+ goto _again;
+
+ switch ( _use_syllable_machine_trans_actions[_trans] ) {
+ case 2:
+#line 1 "NONE"
+ {te = p+1;}
+ break;
+ case 9:
+#line 134 "hb-ot-shape-complex-use-machine.rl"
+ {te = p+1;{ found_syllable (independent_cluster); }}
+ break;
+ case 11:
+#line 136 "hb-ot-shape-complex-use-machine.rl"
+ {te = p+1;{ found_syllable (consonant_cluster); }}
+ break;
+ case 14:
+#line 137 "hb-ot-shape-complex-use-machine.rl"
+ {te = p+1;{ found_syllable (vowel_cluster); }}
+ break;
+ case 16:
+#line 138 "hb-ot-shape-complex-use-machine.rl"
+ {te = p+1;{ found_syllable (number_joiner_terminated_cluster); }}
+ break;
+ case 7:
+#line 141 "hb-ot-shape-complex-use-machine.rl"
+ {te = p+1;{ found_syllable (broken_cluster); }}
+ break;
+ case 8:
+#line 134 "hb-ot-shape-complex-use-machine.rl"
+ {te = p;p--;{ found_syllable (independent_cluster); }}
+ break;
+ case 12:
+#line 135 "hb-ot-shape-complex-use-machine.rl"
+ {te = p;p--;{ found_syllable (virama_terminated_cluster); }}
+ break;
+ case 10:
+#line 136 "hb-ot-shape-complex-use-machine.rl"
+ {te = p;p--;{ found_syllable (consonant_cluster); }}
+ break;
+ case 13:
+#line 137 "hb-ot-shape-complex-use-machine.rl"
+ {te = p;p--;{ found_syllable (vowel_cluster); }}
+ break;
+ case 15:
+#line 139 "hb-ot-shape-complex-use-machine.rl"
+ {te = p;p--;{ found_syllable (numeral_cluster); }}
+ break;
+ case 18:
+#line 140 "hb-ot-shape-complex-use-machine.rl"
+ {te = p;p--;{ found_syllable (symbol_cluster); }}
+ break;
+ case 17:
+#line 141 "hb-ot-shape-complex-use-machine.rl"
+ {te = p;p--;{ found_syllable (broken_cluster); }}
+ break;
+ case 1:
+#line 139 "hb-ot-shape-complex-use-machine.rl"
+ {{p = ((te))-1;}{ found_syllable (numeral_cluster); }}
+ break;
+ case 3:
+#line 1 "NONE"
+ { switch( act ) {
+ case 0:
+ {{cs = 0; goto _again;}}
+ break;
+ case 8:
+ {{p = ((te))-1;} found_syllable (broken_cluster); }
+ break;
+ }
+ }
+ break;
+ case 4:
+#line 1 "NONE"
+ {te = p+1;}
+#line 141 "hb-ot-shape-complex-use-machine.rl"
+ {act = 8;}
+ break;
+#line 513 "hb-ot-shape-complex-use-machine.hh"
+ }
+
+_again:
+ switch ( _use_syllable_machine_to_state_actions[cs] ) {
+ case 5:
+#line 1 "NONE"
+ {ts = 0;}
+#line 1 "NONE"
+ {act = 0;}
+ break;
+#line 524 "hb-ot-shape-complex-use-machine.hh"
+ }
+
+ if ( cs == 0 )
+ goto _out;
+ if ( ++p != pe )
+ goto _resume;
+ _test_eof: {}
+ if ( p == eof )
+ {
+ if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
+ _trans = _use_syllable_machine_eof_trans[cs] - 1;
+ goto _eof_trans;
+ }
+ }
+
+ _out: {}
+ }
+
+#line 175 "hb-ot-shape-complex-use-machine.rl"
+
+}
+
+#undef found_syllable
+
+#endif /* HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-use-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-use-machine.rl
new file mode 100644
index 00000000000..b8242bab1e7
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-use-machine.rl
@@ -0,0 +1,180 @@
+/*
+ * Copyright © 2015 Mozilla Foundation.
+ * Copyright © 2015 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.
+ *
+ * Mozilla Author(s): Jonathan Kew
+ * Google Author(s): Behdad Esfahbod
+ */
+
+#ifndef HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
+#define HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
+
+#include "hb-private.hh"
+
+%%{
+ machine use_syllable_machine;
+ alphtype unsigned char;
+ write data;
+}%%
+
+%%{
+
+# Same order as enum use_category_t. Not sure how to avoid duplication.
+
+O = 0; # OTHER
+
+B = 1; # BASE
+IV = 2; # BASE_VOWEL
+IND = 3; # BASE_IND
+N = 4; # BASE_NUM
+GB = 5; # BASE_OTHER
+CGJ = 6; # CGJ
+#F = 7; # CONS_FINAL
+FM = 8; # CONS_FINAL_MOD
+#M = 9; # CONS_MED
+#CM = 10; # CONS_MOD
+SUB = 11; # CONS_SUB
+H = 12; # HALANT
+
+HN = 13; # HALANT_NUM
+ZWNJ = 14; # Zero width non-joiner
+ZWJ = 15; # Zero width joiner
+WJ = 16; # Word joiner
+Rsv = 17; # Reserved characters
+R = 18; # REPHA
+S = 19; # SYM
+#SM = 20; # SYM_MOD
+VS = 21; # VARIATION_SELECTOR
+#V = 36; # VOWEL
+#VM = 40; # VOWEL_MOD
+
+FAbv = 24; # CONS_FINAL_ABOVE
+FBlw = 25; # CONS_FINAL_BELOW
+FPst = 26; # CONS_FINAL_POST
+MAbv = 27; # CONS_MED_ABOVE
+MBlw = 28; # CONS_MED_BELOW
+MPst = 29; # CONS_MED_POST
+MPre = 30; # CONS_MED_PRE
+CMAbv = 31; # CONS_MOD_ABOVE
+CMBlw = 32; # CONS_MOD_BELOW
+VAbv = 33; # VOWEL_ABOVE / VOWEL_ABOVE_BELOW / VOWEL_ABOVE_BELOW_POST / VOWEL_ABOVE_POST
+VBlw = 34; # VOWEL_BELOW / VOWEL_BELOW_POST
+VPst = 35; # VOWEL_POST UIPC = Right
+VPre = 22; # VOWEL_PRE / VOWEL_PRE_ABOVE / VOWEL_PRE_ABOVE_POST / VOWEL_PRE_POST
+VMAbv = 37; # VOWEL_MOD_ABOVE
+VMBlw = 38; # VOWEL_MOD_BELOW
+VMPst = 39; # VOWEL_MOD_POST
+VMPre = 23; # VOWEL_MOD_PRE
+SMAbv = 41; # SYM_MOD_ABOVE
+SMBlw = 42; # SYM_MOD_BELOW
+
+
+consonant_modifiers = CMAbv* CMBlw* ((H B | SUB) VS? CMAbv? CMBlw*)*;
+medial_consonants = MPre? MAbv? MBlw? MPst?;
+dependent_vowels = VPre* VAbv* VBlw* VPst*;
+vowel_modifiers = VMPre* VMAbv* VMBlw* VMPst*;
+final_consonants = FAbv* FBlw* FPst* FM?;
+
+virama_terminated_cluster =
+ R? (B | GB | IV) VS?
+ consonant_modifiers
+ H
+;
+consonant_cluster =
+ R? (B | GB) VS?
+ consonant_modifiers
+ medial_consonants
+ dependent_vowels
+ vowel_modifiers
+ final_consonants
+;
+vowel_cluster =
+ R? (IV) VS?
+ consonant_modifiers
+ medial_consonants
+ vowel_modifiers
+ final_consonants
+;
+
+broken_cluster =
+ R?
+ consonant_modifiers
+ medial_consonants
+ dependent_vowels
+ vowel_modifiers
+ final_consonants
+;
+
+number_joiner_terminated_cluster = N VS? (HN N VS?)* H;
+numeral_cluster = N VS? (HN N VS?)*;
+symbol_cluster = S VS? SMAbv* SMBlw*;
+independent_cluster = (IND | O | Rsv | WJ) VS?;
+
+main := |*
+ independent_cluster => { found_syllable (independent_cluster); };
+ virama_terminated_cluster => { found_syllable (virama_terminated_cluster); };
+ consonant_cluster => { found_syllable (consonant_cluster); };
+ vowel_cluster => { found_syllable (vowel_cluster); };
+ number_joiner_terminated_cluster => { found_syllable (number_joiner_terminated_cluster); };
+ numeral_cluster => { found_syllable (numeral_cluster); };
+ symbol_cluster => { found_syllable (symbol_cluster); };
+ broken_cluster => { found_syllable (broken_cluster); };
+*|;
+
+
+}%%
+
+#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;
+ %%{
+ write init;
+ getkey info[p].use_category();
+ }%%
+
+ p = 0;
+ pe = eof = buffer->len;
+
+ unsigned int last = 0;
+ unsigned int syllable_serial = 1;
+ %%{
+ write exec;
+ }%%
+}
+
+#undef found_syllable
+
+#endif /* HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-use.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-use.cc
new file mode 100644
index 00000000000..1d44d220006
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-use.cc
@@ -0,0 +1,593 @@
+/*
+ * Copyright © 2015 Mozilla Foundation.
+ * Copyright © 2015 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.
+ *
+ * Mozilla Author(s): Jonathan Kew
+ * Google Author(s): Behdad Esfahbod
+ */
+
+#include "hb-ot-shape-complex-use-private.hh"
+#include "hb-ot-shape-complex-arabic-private.hh"
+
+/* buffer var allocations */
+#define use_category() complex_var_u8_0()
+
+
+/*
+ * Universal Shaping Engine.
+ * https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm
+ */
+
+static const hb_tag_t
+basic_features[] =
+{
+ /*
+ * Basic features.
+ * These features are applied all at once, before reordering.
+ */
+ HB_TAG('r','k','r','f'),
+ HB_TAG('a','b','v','f'),
+ HB_TAG('b','l','w','f'),
+ HB_TAG('h','a','l','f'),
+ HB_TAG('p','s','t','f'),
+ HB_TAG('v','a','t','u'),
+ HB_TAG('c','j','c','t'),
+};
+static const hb_tag_t
+arabic_features[] =
+{
+ HB_TAG('i','s','o','l'),
+ HB_TAG('i','n','i','t'),
+ HB_TAG('m','e','d','i'),
+ HB_TAG('f','i','n','a'),
+ /* The spec doesn't specify these but we apply anyway, since our Arabic shaper
+ * does. These are only used in Syriac spec. */
+ HB_TAG('m','e','d','2'),
+ HB_TAG('f','i','n','2'),
+ HB_TAG('f','i','n','3'),
+};
+/* Same order as arabic_features. Don't need Syriac stuff.*/
+enum joining_form_t {
+ ISOL,
+ INIT,
+ MEDI,
+ FINA,
+ _NONE
+};
+static const hb_tag_t
+other_features[] =
+{
+ /*
+ * Other features.
+ * These features are applied all at once, after reordering.
+ */
+ HB_TAG('a','b','v','s'),
+ HB_TAG('b','l','w','s'),
+ HB_TAG('h','a','l','n'),
+ HB_TAG('p','r','e','s'),
+ HB_TAG('p','s','t','s'),
+ /* Positioning features, though we don't care about the types. */
+ HB_TAG('d','i','s','t'),
+ HB_TAG('a','b','v','m'),
+ HB_TAG('b','l','w','m'),
+};
+
+static void
+setup_syllables (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer);
+static void
+clear_substitution_flags (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer);
+static void
+record_rphf (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer);
+static void
+record_pref (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer);
+static void
+reorder (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer);
+
+static void
+collect_features_use (hb_ot_shape_planner_t *plan)
+{
+ hb_ot_map_builder_t *map = &plan->map;
+
+ /* Do this before any lookups have been applied. */
+ map->add_gsub_pause (setup_syllables);
+
+ /* "Default glyph pre-processing group" */
+ map->add_global_bool_feature (HB_TAG('l','o','c','l'));
+ map->add_global_bool_feature (HB_TAG('c','c','m','p'));
+ map->add_global_bool_feature (HB_TAG('n','u','k','t'));
+ map->add_global_bool_feature (HB_TAG('a','k','h','n'));
+
+ /* "Reordering group" */
+ map->add_gsub_pause (clear_substitution_flags);
+ map->add_feature (HB_TAG('r','p','h','f'), 1, F_MANUAL_ZWJ);
+ map->add_gsub_pause (record_rphf);
+ map->add_gsub_pause (clear_substitution_flags);
+ map->add_feature (HB_TAG('p','r','e','f'), 1, F_GLOBAL | F_MANUAL_ZWJ);
+ map->add_gsub_pause (record_pref);
+
+ /* "Orthographic unit shaping group" */
+ for (unsigned int i = 0; i < ARRAY_LENGTH (basic_features); i++)
+ map->add_feature (basic_features[i], 1, F_GLOBAL | F_MANUAL_ZWJ);
+
+ map->add_gsub_pause (reorder);
+
+ /* "Topographical features" */
+ for (unsigned int i = 0; i < ARRAY_LENGTH (arabic_features); i++)
+ map->add_feature (arabic_features[i], 1, F_NONE);
+ map->add_gsub_pause (NULL);
+
+ /* "Standard typographic presentation" and "Positional feature application" */
+ for (unsigned int i = 0; i < ARRAY_LENGTH (other_features); i++)
+ map->add_feature (other_features[i], 1, F_GLOBAL | F_MANUAL_ZWJ);
+}
+
+struct use_shape_plan_t
+{
+ ASSERT_POD ();
+
+ hb_mask_t rphf_mask;
+
+ arabic_shape_plan_t *arabic_plan;
+};
+
+static bool
+has_arabic_joining (hb_script_t script)
+{
+ /* List of scripts that have data in arabic-table. */
+ switch ((int) script)
+ {
+ /* Unicode-1.1 additions */
+ case HB_SCRIPT_ARABIC:
+
+ /* Unicode-3.0 additions */
+ case HB_SCRIPT_MONGOLIAN:
+ case HB_SCRIPT_SYRIAC:
+
+ /* Unicode-5.0 additions */
+ case HB_SCRIPT_NKO:
+ case HB_SCRIPT_PHAGS_PA:
+
+ /* Unicode-6.0 additions */
+ case HB_SCRIPT_MANDAIC:
+
+ /* Unicode-7.0 additions */
+ case HB_SCRIPT_MANICHAEAN:
+ case HB_SCRIPT_PSALTER_PAHLAVI:
+
+ return true;
+
+ default:
+ return false;
+ }
+}
+
+static void *
+data_create_use (const hb_ot_shape_plan_t *plan)
+{
+ use_shape_plan_t *use_plan = (use_shape_plan_t *) calloc (1, sizeof (use_shape_plan_t));
+ if (unlikely (!use_plan))
+ return NULL;
+
+ use_plan->rphf_mask = plan->map.get_1_mask (HB_TAG('r','p','h','f'));
+
+ if (has_arabic_joining (plan->props.script))
+ {
+ use_plan->arabic_plan = (arabic_shape_plan_t *) data_create_arabic (plan);
+ if (unlikely (!use_plan->arabic_plan))
+ {
+ free (use_plan);
+ return NULL;
+ }
+ }
+
+ return use_plan;
+}
+
+static void
+data_destroy_use (void *data)
+{
+ use_shape_plan_t *use_plan = (use_shape_plan_t *) data;
+
+ if (use_plan->arabic_plan)
+ data_destroy_arabic (use_plan->arabic_plan);
+
+ free (data);
+}
+
+enum syllable_type_t {
+ independent_cluster,
+ virama_terminated_cluster,
+ consonant_cluster,
+ vowel_cluster,
+ number_joiner_terminated_cluster,
+ numeral_cluster,
+ symbol_cluster,
+ broken_cluster,
+};
+
+#include "hb-ot-shape-complex-use-machine.hh"
+
+
+static inline void
+set_use_properties (hb_glyph_info_t &info)
+{
+ hb_codepoint_t u = info.codepoint;
+ info.use_category() = hb_use_get_categories (u);
+}
+
+
+static void
+setup_masks_use (const hb_ot_shape_plan_t *plan,
+ hb_buffer_t *buffer,
+ hb_font_t *font HB_UNUSED)
+{
+ const use_shape_plan_t *use_plan = (const use_shape_plan_t *) plan->data;
+
+ /* Do this before allocating use_category(). */
+ if (use_plan->arabic_plan)
+ {
+ setup_masks_arabic_plan (use_plan->arabic_plan, buffer, plan->props.script);
+ }
+
+ HB_BUFFER_ALLOCATE_VAR (buffer, use_category);
+
+ /* We cannot setup masks here. We save information about characters
+ * and setup masks later on in a pause-callback. */
+
+ unsigned int count = buffer->len;
+ hb_glyph_info_t *info = buffer->info;
+ for (unsigned int i = 0; i < count; i++)
+ info[i].use_category() = hb_use_get_categories (info[i].codepoint);
+}
+
+static void
+setup_rphf_mask (const hb_ot_shape_plan_t *plan,
+ hb_buffer_t *buffer)
+{
+ const use_shape_plan_t *use_plan = (const use_shape_plan_t *) plan->data;
+
+ hb_mask_t mask = use_plan->rphf_mask;
+ if (!mask) return;
+
+ hb_glyph_info_t *info = buffer->info;
+
+ foreach_syllable (buffer, start, end)
+ {
+ unsigned int limit = info[start].use_category() == USE_R ? 1 : MIN (3u, end - start);
+ for (unsigned int i = start; i < start + limit; i++)
+ info[i].mask |= mask;
+ }
+}
+
+static void
+setup_topographical_masks (const hb_ot_shape_plan_t *plan,
+ hb_buffer_t *buffer)
+{
+
+ ASSERT_STATIC (INIT < 4 && ISOL < 4 && MEDI < 4 && FINA < 4);
+ hb_mask_t masks[4], all_masks = 0;
+ for (unsigned int i = 0; i < 4; i++)
+ {
+ masks[i] = plan->map.get_1_mask (arabic_features[i]);
+ if (masks[i] == plan->map.get_global_mask ())
+ masks[i] = 0;
+ all_masks |= masks[i];
+ }
+ if (!all_masks)
+ return;
+ hb_mask_t other_masks = ~all_masks;
+
+ unsigned int last_start = 0;
+ joining_form_t last_form = _NONE;
+ hb_glyph_info_t *info = buffer->info;
+ foreach_syllable (buffer, start, end)
+ {
+ syllable_type_t syllable_type = (syllable_type_t) (info[start].syllable() & 0x0F);
+ switch (syllable_type)
+ {
+ case independent_cluster:
+ case symbol_cluster:
+ /* These don't join. Nothing to do. */
+ last_form = _NONE;
+ break;
+
+ case virama_terminated_cluster:
+ case consonant_cluster:
+ case vowel_cluster:
+ case number_joiner_terminated_cluster:
+ case numeral_cluster:
+ case broken_cluster:
+
+ bool join = last_form == FINA || last_form == ISOL;
+
+ if (join)
+ {
+ /* Fixup previous syllable's form. */
+ last_form = last_form == FINA ? MEDI : INIT;
+ for (unsigned int i = last_start; i < start; i++)
+ info[i].mask = (info[i].mask & other_masks) | masks[last_form];
+ }
+
+ /* Form for this syllable. */
+ last_form = join ? FINA : ISOL;
+ for (unsigned int i = start; i < end; i++)
+ info[i].mask = (info[i].mask & other_masks) | masks[last_form];
+
+ break;
+ }
+
+ last_start = start;
+ }
+}
+
+static void
+setup_syllables (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font HB_UNUSED,
+ hb_buffer_t *buffer)
+{
+ find_syllables (buffer);
+ setup_rphf_mask (plan, buffer);
+ setup_topographical_masks (plan, buffer);
+}
+
+static void
+clear_substitution_flags (const hb_ot_shape_plan_t *plan,
+ 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++)
+ _hb_glyph_info_clear_substituted_and_ligated_and_multiplied (&info[i]);
+}
+
+static void
+record_rphf (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer)
+{
+ const use_shape_plan_t *use_plan = (const use_shape_plan_t *) plan->data;
+
+ hb_mask_t mask = use_plan->rphf_mask;
+ if (!mask) return;
+ hb_glyph_info_t *info = buffer->info;
+
+ foreach_syllable (buffer, start, end)
+ {
+ /* Mark a substituted repha as USE_R. */
+ for (unsigned int i = start; i < end && (info[i].mask & mask); i++)
+ if (_hb_glyph_info_substituted (&info[i]))
+ {
+ info[i].use_category() = USE_R;
+ break;
+ }
+ }
+}
+
+static void
+record_pref (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer)
+{
+ hb_glyph_info_t *info = buffer->info;
+
+ foreach_syllable (buffer, start, end)
+ {
+ /* Mark a substituted pref as VPre, as they behave the same way. */
+ for (unsigned int i = start; i < end; i++)
+ if (_hb_glyph_info_substituted (&info[i]))
+ {
+ info[i].use_category() = USE_VPre;
+ break;
+ }
+ }
+}
+
+static void
+reorder_syllable (hb_buffer_t *buffer, unsigned int start, unsigned int end)
+{
+ syllable_type_t syllable_type = (syllable_type_t) (buffer->info[start].syllable() & 0x0F);
+ /* Only a few syllable types need reordering. */
+ if (unlikely (!(FLAG_SAFE (syllable_type) &
+ (FLAG (virama_terminated_cluster) |
+ FLAG (consonant_cluster) |
+ FLAG (vowel_cluster) |
+ FLAG (broken_cluster) |
+ 0))))
+ return;
+
+ hb_glyph_info_t *info = buffer->info;
+
+#define HALANT_FLAGS FLAG(USE_H)
+#define BASE_FLAGS (FLAG (USE_B) | FLAG (USE_GB) | FLAG (USE_IV))
+
+ /* Move things forward. */
+ if (info[start].use_category() == USE_R && end - start > 1)
+ {
+ /* Got a repha. Reorder it to after first base, before first halant. */
+ for (unsigned int i = start + 1; i < end; i++)
+ if (FLAG_UNSAFE (info[i].use_category()) & (HALANT_FLAGS | BASE_FLAGS))
+ {
+ /* If we hit a halant, move before it; otherwise it's a base: move to it's
+ * place, and shift things in between backward. */
+
+ if (info[i].use_category() == USE_H)
+ i--;
+
+ hb_glyph_info_t t = info[start];
+ memmove (&info[start], &info[start + 1], (i - start) * sizeof (info[0]));
+ info[i] = t;
+ buffer->merge_clusters (start, i + 1);
+
+ break;
+ }
+ }
+
+ /* Move things back. */
+ unsigned int j = end;
+ for (unsigned int i = start; i < end; i++)
+ {
+ uint32_t flag = FLAG_UNSAFE (info[i].use_category());
+ if (flag & (HALANT_FLAGS | BASE_FLAGS))
+ {
+ /* If we hit a halant, move before it; otherwise it's a base: move to it's
+ * place, and shift things in between backward. */
+ if (info[i].use_category() == USE_H)
+ j = i + 1;
+ else
+ j = i;
+ }
+ else if (((flag) & (FLAG (USE_VPre) | FLAG (USE_VMPre))) &&
+ /* Only move the first component of a MultipleSubst. */
+ 0 == _hb_glyph_info_get_lig_comp (&info[i]) &&
+ j < i)
+ {
+ hb_glyph_info_t t = info[i];
+ memmove (&info[j + 1], &info[j], (i - j) * sizeof (info[0]));
+ info[j] = t;
+ buffer->merge_clusters (j, i + 1);
+ }
+ }
+}
+
+static inline void
+insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
+ hb_font_t *font,
+ hb_buffer_t *buffer)
+{
+ /* Note: This loop is extra overhead, but should not be measurable. */
+ bool has_broken_syllables = false;
+ unsigned int count = buffer->len;
+ hb_glyph_info_t *info = buffer->info;
+ for (unsigned int i = 0; i < count; i++)
+ if ((info[i].syllable() & 0x0F) == broken_cluster)
+ {
+ has_broken_syllables = true;
+ break;
+ }
+ if (likely (!has_broken_syllables))
+ return;
+
+
+ hb_codepoint_t dottedcircle_glyph;
+ if (!font->get_glyph (0x25CCu, 0, &dottedcircle_glyph))
+ return;
+
+ hb_glyph_info_t dottedcircle = {0};
+ if (!font->get_glyph (0x25CCu, 0, &dottedcircle.codepoint))
+ return;
+ dottedcircle.use_category() = hb_use_get_categories (0x25CC);
+
+ buffer->clear_output ();
+
+ buffer->idx = 0;
+
+ unsigned int last_syllable = 0;
+ while (buffer->idx < buffer->len)
+ {
+ unsigned int syllable = buffer->cur().syllable();
+ syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F);
+ if (unlikely (last_syllable != syllable && syllable_type == broken_cluster))
+ {
+ last_syllable = syllable;
+
+ hb_glyph_info_t info = dottedcircle;
+ info.cluster = buffer->cur().cluster;
+ info.mask = buffer->cur().mask;
+ info.syllable() = buffer->cur().syllable();
+ /* TODO Set glyph_props? */
+
+ /* Insert dottedcircle after possible Repha. */
+ while (buffer->idx < buffer->len &&
+ last_syllable == buffer->cur().syllable() &&
+ buffer->cur().use_category() == USE_R)
+ buffer->next_glyph ();
+
+ buffer->output_info (info);
+ }
+ else
+ buffer->next_glyph ();
+ }
+
+ buffer->swap_buffers ();
+}
+
+static void
+reorder (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer)
+{
+ insert_dotted_circles (plan, font, buffer);
+
+ hb_glyph_info_t *info = buffer->info;
+
+ foreach_syllable (buffer, start, end)
+ reorder_syllable (buffer, start, end);
+
+ /* Zero syllables now... */
+ unsigned int count = buffer->len;
+ for (unsigned int i = 0; i < count; i++)
+ info[i].syllable() = 0;
+
+ HB_BUFFER_DEALLOCATE_VAR (buffer, use_category);
+}
+
+static bool
+compose_use (const hb_ot_shape_normalize_context_t *c,
+ hb_codepoint_t a,
+ hb_codepoint_t b,
+ hb_codepoint_t *ab)
+{
+ /* Avoid recomposing split matras. */
+ if (HB_UNICODE_GENERAL_CATEGORY_IS_MARK (c->unicode->general_category (a)))
+ return false;
+
+ return c->unicode->compose (a, b, ab);
+}
+
+
+const hb_ot_complex_shaper_t _hb_ot_complex_shaper_use =
+{
+ "use",
+ collect_features_use,
+ NULL, /* override_features */
+ data_create_use,
+ data_destroy_use,
+ NULL, /* preprocess_text */
+ HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT,
+ NULL, /* decompose */
+ compose_use,
+ setup_masks_use,
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE,
+ false, /* fallback_position */
+};
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-fallback-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-fallback-private.hh
index ec653513f1b..ec653513f1b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-fallback-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-fallback-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-fallback.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-fallback.cc
index 53274b502a5..53274b502a5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-fallback.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-fallback.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-normalize-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-normalize-private.hh
index c744e26451d..c744e26451d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-normalize-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-normalize-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-normalize.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-normalize.cc
index 8cc64af0144..8cc64af0144 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-normalize.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-normalize.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-private.hh
index 54ac2c3cf7c..54ac2c3cf7c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape.cc
index 5fb0e053745..f20be2aac8f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape.cc
@@ -59,10 +59,6 @@ static hb_tag_t horizontal_features[] = {
HB_TAG('r','c','l','t'),
};
-static hb_tag_t vertical_features[] = {
- HB_TAG('v','e','r','t'),
-};
-
static void
@@ -105,10 +101,13 @@ hb_ot_shape_collect_features (hb_ot_shape_planner_t *planner,
(horizontal_features[i] == HB_TAG('k','e','r','n') ?
F_HAS_FALLBACK : F_NONE));
else
- for (unsigned int i = 0; i < ARRAY_LENGTH (vertical_features); i++)
- map->add_feature (vertical_features[i], 1, F_GLOBAL |
- (vertical_features[i] == HB_TAG('v','k','r','n') ?
- F_HAS_FALLBACK : F_NONE));
+ {
+ /* We really want to find a 'vert' feature if there's any in the font, no
+ * matter which script/langsys it is listed (or not) under.
+ * See various bugs referenced from:
+ * https://github.com/behdad/harfbuzz/issues/63 */
+ map->add_feature (HB_TAG ('v','e','r','t'), 1, F_GLOBAL | F_GLOBAL_SEARCH);
+ }
if (planner->shaper->override_features)
planner->shaper->override_features (planner);
@@ -264,11 +263,22 @@ hb_insert_dotted_circle (hb_buffer_t *buffer, hb_font_t *font)
static void
hb_form_clusters (hb_buffer_t *buffer)
{
+ if (buffer->cluster_level != HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES)
+ return;
+
+ /* Loop duplicated in hb_ensure_native_direction(). */
+ unsigned int base = 0;
unsigned int count = buffer->len;
hb_glyph_info_t *info = buffer->info;
for (unsigned int i = 1; i < count; i++)
- if (HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&info[i])))
- buffer->merge_clusters (i - 1, i + 1);
+ {
+ if (likely (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&info[i]))))
+ {
+ buffer->merge_clusters (base, i);
+ base = i;
+ }
+ }
+ buffer->merge_clusters (base, count);
}
static void
@@ -283,7 +293,27 @@ hb_ensure_native_direction (hb_buffer_t *buffer)
if ((HB_DIRECTION_IS_HORIZONTAL (direction) && direction != hb_script_get_horizontal_direction (buffer->props.script)) ||
(HB_DIRECTION_IS_VERTICAL (direction) && direction != HB_DIRECTION_TTB))
{
- hb_buffer_reverse_clusters (buffer);
+ /* Same loop as hb_form_clusters().
+ * Since form_clusters() merged clusters already, we don't merge. */
+ unsigned int base = 0;
+ unsigned int count = buffer->len;
+ hb_glyph_info_t *info = buffer->info;
+ for (unsigned int i = 1; i < count; i++)
+ {
+ if (likely (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&info[i]))))
+ {
+ buffer->reverse_range (base, i);
+ if (buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS)
+ buffer->merge_clusters (base, i);
+ base = i;
+ }
+ }
+ buffer->reverse_range (base, count);
+ if (buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS)
+ buffer->merge_clusters (base, count);
+
+ buffer->reverse ();
+
buffer->props.direction = HB_DIRECTION_REVERSE (buffer->props.direction);
}
}
@@ -305,7 +335,7 @@ hb_ot_mirror_chars (hb_ot_shape_context_t *c)
hb_glyph_info_t *info = buffer->info;
for (unsigned int i = 0; i < count; i++) {
hb_codepoint_t codepoint = unicode->mirroring (info[i].codepoint);
- if (likely (codepoint == info[i].codepoint))
+ if (likely (codepoint == info[i].codepoint || !c->font->has_glyph (codepoint)))
info[i].mask |= rtlm_mask;
else
info[i].codepoint = codepoint;
@@ -380,6 +410,101 @@ hb_ot_shape_setup_masks (hb_ot_shape_context_t *c)
}
}
+static void
+hb_ot_zero_width_default_ignorables (hb_ot_shape_context_t *c)
+{
+ hb_buffer_t *buffer = c->buffer;
+
+ if (buffer->flags & HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES)
+ return;
+
+ unsigned int count = buffer->len;
+ hb_glyph_info_t *info = buffer->info;
+ hb_glyph_position_t *pos = buffer->pos;
+ unsigned int i = 0;
+ for (i = 0; i < count; i++)
+ if (unlikely (_hb_glyph_info_is_default_ignorable (&info[i])))
+ pos[i].x_advance = pos[i].y_advance = pos[i].x_offset = pos[i].y_offset = 0;
+}
+
+static void
+hb_ot_hide_default_ignorables (hb_ot_shape_context_t *c)
+{
+ hb_buffer_t *buffer = c->buffer;
+
+ if (buffer->flags & HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES)
+ return;
+
+ unsigned int count = buffer->len;
+ hb_glyph_info_t *info = buffer->info;
+ hb_glyph_position_t *pos = buffer->pos;
+ unsigned int i = 0;
+ for (i = 0; i < count; i++)
+ {
+ if (unlikely (_hb_glyph_info_is_default_ignorable (&info[i])))
+ break;
+ }
+
+ /* No default-ignorables found; return. */
+ if (i == count)
+ return;
+
+ hb_codepoint_t space;
+ if (c->font->get_glyph (' ', 0, &space))
+ {
+ /* Replace default-ignorables with a zero-advance space glyph. */
+ for (/*continue*/; i < count; i++)
+ {
+ if (_hb_glyph_info_is_default_ignorable (&info[i]))
+ info[i].codepoint = space;
+ }
+ }
+ else
+ {
+ /* Merge clusters and delete default-ignorables.
+ * NOTE! We can't use out-buffer as we have positioning data. */
+ unsigned int j = i;
+ for (; i < count; i++)
+ {
+ if (_hb_glyph_info_is_default_ignorable (&info[i]))
+ {
+ /* Merge clusters.
+ * Same logic as buffer->delete_glyph(), but for in-place removal. */
+
+ unsigned int cluster = info[i].cluster;
+ if (i + 1 < count && cluster == info[i + 1].cluster)
+ continue; /* Cluster survives; do nothing. */
+
+ if (j)
+ {
+ /* Merge cluster backward. */
+ if (cluster < info[j - 1].cluster)
+ {
+ unsigned int old_cluster = info[j - 1].cluster;
+ for (unsigned k = j; k && info[k - 1].cluster == old_cluster; k--)
+ info[k - 1].cluster = cluster;
+ }
+ continue;
+ }
+
+ if (i + 1 < count)
+ buffer->merge_clusters (i, i + 2); /* Merge cluster forward. */
+
+ continue;
+ }
+
+ if (j != i)
+ {
+ info[j] = info[i];
+ pos[j] = pos[i];
+ }
+ j++;
+ }
+ buffer->len = j;
+ }
+}
+
+
static inline void
hb_ot_map_glyphs_fast (hb_buffer_t *buffer)
{
@@ -625,6 +750,8 @@ hb_ot_position (hb_ot_shape_context_t *c)
hb_bool_t fallback = !hb_ot_position_complex (c);
+ hb_ot_zero_width_default_ignorables (c);
+
hb_ot_layout_position_finish (c->font, c->buffer);
if (fallback && c->plan->shaper->fallback_position)
@@ -642,53 +769,6 @@ hb_ot_position (hb_ot_shape_context_t *c)
}
-/* Post-process */
-
-static void
-hb_ot_hide_default_ignorables (hb_ot_shape_context_t *c)
-{
- if (c->buffer->flags & HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES)
- return;
-
- hb_codepoint_t space;
- enum {
- SPACE_DONT_KNOW,
- SPACE_AVAILABLE,
- SPACE_UNAVAILABLE
- } space_status = SPACE_DONT_KNOW;
-
- unsigned int count = c->buffer->len;
- hb_glyph_info_t *info = c->buffer->info;
- hb_glyph_position_t *pos = c->buffer->pos;
- unsigned int j = 0;
- for (unsigned int i = 0; i < count; i++)
- {
- if (unlikely (!_hb_glyph_info_ligated (&info[i]) &&
- _hb_glyph_info_is_default_ignorable (&info[i])))
- {
- if (space_status == SPACE_DONT_KNOW)
- space_status = c->font->get_glyph (' ', 0, &space) ? SPACE_AVAILABLE : SPACE_UNAVAILABLE;
-
- if (space_status == SPACE_AVAILABLE)
- {
- info[i].codepoint = space;
- pos[i].x_advance = 0;
- pos[i].y_advance = 0;
- }
- else
- continue; /* Delete it. XXX Merge clusters? */
- }
- if (j != i)
- {
- info[j] = info[i];
- pos[j] = pos[i];
- }
- j++;
- }
- c->buffer->len = j;
-}
-
-
/* Pull it all together! */
static void
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape.h
index 1402f54acc5..1402f54acc5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-tag.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-tag.cc
index 61c38b19626..61c38b19626 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-tag.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-tag.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-tag.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-tag.h
index 1bf12ab3c09..1bf12ab3c09 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-tag.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-tag.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot.h
index 47c92a58e4b..47c92a58e4b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-private.hh
index 45afc20b1f0..8112934324d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-private.hh
@@ -193,7 +193,8 @@ static inline unsigned int ARRAY_LENGTH (const Type (&)[n]) { return n; }
#define _ASSERT_STATIC0(_line, _cond) _ASSERT_STATIC1 (_line, (_cond))
#define ASSERT_STATIC(_cond) _ASSERT_STATIC0 (__LINE__, (_cond))
-#define ASSERT_STATIC_EXPR(_cond)((void) sizeof (char[(_cond) ? 1 : -1]))
+/* Note: C++ allows sizeof() of variable-lengh arrays. So, if _cond is not
+ * constant, it still compiles (ouch!), but at least we'll get a -Wvla warning. */
#define ASSERT_STATIC_EXPR_ZERO(_cond) (0 * sizeof (char[(_cond) ? 1 : -1]))
#define _PASTE1(a,b) a##b
@@ -845,9 +846,11 @@ hb_in_ranges (T u, T lo1, T hi1, T lo2, T hi2, T lo3, T hi3)
/* Useful for set-operations on small enums.
* For example, for testing "x ∈ {x1, x2, x3}" use:
- * (FLAG(x) & (FLAG(x1) | FLAG(x2) | FLAG(x3)))
+ * (FLAG_SAFE(x) & (FLAG(x1) | FLAG(x2) | FLAG(x3)))
*/
-#define FLAG(x) (1<<(x))
+#define FLAG(x) (ASSERT_STATIC_EXPR_ZERO ((x) < 32) + (1U << (x)))
+#define FLAG_SAFE(x) (1U << (x))
+#define FLAG_UNSAFE(x) ((x) < 32 ? FLAG_SAFE(x) : 0)
#define FLAG_RANGE(x,y) (ASSERT_STATIC_EXPR_ZERO ((x) < (y)) + FLAG(y+1) - FLAG(x))
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-set-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-set-private.hh
index bba40151736..3c302b1daf6 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-set-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-set-private.hh
@@ -36,7 +36,15 @@
* "approximate member query". Conceptually these are like Bloom
* Filter and Quotient Filter, however, much smaller, faster, and
* designed to fit the requirements of our uses for glyph coverage
- * queries. As a result, our filters have much higher.
+ * queries.
+ *
+ * Our filters are highly accurate if the lookup covers fairly local
+ * set of glyphs, but fully flooded and ineffective if coverage is
+ * all over the place.
+ *
+ * The frozen-set can be used instead of a digest, to trade more
+ * memory for 100% accuracy, but in practice, that doesn't look like
+ * an attractive trade-off.
*/
template <typename mask_t, unsigned int shift>
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-set.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-set.cc
index cb7fcdbf64c..cb7fcdbf64c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-set.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-set.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-set.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-set.h
index bafdae96333..bafdae96333 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-set.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-set.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shape-plan-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shape-plan-private.hh
index 607da5e7791..607da5e7791 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shape-plan-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shape-plan-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shape-plan.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shape-plan.cc
index d2f293d69de..d2f293d69de 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shape-plan.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shape-plan.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shape-plan.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shape-plan.h
index 8f54552f90b..8f54552f90b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shape-plan.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shape-plan.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shape.cc
index 5ddde5ad59d..5ddde5ad59d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shape.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shape.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shape.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shape.h
index b665509a0dd..b665509a0dd 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shape.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shape.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shaper-impl-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shaper-impl-private.hh
index 7844081e95b..7844081e95b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shaper-impl-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shaper-impl-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shaper-list.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shaper-list.hh
index 6c537d49215..6c537d49215 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shaper-list.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shaper-list.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shaper-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shaper-private.hh
index d1d1146dad2..d1d1146dad2 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shaper-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shaper-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shaper.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shaper.cc
index 580b95c84b4..580b95c84b4 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-shaper.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-shaper.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ucdn.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ucdn.cc
index 5b53821f923..b4a58332445 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ucdn.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ucdn.cc
@@ -148,6 +148,12 @@ static const hb_script_t ucdn_script_translate[] =
HB_SCRIPT_SIDDHAM,
HB_SCRIPT_TIRHUTA,
HB_SCRIPT_WARANG_CITI,
+ HB_SCRIPT_AHOM,
+ HB_SCRIPT_ANATOLIAN_HIEROGLYPHS,
+ HB_SCRIPT_HATRAN,
+ HB_SCRIPT_MULTANI,
+ HB_SCRIPT_OLD_HUNGARIAN,
+ HB_SCRIPT_SIGNWRITING,
};
static hb_unicode_combining_class_t
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-unicode-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-unicode-private.hh
index a2c59da274a..968bca5567d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-unicode-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-unicode-private.hh
@@ -308,7 +308,7 @@ extern HB_INTERNAL const hb_unicode_funcs_t _hb_unicode_funcs_nil;
/* Misc */
#define HB_UNICODE_GENERAL_CATEGORY_IS_MARK(gen_cat) \
- (FLAG (gen_cat) & \
+ (FLAG_SAFE (gen_cat) & \
(FLAG (HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK) | \
FLAG (HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) | \
FLAG (HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)))
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-unicode.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-unicode.cc
index cf2032fd63c..6b32faf667f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-unicode.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-unicode.cc
@@ -146,14 +146,9 @@ hb_unicode_funcs_get_default (void)
}
#if !defined(HB_NO_UNICODE_FUNCS) && defined(HB_UNICODE_FUNCS_NIL)
-#ifdef _MSC_VER
-#pragma error("Could not find any Unicode functions implementation, you have to provide your own.")
-#pragma error("Consider building hb-ucdn.c. If you absolutely want to build without any, check the code.")
-#else
#error "Could not find any Unicode functions implementation, you have to provide your own"
#error "Consider building hb-ucdn.c. If you absolutely want to build without any, check the code."
#endif
-#endif
/**
* hb_unicode_funcs_create: (Xconstructor)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-unicode.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-unicode.h
index bf1796dcafd..bf1796dcafd 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-unicode.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-unicode.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-uniscribe.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-uniscribe.cc
index e7bcad2ea86..e7bcad2ea86 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-uniscribe.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-uniscribe.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-uniscribe.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-uniscribe.h
index 001ab38ea87..001ab38ea87 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-uniscribe.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-uniscribe.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-utf-private.hh b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-utf-private.hh
index 14d3c2e369b..14d3c2e369b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-utf-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-utf-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-version.h.in b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-version.h.in
index 2517160d18b..2517160d18b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-version.h.in
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-version.h.in
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-warning.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-warning.cc
index e69fff234cd..8f322bcb10d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-warning.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-warning.cc
@@ -29,21 +29,11 @@
#if defined(HB_ATOMIC_INT_NIL)
-#ifdef _MSC_VER
-#pragma error("Could not find any system to define atomic_int macros, library WILL NOT be thread-safe")
-#pragma error("Check hb-atomic-private.hh for possible resolutions.")
-#else
#error "Could not find any system to define atomic_int macros, library WILL NOT be thread-safe"
#error "Check hb-atomic-private.hh for possible resolutions."
#endif
-#endif
#if defined(HB_MUTEX_IMPL_NIL)
-#ifdef _MSC_VER
-#pragma error("Could not find any system to define mutex macros, library WILL NOT be thread-safe")
-#pragma error("Check hb-mutex-private.hh for possible resolutions.")
-#else
#error "Could not find any system to define mutex macros, library WILL NOT be thread-safe"
#error "Check hb-mutex-private.hh for possible resolutions."
#endif
-#endif
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb.h b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb.h
index c5a938a3818..c5a938a3818 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/main.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/main.cc
index f9708cc948e..f9708cc948e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/main.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/main.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/test-buffer-serialize.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/test-buffer-serialize.cc
index 18c46e9524b..18c46e9524b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/test-buffer-serialize.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/test-buffer-serialize.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/test-size-params.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/test-size-params.cc
index 35d9e3c8e25..35d9e3c8e25 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/test-size-params.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/test-size-params.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/test-would-substitute.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/test-would-substitute.cc
index 8ea87cdf397..8ea87cdf397 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/test-would-substitute.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/test-would-substitute.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/test.cc b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/test.cc
index a8fe046f34c..a8fe046f34c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/test.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/test.cc
diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac
index e733dc142da..25eb9ce3874 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.41])
+m4_define([harfbuzz_version], [1.0.1])