diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2015-07-28 08:29:07 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2015-07-28 08:29:07 +0000 |
commit | 83c64f10045f775f72283696d986a0311454a453 (patch) | |
tree | 0b2728f0a744630b827ff85607362d3e0820aa93 /Build/source | |
parent | f26301cb391fc31102a4abea7bb7468019d0fe58 (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/README | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/ChangeLog | 5 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/Makefile.am | 15 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/Makefile.in | 38 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/configure | 36 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-sea-machine.hh | 224 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-sea-machine.rl | 102 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.41/src/hb-ot-shape-complex-sea.cc | 380 | ||||
-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-x | Build/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-x | Build/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-x | Build/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-x | Build/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-x | Build/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-x | Build/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-x | Build/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-x | Build/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-x | Build/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-x | Build/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.hh | 548 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-use-machine.rl | 180 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-1.0.1/src/hb-ot-shape-complex-use.cc | 593 | ||||
-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.ac | 2 |
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]) |