diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2015-03-05 07:40:24 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2015-03-05 07:40:24 +0000 |
commit | a0e2953a62c9368a7172dc5c277edd4351d541bb (patch) | |
tree | 4b8f41c75cdd3f6c34fc3cec92260adfaa4d9fc4 | |
parent | 0d23767cc46f7d5c96d9bdc17c98b56d0ce95ffa (diff) |
harfbuzz 0.9.39
git-svn-id: svn://tug.org/texlive/trunk@36438 c570f23f-e606-0410-a88d-b1316a301751
-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.in | 4 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/configure | 32 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39-PATCHES/ChangeLog (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38-PATCHES/ChangeLog) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39-PATCHES/TL-Changes (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38-PATCHES/TL-Changes) | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/AUTHORS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/AUTHORS) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/Android.mk (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/Android.mk) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/ChangeLog (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/ChangeLog) | 1342 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/Makefile.am (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/Makefile.am) | 1 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/NEWS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/NEWS) | 10 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/README (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/README) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/README.python (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/README.python) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/THANKS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/THANKS) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/TODO (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/TODO) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.39/autogen.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/autogen.sh) | 9 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/config.h.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/config.h.in) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/configure.ac (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/configure.ac) | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/gtk-doc.make (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/gtk-doc.make) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/harfbuzz.doap (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/harfbuzz.doap) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/Makefile.am (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/Makefile.am) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-c-linkage-decls.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-c-linkage-decls.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-defs.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-defs.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-header-guards.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-header-guards.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-includes.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-includes.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-libstdc++.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-libstdc++.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-static-inits.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-static-inits.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-symbols.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-symbols.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/gen-arabic-table.py (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/gen-arabic-table.py) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/gen-indic-table.py (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/gen-indic-table.py) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/harfbuzz-gobject.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/harfbuzz-gobject.pc.in) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/harfbuzz-icu.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/harfbuzz-icu.pc.in) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/harfbuzz.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/harfbuzz.pc.in) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-atomic-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-atomic-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-blob.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-blob.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-blob.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-blob.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-deserialize-json.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-deserialize-json.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-deserialize-json.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-deserialize-json.rl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-deserialize-text.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-deserialize-text.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-deserialize-text.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-deserialize-text.rl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-serialize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-serialize.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer.cc) | 38 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer.h) | 8 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-cache-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-cache-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-common.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-common.cc) | 1 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-common.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-common.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-coretext.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-coretext.cc) | 37 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-coretext.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-coretext.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-deprecated.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-deprecated.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-face-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-face-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-face.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-face.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-face.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-face.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-fallback-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-fallback-shape.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-font-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-font-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-font.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-font.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-font.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-font.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ft.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ft.cc) | 8 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ft.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ft.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-glib.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-glib.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-glib.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-glib.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-gobject-enums.cc.tmpl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-gobject-enums.cc.tmpl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-gobject-enums.h.tmpl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-gobject-enums.h.tmpl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-gobject-structs.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-gobject-structs.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-gobject-structs.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-gobject-structs.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-gobject.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-gobject.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-graphite2.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-graphite2.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-graphite2.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-graphite2.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-icu.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-icu.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-icu.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-icu.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-mutex-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-mutex-private.hh) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-object-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-object-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-open-file-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-open-file-private.hh) | 15 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-open-type-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-open-type-private.hh) | 96 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-cmap-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-cmap-table.hh) | 35 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-font.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-font.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-font.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-font.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-head-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-head-table.hh) | 6 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-hhea-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-hhea-table.hh) | 3 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-hmtx-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-hmtx-table.hh) | 3 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-common-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-common-private.hh) | 97 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-gdef-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-gdef-table.hh) | 30 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-gpos-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-gpos-table.hh) | 246 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-gsub-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-gsub-table.hh) | 171 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-gsubgpos-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-gsubgpos-private.hh) | 380 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-jstf-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-jstf-table.hh) | 12 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-private.hh) | 5 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout.cc) | 105 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-map-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-map-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-map.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-map.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-maxp-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-maxp-table.hh) | 6 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-name-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-name-table.hh) | 8 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-arabic-fallback.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-arabic-fallback.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-arabic-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-arabic-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-arabic-win1256.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-arabic-win1256.hh) | 1 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-arabic.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-arabic.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-default.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-default.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-hangul.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-hangul.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-hebrew.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-hebrew.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-indic-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-indic-machine.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-indic-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-indic-machine.rl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-indic-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-indic-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-indic-table.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-indic-table.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-indic.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-indic.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-myanmar-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-myanmar-machine.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-myanmar-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-myanmar-machine.rl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-myanmar.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-myanmar.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-sea-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-sea-machine.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-sea-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-sea-machine.rl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-sea.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-sea.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-thai.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-thai.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-tibetan.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-tibetan.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-fallback-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-fallback-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-fallback.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-fallback.cc) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-normalize-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-normalize-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-normalize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-normalize.cc) | 9 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape.cc) | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-tag.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-tag.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-tag.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-tag.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-private.hh) | 82 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-set-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-set-private.hh) | 57 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-set.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-set.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-set.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-set.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shape-plan-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shape-plan-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shape-plan.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shape-plan.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shape-plan.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shape-plan.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shape.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shape.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shape.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shaper-impl-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shaper-impl-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shaper-list.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shaper-list.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shaper-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shaper-private.hh) | 7 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shaper.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shaper.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ucdn.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ucdn.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-unicode-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-unicode-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-unicode.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-unicode.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-unicode.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-unicode.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-uniscribe.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-uniscribe.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-uniscribe.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-uniscribe.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-utf-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-utf-private.hh) | 57 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-version.h.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-version.h.in) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-warning.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-warning.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/main.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/main.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/test-buffer-serialize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/test-buffer-serialize.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/test-size-params.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/test-size-params.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/test-would-substitute.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/test-would-substitute.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/test.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/test.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/version.ac | 2 |
153 files changed, 1912 insertions, 1032 deletions
diff --git a/Build/source/libs/README b/Build/source/libs/README index c7693f1cae1..364f72fc504 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.38 - checked 26jan15 +harfbuzz 0.9.39 - checked 5mar15 http://www.freedesktop.org/software/harfbuzz/release/ icu 54.1 (release) - checked 2oct14 diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog index ce16ee9ea59..d676064c1be 100644 --- a/Build/source/libs/harfbuzz/ChangeLog +++ b/Build/source/libs/harfbuzz/ChangeLog @@ -1,3 +1,8 @@ +2015-03-05 Peter Breitenlohner <peb@mppmu.mpg.de> + + Import harfbuzz-0.9.39. + * version.ac: Adjust. + 2015-02-16 Peter Breitenlohner <peb@mppmu.mpg.de> * Makefile.am: Use the fragment ../../am/dist_hook.am. diff --git a/Build/source/libs/harfbuzz/Makefile.in b/Build/source/libs/harfbuzz/Makefile.in index cad28b6c1bf..6fb80d2b26d 100644 --- a/Build/source/libs/harfbuzz/Makefile.in +++ b/Build/source/libs/harfbuzz/Makefile.in @@ -462,7 +462,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.38/src/hb-version.h.in \ + $(top_srcdir)/harfbuzz-0.9.39/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 \ @@ -794,7 +794,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.38/src/hb-version.h.in +hb-version.h: $(top_builddir)/config.status $(top_srcdir)/harfbuzz-0.9.39/src/hb-version.h.in cd $(top_builddir) && $(SHELL) ./config.status $@ clean-noinstLIBRARIES: diff --git a/Build/source/libs/harfbuzz/configure b/Build/source/libs/harfbuzz/configure index 2c5ea8d869e..e8ed7a662ad 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.38. +# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 0.9.39. # # 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.38' -PACKAGE_STRING='harfbuzz (TeX Live) 0.9.38' +PACKAGE_VERSION='0.9.39' +PACKAGE_STRING='harfbuzz (TeX Live) 0.9.39' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' -ac_unique_file="harfbuzz-0.9.38/src/harfbuzz.pc.in" +ac_unique_file="harfbuzz-0.9.39/src/harfbuzz.pc.in" # Factoring default headers for most tests. ac_includes_default="\ #include <stdio.h> @@ -1325,7 +1325,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.38 to adapt to many kinds of systems. +\`configure' configures harfbuzz (TeX Live) 0.9.39 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1396,7 +1396,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of harfbuzz (TeX Live) 0.9.38:";; + short | recursive ) echo "Configuration of harfbuzz (TeX Live) 0.9.39:";; esac cat <<\_ACEOF @@ -1509,7 +1509,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -harfbuzz (TeX Live) configure 0.9.38 +harfbuzz (TeX Live) configure 0.9.39 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2099,7 +2099,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.38, which was +It was created by harfbuzz (TeX Live) $as_me 0.9.39, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4022,7 +4022,7 @@ fi # Define the identity of the package. PACKAGE='harfbuzz--tex-live-' - VERSION='0.9.38' + VERSION='0.9.39' cat >>confdefs.h <<_ACEOF @@ -4225,8 +4225,8 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags HB_VERSION_MAJOR=0 HB_VERSION_MINOR=9 -HB_VERSION_MICRO=38 -HB_VERSION=0.9.38 +HB_VERSION_MICRO=39 +HB_VERSION=0.9.39 ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -6642,14 +6642,14 @@ $as_echo "#define HAVE_INTEL_ATOMIC_PRIMITIVES 1" >>confdefs.h fi -HARFBUZZ_TREE=harfbuzz-0.9.38 +HARFBUZZ_TREE=harfbuzz-0.9.39 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.38/src/hb-version.h.in" +ac_config_files="$ac_config_files Makefile include/Makefile hb-version.h:harfbuzz-0.9.39/src/hb-version.h.in" cat >confcache <<\_ACEOF @@ -7198,7 +7198,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.38, which was +This file was extended by harfbuzz (TeX Live) $as_me 0.9.39, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -7264,7 +7264,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.38 +harfbuzz (TeX Live) config.status 0.9.39 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -7397,7 +7397,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.38/src/hb-version.h.in" ;; + "hb-version.h") CONFIG_FILES="$CONFIG_FILES hb-version.h:harfbuzz-0.9.39/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.38-PATCHES/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-0.9.39-PATCHES/ChangeLog index 62fff4f77ce..62fff4f77ce 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38-PATCHES/ChangeLog +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39-PATCHES/ChangeLog diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38-PATCHES/TL-Changes b/Build/source/libs/harfbuzz/harfbuzz-0.9.39-PATCHES/TL-Changes index de06d232879..3b9b4d7cbc8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38-PATCHES/TL-Changes +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39-PATCHES/TL-Changes @@ -1,4 +1,4 @@ -Changes applied to the harfbuzz-0.9.38/ tree as obtained from: +Changes applied to the harfbuzz-0.9.39/ tree as obtained from: http://www.freedesktop.org/software/harfbuzz/release/ Removed: diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/AUTHORS b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/AUTHORS index 81cdc4cf37f..81cdc4cf37f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/AUTHORS +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/AUTHORS diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/Android.mk b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/Android.mk index 05525078516..05525078516 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/Android.mk +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/Android.mk diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/ChangeLog index f56dd06baea..4a6a594c481 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/ChangeLog +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/ChangeLog @@ -1,6 +1,728 @@ +commit 98e3ea8e34c798ce003e946c9a150bb41be9d09b +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Mar 4 12:03:39 2015 -0800 + + Fix hb-uniscribe build + + src/hb-ot-name-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8ac345e5c0ed0aad6547592ea0839aabfb4ba980 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Mar 2 16:06:55 2015 -0800 + + Fix reverse_range() to only reverse alt array if positions are used + + In hb-coretext, when we were using scratch buffer for book-keeping, + a reverse_range() caused by the notdef-insertion loop could mess up + our log_clusters. Ouch! + + src/hb-buffer.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1e03d7ac83f3e17aafed1e37390d9ff8394e36da +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Feb 26 13:58:32 2015 -0800 + + Better error message if libtool is not installed + + Fixes https://github.com/behdad/harfbuzz/pull/88 + + autogen.sh | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 6c918e2997fb82e89485f2b50bee2bf4fcd70592 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Feb 26 13:55:34 2015 -0800 + + Clean up gtk-doc.make + + Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 5ec5875acb12cf07447c9ebfb03212601368dfc4 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Feb 26 13:53:05 2015 -0800 + + Install git.mk in docs/ + + docs/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit d146678d103425b3da7ef393bc6d66f6ba4c5593 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Feb 26 13:52:50 2015 -0800 + + Update git.mk from upstream + + git.mk | 35 ++++++++++++++++++++++++++++------- + 1 file changed, 28 insertions(+), 7 deletions(-) + +commit 5f541f8f7be82f29b77b481827deb212e12d53e4 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Feb 21 16:51:17 2015 +0300 + + Minor refactoring + + src/hb-private.hh | 44 ++++++++++++++++++++++++++++---------------- + 1 file changed, 28 insertions(+), 16 deletions(-) + +commit ef79bdf73bbfde1bfaa222834809d105ab7755b3 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Feb 21 16:49:15 2015 +0300 + + Minor + + src/hb-ot-layout-common-private.hh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 68e04afbb1e1073c47474f7a4d6d2cacf7057f6f +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Feb 21 16:30:28 2015 +0300 + + Typo + + src/hb-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 55553699b38d6481fbfacd0a32fc266e55553b34 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Feb 21 16:29:08 2015 +0300 + + Minor + + src/hb-private.hh | 2 -- + 1 file changed, 2 deletions(-) + +commit 5175300fbaf4ff19b7d38c14c86331bb614b0390 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Feb 21 12:50:01 2015 +0300 + + [layout] Fix comparison of GlyphID and hb_codepoint_t + + Before, the IntType::cmp functions providing this and was truncating + the hb_codepoint_t to 16bits before comparison. I have no idea how + this was never discovered, and I'm too lazy to try to reproduce this + with Pango (which uses non-16bit codepoint numbers for missing + glyphs). + + src/hb-open-type-private.hh | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 7cce809cb11e0ce65dbdab899779ece3dc337763 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Feb 21 12:41:08 2015 +0300 + + Remove unused (and wrong as of a few commits ago) cmp() function + + src/hb-open-type-private.hh | 1 - + 1 file changed, 1 deletion(-) + +commit 8e3d4bae033bdec649676da26cfc3eb7610832a8 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Feb 21 12:31:59 2015 +0300 + + Minor + + src/hb-ot-layout-common-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f47cf1f12dd1fa3cd3aa84502139caca9d469af8 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Feb 21 11:45:22 2015 +0300 + + Minor + + src/hb-ot-layout.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 640b66c6348653bfd7cf88ea9caa2133c0eb949f +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Feb 19 17:30:05 2015 +0300 + + [layout] If lookup has only one subtable, move the forward loop down + to subtable + + I was hoping to see a nice speedup, but it resulted in a very + minor one. + + src/hb-ot-layout.cc | 33 ++++++++++++++++++++++++++++++++- + 1 file changed, 32 insertions(+), 1 deletion(-) + +commit e2f50f2a7ebf9882ea89dc3f0c740e7fce964e37 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Feb 19 17:15:05 2015 +0300 + + [layout] Add apply_forward / apply_backward + + src/hb-ot-layout.cc | 69 + +++++++++++++++++++++++++++++++++++------------------ + 1 file changed, 46 insertions(+), 23 deletions(-) + +commit 1d4a328472f094c0d75a062f6e176c6b1875cfdc +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Feb 19 11:33:30 2015 +0300 + + [layout] Remove unneeded return value from apply() + + src/hb-ot-layout.cc | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +commit bbdd6fd21cc2e079defff7cb17c3eb8eff3f9e09 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Feb 19 17:03:02 2015 +0300 + + Minor simpilfy BEInt + + src/hb-open-type-private.hh | 25 ++----------------------- + 1 file changed, 2 insertions(+), 23 deletions(-) + +commit 88a399acdc0fcb060803da0e7db56de2866981e3 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Feb 19 16:57:12 2015 +0300 + + Optimize IntType comparison to avoid branches for 16bit numbers + + src/hb-open-type-private.hh | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit 37de2d533126245774417234e3536fcfb24f3a6b +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Feb 19 16:55:51 2015 +0300 + + Minor simplify IntType + + src/hb-open-type-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bd047d3b7f04d551c0a26bc0ce9b9d61481e34e1 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Feb 19 10:47:18 2015 +0300 + + [layout] Minor + + src/hb-ot-layout-gpos-table.hh | 6 ++++++ + src/hb-ot-layout-gsub-table.hh | 6 ++++++ + src/hb-ot-layout.cc | 4 ++-- + 3 files changed, 14 insertions(+), 2 deletions(-) + +commit b9d3f60520c022dc952e65a66eb138d1f7cae2e1 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Feb 19 10:42:41 2015 +0300 + + [layout] Minor + + src/hb-ot-layout.cc | 15 ++++----------- + 1 file changed, 4 insertions(+), 11 deletions(-) + +commit 1a2322134a5d7bba990da28baf893b35879a5a7a +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Feb 19 10:40:23 2015 +0300 + + [layout] Don't check glyph props against lookup flags when recursing + + Shouldn't be needed. I have a hard time imagining this breaking any + legitimate use case. + + src/hb-ot-layout-gpos-table.hh | 10 +--------- + src/hb-ot-layout-gsub-table.hh | 10 +--------- + 2 files changed, 2 insertions(+), 18 deletions(-) + +commit 095a1257cc3cc56b044b4cd842a92f0d0f933a50 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Feb 19 10:29:41 2015 +0300 + + [layout] Port sanitize() to use dispatch() + + Needed some rework of Extension table. Hopefully I got it right, and + the new template usage doesn't break any compilers... + + src/hb-open-type-private.hh | 5 ++- + src/hb-ot-layout-gpos-table.hh | 82 + +---------------------------------- + src/hb-ot-layout-gsub-table.hh | 72 ++----------------------------- + src/hb-ot-layout-gsubgpos-private.hh | 84 + ++++++++++++------------------------ + 4 files changed, 37 insertions(+), 206 deletions(-) + +commit 758fb20630f84c3d373cda37974b88f16c02995e +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Feb 18 13:45:03 2015 +0300 + + Remove unused macro + + src/hb-ot-shape-complex-arabic-win1256.hh | 1 - + 1 file changed, 1 deletion(-) + +commit 40c58923cbf689c465f9b65334c455a9b7f71ab0 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Feb 18 13:18:46 2015 +0300 + + [layout] Refactor Lookup::dispatch() + + src/hb-ot-layout-common-private.hh | 20 ++++++++++++++++++++ + src/hb-ot-layout-gpos-table.hh | 12 +----------- + src/hb-ot-layout-gsub-table.hh | 12 +----------- + src/hb-ot-layout-gsubgpos-private.hh | 6 ------ + 4 files changed, 22 insertions(+), 28 deletions(-) + +commit 70366f5d19df2e654f0933474fecf1aa16e27812 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Feb 18 13:09:54 2015 +0300 + + [layout] Refactor get_subtable() + + src/hb-ot-layout-common-private.hh | 12 ++++++++++++ + src/hb-ot-layout-gpos-table.hh | 4 ++-- + src/hb-ot-layout-gsub-table.hh | 6 +++--- + 3 files changed, 17 insertions(+), 5 deletions(-) + +commit f72f326aea6d1e93f63040730f7aecd401676c1c +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Feb 17 19:18:07 2015 +0300 + + Minor + + src/hb-ot-layout-gpos-table.hh | 1 - + 1 file changed, 1 deletion(-) + +commit 8e36ccfd4f076888076ca176c055c18104af03b6 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Feb 17 19:15:34 2015 +0300 + + [layout] Use dispatch() for add_coverage() + + src/hb-ot-layout-gpos-table.hh | 12 ++---------- + src/hb-ot-layout-gsub-table.hh | 12 ++---------- + src/hb-ot-layout-gsubgpos-private.hh | 12 ++++++++++-- + 3 files changed, 14 insertions(+), 22 deletions(-) + +commit 50b8dc79daffc7ef671dd5eedfea47f8d5e946f4 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Feb 17 18:14:17 2015 +0300 + + [layout] Add may_dispatch() + + No functional change right now. + + src/hb-ot-layout-gpos-table.hh | 7 +++++++ + src/hb-ot-layout-gsub-table.hh | 6 ++++++ + src/hb-ot-layout-gsubgpos-private.hh | 12 ++++++++++++ + 3 files changed, 25 insertions(+) + +commit de2118ed7a998a1df9b28fd1be96b4af89ed82c3 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Feb 17 17:27:44 2015 +0300 + + Make sanitize() a const method + + This makes a lot of code safer. We only try modifying the object + in one + place, after making sure it's safe to do so. So, do a const_cast<> in + that one place... + + src/hb-open-file-private.hh | 15 +++-- + src/hb-open-type-private.hh | 51 +++++++++++------ + src/hb-ot-cmap-table.hh | 35 ++++++++---- + src/hb-ot-head-table.hh | 6 +- + src/hb-ot-hhea-table.hh | 3 +- + src/hb-ot-hmtx-table.hh | 3 +- + src/hb-ot-layout-common-private.hh | 58 ++++++++++++------- + src/hb-ot-layout-gdef-table.hh | 30 ++++++---- + src/hb-ot-layout-gpos-table.hh | 108 + +++++++++++++++++++++++------------ + src/hb-ot-layout-gsub-table.hh | 58 ++++++++++++------- + src/hb-ot-layout-gsubgpos-private.hh | 65 +++++++++++++-------- + src/hb-ot-layout-jstf-table.hh | 12 ++-- + src/hb-ot-maxp-table.hh | 6 +- + src/hb-ot-name-table.hh | 6 +- + 14 files changed, 296 insertions(+), 160 deletions(-) + +commit 6759ed95a3bec2874826376b68ebff19ba277ef2 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Feb 17 16:05:30 2015 +0300 + + Minor + + src/hb-ot-layout-gpos-table.hh | 6 ++---- + src/hb-ot-layout-gsub-table.hh | 6 ++---- + 2 files changed, 4 insertions(+), 8 deletions(-) + +commit 6b599dac1f814a3c900300241d4c492a8f8b66d2 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Feb 17 16:04:07 2015 +0300 + + Remove unnecessary check in sanitize + + src/hb-ot-layout-gpos-table.hh | 2 -- + src/hb-ot-layout-gsub-table.hh | 2 -- + 2 files changed, 4 deletions(-) + +commit 365576d246949f9d587e90cf0539dc0381e4d0a3 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jan 29 13:59:42 2015 +0100 + + [layout] Allocate iters in the context + + Can be further optimized, but I think I didn't break anything. + + Saves another 3% off Roboto shaping. + + src/hb-ot-layout-gpos-table.hh | 18 ++++++------------ + src/hb-ot-layout-gsubgpos-private.hh | 21 +++++++++++++-------- + src/hb-ot-shape-fallback.cc | 2 +- + 3 files changed, 20 insertions(+), 21 deletions(-) + +commit 514564f5444b8ad2f210b1e3d7d66378f7275317 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jan 29 13:48:48 2015 +0100 + + [layout] Move skippy_iter setup from constructor into init() + + src/hb-ot-layout-gpos-table.hh | 18 ++++++++++++------ + src/hb-ot-layout-gsubgpos-private.hh | 28 +++++++++++++++------------- + src/hb-ot-shape-fallback.cc | 3 ++- + 3 files changed, 29 insertions(+), 20 deletions(-) + +commit b051be542a8945ec14b0192bbc285f3e1a78c8f1 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jan 29 13:40:39 2015 +0100 + + [lookup] Add skippy_iter.reset() + + Towards reducing the cost of initializing skippy_iter() + + src/hb-ot-layout-gpos-table.hh | 18 ++++++++++++------ + src/hb-ot-layout-gsubgpos-private.hh | 27 ++++++++++++++++++--------- + src/hb-ot-shape-fallback.cc | 3 ++- + 3 files changed, 32 insertions(+), 16 deletions(-) + +commit 2cecc38c7cf49b2cf697efa7e974ceee7055f2c5 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jan 29 13:32:05 2015 +0100 + + [layout] Shuffle code around + + src/hb-ot-layout-gsubgpos-private.hh | 111 + ++++++++++++++++++----------------- + 1 file changed, 56 insertions(+), 55 deletions(-) + +commit 696266981df5ef6c62ad0115133dad1d6c1d9acc +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jan 29 13:08:41 2015 +0100 + + [layout] Merge forward and backward iterators + + src/hb-ot-layout-gpos-table.hh | 12 +++--- + src/hb-ot-layout-gsubgpos-private.hh | 71 + ++++++++---------------------------- + src/hb-ot-shape-fallback.cc | 2 +- + 3 files changed, 23 insertions(+), 62 deletions(-) + +commit 1f038eec3c0dd6331036f795614fe1ddcbf613b0 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jan 29 13:05:25 2015 +0100 + + [layout] Fix backward reject() + + Has no functional effect since reject was never used with + match_glyph_data. + + src/hb-ot-layout-gsubgpos-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 37d13acd8d414a4b53fac0152addfadecf755cd4 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jan 29 11:38:01 2015 +0100 + + [layout] Remove some unnecessary checks in skippy + + src/hb-ot-layout-gpos-table.hh | 3 --- + src/hb-ot-layout-gsubgpos-private.hh | 9 ++------- + 2 files changed, 2 insertions(+), 10 deletions(-) + +commit baa14e18148d3f5493f78b4fe9e0c835a01f50f7 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jan 29 11:08:43 2015 +0100 + + [lookup] Don't initialize skippy if coverage match fails + + Currently: + + - Initializing skippy is very expensive, + + - Our lookup accelerator (using set-digests) can be very ineffecite, + + As such, we end up many times initializing skippy but then failing + coverage check. Reordering fixes that. + + When, later, we fix our accelerator to have truly small false-positive + rate (for example by using the frozen-sets), then we might want to + reorder these checks such that we wouldn't calculate coverage number + if skippy is going to fail. + + This shows a 5% speedup with Roboto already. + + src/hb-ot-layout-gpos-table.hh | 15 ++++++--------- + 1 file changed, 6 insertions(+), 9 deletions(-) + +commit 7788993bc19bf122f1e143ab64cc1da2ed1865a3 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jan 28 23:01:12 2015 -0800 + + [layout] Use setter method to set c->lookup_props + + src/hb-ot-layout-gpos-table.hh | 2 +- + src/hb-ot-layout-gsub-table.hh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit f4ee48fd7b312550faf9b0be4cd1b2f2849dd08d +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jan 28 22:53:54 2015 -0800 + + [layout] Remove unused wrapper method + + src/hb-ot-layout-gsubgpos-private.hh | 2 -- + 1 file changed, 2 deletions(-) + +commit 7b7129c7a997def599fb4d2ba05fda40d27aed20 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jan 28 21:46:07 2015 -0800 + + Add hb_frozen_set_t + + I experimented with replacing use of hb_set_digest_t with this new + hb_frozen_set_t, hoping to get a huge speedup for busy lookups + (like kern lookup in Roboto), but I only got 6% speendup in Roboto + and 4% in NotoNastaliqUrduDraft :(. + + src/hb-set-private.hh | 57 + ++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 56 insertions(+), 1 deletion(-) + +commit 241eac9559465fa79f396570af4e87f455b7e9d5 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jan 28 20:55:42 2015 -0800 + + Hide internals of lookup accelerators + + src/hb-ot-layout-gsub-table.hh | 5 +++-- + src/hb-ot-layout-private.hh | 5 +++++ + src/hb-ot-layout.cc | 6 +++--- + 3 files changed, 11 insertions(+), 5 deletions(-) + +commit e2d4e8480d85436a3acad8145acac345ed593f5a +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jan 28 20:29:48 2015 -0800 + + [util] Add convenience "make lib" target + + util/Makefile.am | 4 ++++ + 1 file changed, 4 insertions(+) + +commit faaae64bf28abdcdd15185374bc09a3809794118 +Merge: 7888a6b 9768e65 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Feb 25 15:34:34 2015 -0800 + + Merge pull request #85 from KonstantinRitt/define_inline + + Fix build with MSVC on CE + +commit 9768e651be0561f07d6f38c3ed8bc5ee04882990 +Author: Konstantin Ritt <ritt.ks@gmail.com> +Date: Sat Feb 14 00:58:51 2015 +0400 + + Fix build with MSVC on CE + + This code is C++ only. There isn't a single C++ compiler that fails to + understand the "inline" keyword, since it's required by C++98. Any + compiler older than C++98 is likely to choke on the template usage + further down, so this isn't necessary. + + Moreover, the C++ standard says you cannot define macros. + [lib.macro.names] says "Nor shall such a translation unit define + macros + for names lexically identical to keywords." -- technically, it's a + promise that the Standard Library headers won't do it, the wording + means + that the entire translation unit won't do it, which implies no source + can do it. + + MSVC complains about it: + fatal error C1189: #error : The C++ Standard Library forbids + macroizing + keywords. Enable warning C4005 to find the forbidden macro. + + Author: Thiago Macieira <thiago.macieira@intel.com> + + src/hb-private.hh | 10 ---------- + 1 file changed, 10 deletions(-) + +commit 7888a6b07a9922cedd3e0d235959058e0011357b +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jan 28 12:40:40 2015 -0800 + + [ft] Handle negative scales with vertical writing + + src/hb-ft.cc | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 982d94eaa2a377616f22f39427e5ed9f1ce43263 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jan 28 10:51:33 2015 -0800 + + [coretext] Don't generate notdef glyph for default-ignorables + + As discovered on Chrome Mac: + https://code.google.com/p/chromium/issues/detail?id=452326 + + src/hb-coretext.cc | 2 ++ + src/hb-ot-shape.cc | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +commit 6917a045fd8d16952cad75fda8b291b11e1d3564 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jan 28 10:43:32 2015 -0800 + + [coretext] Unbreak glyph positioning in presence of notdef runs + + As discovered on Chrome Mac: + https://code.google.com/p/chromium/issues/detail?id=452326 + + This was originally broken in: + + commit 5a0eed3b50629be4826e4e9428f2c3255195395d + Author: Behdad Esfahbod <behdad@behdad.org> + Date: Mon Aug 11 23:47:16 2014 -0400 + + [coretext] Implement vertical shaping + + src/hb-coretext.cc | 35 +++++++++++++++++++++++++++-------- + 1 file changed, 27 insertions(+), 8 deletions(-) + +commit 1eff4350239b0768e1042b52db9fb1c0d266f96a +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Jan 27 12:26:04 2015 -0800 + + Minor optimization + + src/hb-ot-shape-normalize.cc | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 675956aca01fc4e005a338af43d1c1f4f938abd1 +Author: Konstantin Ritt <ritt.ks@gmail.com> +Date: Tue Jan 27 11:23:07 2015 +0400 + + Do not leak hb_language_t on hb_language_item_t destruction + + src/hb-common.cc | 1 + + 1 file changed, 1 insertion(+) + +commit b306f9674a599da50754d24fa5aefcb6bba04420 +Author: Konstantin Ritt <ritt.ks@gmail.com> +Date: Tue Jan 27 20:08:41 2015 +0400 + + Minor improvement to HB_SHAPER_DATA_DESTROY + + src/hb-shaper-private.hh | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit 61820bc4ca1f02433db4be7c81f27cf97e2bd519 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Jan 26 14:25:52 2015 -0800 + + [API] Add hb_buffer_add_latin1() + + This is by no ways to promote non-Unicode encodings. This is an entry + point that takes Unicode codepoints that happen to all be the first + 256 characters and hence fit in 8bit strings. This is useful eg + in Chrome + where strings that can fit in 8bit are implemented that way, and this + avoids copying into UTF-8 or UTF-16. + + Perhaps we should rename this to hb_buffer_add_codepoints8(). + I'm also + curious if anyone would be really interested in + hb_buffer_add_codepoints16(). + + Please discuss! + + src/hb-buffer.cc | 36 +++++++++++++++++++++++++------- + src/hb-buffer.h | 8 ++++++++ + src/hb-utf-private.hh | 57 + ++++++++++++++++++++++++++++++++++++++------------- + 3 files changed, 80 insertions(+), 21 deletions(-) + +commit 78c6e86c04f12154c88b9f9264d0bd50b721699b +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Jan 26 14:08:36 2015 -0800 + + Fix hb_buffer_add_codepoints to actually NOT validate + + src/hb-buffer.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 70c25ee215635db23eb0757641bd372940c0d85d +Merge: 28f5e0b f3537b6 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sun Jan 25 13:06:03 2015 -0800 + + Merge pull request #81 from KonstantinRitt/fixes/build/win8phone + + winrt_buildfixes + +commit f3537b620b0a7392ea27f01f465c5ba79459c858 +Author: Konstantin Ritt <ritt.ks@gmail.com> +Date: Sun Jan 25 09:50:51 2015 +0400 + + Move some code around + + Just to keep Windows specific workarounds in a single place. + + src/hb-private.hh | 25 ++++++++++++------------- + 1 file changed, 12 insertions(+), 13 deletions(-) + +commit afb62d88d78cacb6b881aaf329a654fd32f5ae29 +Author: Konstantin Ritt <ritt.ks@gmail.com> +Date: Sun Jan 25 08:16:26 2015 +0400 + + Do not define MemoryBarrier on WinCE + + There is a _HBMemoryBarrier() wrapper function that emulates + MemoryBarrier() behavior when it is not defined. + + src/hb-private.hh | 1 - + 1 file changed, 1 deletion(-) + +commit 7db326a15b173c0d101adc608bf551a628c65dcd +Author: Konstantin Ritt <ritt.ks@gmail.com> +Date: Sun Jan 25 08:13:24 2015 +0400 + + Fix build on WinRT + + There is no environment (like WinCE) and the basic version + of InitializeCriticalSection is unsupported. + + https://codereview.qt-project.org/#/c/92496/ + + src/hb-mutex-private.hh | 4 ++++ + src/hb-private.hh | 2 ++ + 2 files changed, 6 insertions(+) + +commit 28f5e0b2f41670617bd778660364bbd58b1b68f2 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jan 23 12:45:35 2015 -0800 + + 0.9.38 + + NEWS | 23 +++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 24 insertions(+), 1 deletion(-) + commit a319d0777b746a2bbe5cd5a206172f1580da3379 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jan 23 12:44:24 2015 -0800 +Date: Fri Jan 23 12:44:24 2015 -0800 [ft] Handle negative x_scale / y_scale @@ -9,7 +731,7 @@ Date: Fri Jan 23 12:44:24 2015 -0800 commit b0b38bb892473d9a65e06dd3b4713da39f92bef9 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Jan 21 19:19:33 2015 -0800 +Date: Wed Jan 21 19:19:33 2015 -0800 [coretext] Fix positioning of notdef @@ -18,7 +740,7 @@ Date: Wed Jan 21 19:19:33 2015 -0800 commit 70622e5089c01ea16fd9deed11cb39d43145c121 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Jan 21 18:50:57 2015 -0800 +Date: Wed Jan 21 18:50:57 2015 -0800 [coretext] Fix scaling @@ -31,7 +753,7 @@ Date: Wed Jan 21 18:50:57 2015 -0800 commit 221ba02b0816584a02471037edae7cec9c1b8acc Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Jan 21 16:42:09 2015 -0800 +Date: Wed Jan 21 16:42:09 2015 -0800 [coretext] Use vertical advance for notdef in vertical direction @@ -40,7 +762,7 @@ Date: Wed Jan 21 16:42:09 2015 -0800 commit 7988da24c507ee310772f72cc5bcfd3c0a1187a0 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Jan 21 18:33:50 2015 -0800 +Date: Wed Jan 21 18:33:50 2015 -0800 Add convenience make target "make lib" in src/ @@ -49,7 +771,7 @@ Date: Wed Jan 21 18:33:50 2015 -0800 commit 31d48dd919e3b4a0bec5ede384f76db9b44f4d71 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Jan 21 01:57:44 2015 -0800 +Date: Wed Jan 21 01:57:44 2015 -0800 Add README.python @@ -58,7 +780,7 @@ Date: Wed Jan 21 01:57:44 2015 -0800 commit ca1c2813dd0b082a8c418bd3edd3f6cba97bd5f0 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Jan 21 01:51:48 2015 -0800 +Date: Wed Jan 21 01:51:48 2015 -0800 [bindings] Add README.python @@ -67,29 +789,29 @@ Date: Wed Jan 21 01:51:48 2015 -0800 commit cd4eb96abb90a84b42e9b288e39bad759e4411a0 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Jan 20 12:30:45 2015 -0800 +Date: Tue Jan 20 12:30:45 2015 -0800 [util] Add --font-size to hb-shape Also makes hb-view to use 8 bits of subpixel precision and shape at requested size, instead of always shaping at upem and scaling results. - util/hb-ot-shape-closure.cc | 2 +- - util/hb-shape.cc | 2 +- - util/hb-view.cc | 5 ++++- - util/helper-cairo.cc | 16 ++++++++-------- - util/helper-cairo.hh | 5 ++--- - util/main-font-text.hh | 4 ++-- - util/options.cc | 44 + util/hb-ot-shape-closure.cc | 2 +- + util/hb-shape.cc | 2 +- + util/hb-view.cc | 5 ++++- + util/helper-cairo.cc | 16 ++++++++-------- + util/helper-cairo.hh | 5 ++--- + util/main-font-text.hh | 4 ++-- + util/options.cc | 44 +++++++++++++++++++++++++++++++++++++++++--- - util/options.hh | 16 ++++++++++++---- - util/view-cairo.cc | 2 +- - util/view-cairo.hh | 8 ++++---- + util/options.hh | 16 ++++++++++++---- + util/view-cairo.cc | 2 +- + util/view-cairo.hh | 8 ++++---- 10 files changed, 76 insertions(+), 28 deletions(-) commit 5789ca69d7464bab5fa0c5bdf404f3afaa490faf Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jan 9 14:22:01 2015 -0800 +Date: Fri Jan 9 14:22:01 2015 -0800 [util] Minor @@ -98,7 +820,7 @@ Date: Fri Jan 9 14:22:01 2015 -0800 commit 67dfa8c7c2f2e9040a9c60c680f739ada4a35fb5 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Jan 19 17:00:31 2015 -0800 +Date: Mon Jan 19 17:00:31 2015 -0800 When matching second glyph of kerning pairs, use bsearch @@ -113,7 +835,7 @@ Date: Mon Jan 19 17:00:31 2015 -0800 commit e9f5c65be027eb7759ab819e267e24dff3b017b6 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Jan 19 14:42:11 2015 -0800 +Date: Mon Jan 19 14:42:11 2015 -0800 [bindings] Minor @@ -123,7 +845,7 @@ Date: Mon Jan 19 14:42:11 2015 -0800 commit 3704628d1f124234324b5f2bdd5fdd61c14c7801 Merge: 1aaa7d6 5eb939d Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Jan 19 16:15:00 2015 -0800 +Date: Mon Jan 19 16:15:00 2015 -0800 Merge pull request #77 from roozbehp/master @@ -131,7 +853,7 @@ Date: Mon Jan 19 16:15:00 2015 -0800 commit 5eb939ddfe9ef217da2e48d7d0f1f4b7501714ad Author: Roozbeh Pournader <roozbeh@google.com> -Date: Sun Jan 18 14:30:08 2015 -0800 +Date: Sun Jan 18 14:30:08 2015 -0800 Change New Tai Lue shaping engine from SEA to default @@ -150,18 +872,18 @@ Date: Sun Jan 18 14:30:08 2015 -0800 commit 1aaa7d6799b42b392dd191d3c12011721ef99e74 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Jan 17 20:16:56 2015 -0800 +Date: Sat Jan 17 20:16:56 2015 -0800 [indic] Fix out-of-bounds access - src/gen-indic-table.py | 2 +- + src/gen-indic-table.py | 2 +- src/hb-ot-shape-complex-indic-table.cc | 36 +++++++++++++++++----------------- 2 files changed, 19 insertions(+), 19 deletions(-) commit 238d6a38f2ceb7d8dceec9365a823f032b3b9f7d Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Jan 7 10:51:44 2015 -0800 +Date: Wed Jan 7 10:51:44 2015 -0800 [bindings] Update sample.py @@ -170,29 +892,29 @@ Date: Wed Jan 7 10:51:44 2015 -0800 commit 2cd5323531dcd800549b2cb1cb51d708e72ab2d8 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Jan 6 19:16:38 2015 -0800 +Date: Tue Jan 6 19:16:38 2015 -0800 [bindings] Use hb_glib_blob_create() in sample hb_blob_create() is considered C-only API. src/hb-blob.cc | 8 ++++---- - src/sample.py | 19 +++++++++---------- + src/sample.py | 19 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) commit 0ef179e2dc040c13497af847b8c1cec846dbdbf9 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Jan 6 16:58:33 2015 -0800 +Date: Tue Jan 6 16:58:33 2015 -0800 [glib] Add hb_glib_blob_create() that takes GBytes src/hb-glib.cc | 11 +++++++++++ - src/hb-glib.h | 3 +++ + src/hb-glib.h | 3 +++ 2 files changed, 14 insertions(+) commit b91904a40da6287f84bc79de60674fa57232ec09 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Jan 6 15:43:14 2015 -0800 +Date: Tue Jan 6 15:43:14 2015 -0800 [bindings] Replace deprecated allow-none with optional and nullable @@ -203,7 +925,7 @@ Date: Tue Jan 6 15:43:14 2015 -0800 commit 81a31f3eff44a85bb2160d51156a01a18f0a97df Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Jan 6 15:37:31 2015 -0800 +Date: Tue Jan 6 15:37:31 2015 -0800 [bindings] Make sample Python 2/3 compatible @@ -212,7 +934,7 @@ Date: Tue Jan 6 15:37:31 2015 -0800 commit b632e7997d9cb6e4782cab6d8c62e8e5edaa4cb0 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Jan 6 14:05:26 2015 -0800 +Date: Tue Jan 6 14:05:26 2015 -0800 Fix up gobject-introspection a bit @@ -220,12 +942,12 @@ Date: Tue Jan 6 14:05:26 2015 -0800 src/hb-blob.cc | 6 +++--- src/hb-buffer.cc | 2 +- - src/sample.py | 34 ++++++++++++++++++++++++++++------ + src/sample.py | 34 ++++++++++++++++++++++++++++------ 3 files changed, 32 insertions(+), 10 deletions(-) commit 3d1a666a8629a8502a2bcf23ab943e2b39a0da92 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Jan 5 14:43:13 2015 -0800 +Date: Mon Jan 5 14:43:13 2015 -0800 Remove hardcoded ICU include paths. @@ -239,7 +961,7 @@ Date: Mon Jan 5 14:43:13 2015 -0800 commit 8cb41cb9508eb1bb6319e92f900cfe5e8a131be3 Merge: 365c03f fb85d61 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Jan 4 20:32:18 2015 -0800 +Date: Sun Jan 4 20:32:18 2015 -0800 Merge pull request #76 from cpeterso/cpeterso/Wunused-function @@ -247,12 +969,12 @@ Date: Sun Jan 4 20:32:18 2015 -0800 commit fb85d618f5883458bacf0ecb0894772291a2d738 Author: Chris Peterson <cpeterson@mozilla.com> -Date: Sun Jan 4 19:31:10 2015 -0800 +Date: Sun Jan 4 19:31:10 2015 -0800 Add #ifdef HB_USE_ATEXIT to fix -Wunused-function warnings src/hb-common.cc | 2 +- - src/hb-ft.cc | 4 +++- + src/hb-ft.cc | 4 +++- src/hb-shape.cc | 4 +++- src/hb-shaper.cc | 4 +++- 4 files changed, 10 insertions(+), 4 deletions(-) @@ -260,7 +982,7 @@ Date: Sun Jan 4 19:31:10 2015 -0800 commit 365c03fc2bcdb4098314a0e123c46018fb882586 Merge: c36c4a9 d1897a9 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Jan 3 21:55:30 2015 -0800 +Date: Sat Jan 3 21:55:30 2015 -0800 Merge pull request #75 from cpeterso/cpeterso/Wunused-value @@ -268,17 +990,17 @@ Date: Sat Jan 3 21:55:30 2015 -0800 commit d1897a98d8da40cffb57c07099a9a93cfeaacc36 Author: Chris Peterson <cpeterson@mozilla.com> -Date: Sat Jan 3 19:46:19 2015 -0800 +Date: Sat Jan 3 19:46:19 2015 -0800 Fix hb_atomic_ptr_cmpexch -Wunused-value warnings src/hb-common.cc | 2 +- - src/hb-icu.cc | 4 +--- + src/hb-icu.cc | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) commit c36c4a9924609df648e62e47fa017b19b844fd98 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jan 2 14:09:23 2015 -0800 +Date: Fri Jan 2 14:09:23 2015 -0800 Add missing va_end() @@ -289,7 +1011,7 @@ Date: Fri Jan 2 14:09:23 2015 -0800 commit f34aaba8687a20794835e2dc878c52d1b53e6f85 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Dec 28 18:56:15 2014 -0800 +Date: Sun Dec 28 18:56:15 2014 -0800 [ft] Don't set font ppem @@ -309,7 +1031,7 @@ Date: Sun Dec 28 18:56:15 2014 -0800 commit 350f3a02ce225e5d78db8ac96de1351ff9f96dd5 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Dec 28 17:44:26 2014 -0800 +Date: Sun Dec 28 17:44:26 2014 -0800 [ft] Add hb_ft_face_create_referenced() and hb_ft_font_create_referenced() @@ -372,7 +1094,7 @@ Date: Sun Dec 28 17:44:26 2014 -0800 commit 9a3b74884b2e41c7040611030f4336f13d18fd3e Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Dec 28 17:27:39 2014 -0800 +Date: Sun Dec 28 17:27:39 2014 -0800 Remove redundant check for FT_Face_GetCharVariantIndex @@ -385,7 +1107,7 @@ Date: Sun Dec 28 17:27:39 2014 -0800 commit 1226b2e930aa456cc05bbe621c96f4286a95cff6 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Dec 28 17:04:23 2014 -0800 +Date: Sun Dec 28 17:04:23 2014 -0800 Fix FreeType version check @@ -394,7 +1116,7 @@ Date: Sun Dec 28 17:04:23 2014 -0800 commit affacf2f37db767ab8df7f2db6cd9e0e9b0a2b8a Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Dec 28 16:20:31 2014 -0800 +Date: Sun Dec 28 16:20:31 2014 -0800 [ft] Open blob in READONLY mode @@ -406,7 +1128,7 @@ Date: Sun Dec 28 16:20:31 2014 -0800 commit 395b35903e052aecc97d0807e4f813c64c0d2b0b Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Dec 28 16:03:26 2014 -0800 +Date: Sun Dec 28 16:03:26 2014 -0800 Avoid accessing layout tables at face destruction @@ -420,14 +1142,14 @@ Date: Sun Dec 28 16:03:26 2014 -0800 refcounting to help avoid that, it happens that we were accessing the table when we didn't really have to. Avoid that. - src/hb-ot-layout-private.hh | 3 +-- - src/hb-ot-layout.cc | 4 ++-- + src/hb-ot-layout-private.hh | 3 +-- + src/hb-ot-layout.cc | 4 ++-- src/hb-ot-shape-complex-arabic-fallback.hh | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) commit 7d5e7613ced3dd39d05df83ca7e8952cbecd68f6 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Dec 18 18:22:21 2014 -0800 +Date: Thu Dec 18 18:22:21 2014 -0800 Fail blob creation if length overflows or is too large @@ -448,7 +1170,7 @@ Date: Thu Dec 18 18:22:21 2014 -0800 commit d5a5052098b0aa79ff55c235e61a9db477c4120f Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Dec 18 18:09:41 2014 -0800 +Date: Thu Dec 18 18:09:41 2014 -0800 Assert that blob length doesn't overflow address. @@ -460,17 +1182,17 @@ Date: Thu Dec 18 18:09:41 2014 -0800 commit 66e37409b3bc1eddc86704ae26d9176677ce6aa6 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 17 12:09:17 2014 -0800 +Date: Wed Dec 17 12:09:17 2014 -0800 0.9.37 - NEWS | 8 ++++++++ + NEWS | 8 ++++++++ configure.ac | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) commit 093c520de506aec74f3fb1e195c0ca85813424dd Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 12 21:07:53 2014 -0800 +Date: Fri Dec 12 21:07:53 2014 -0800 [otlayout] Mark variables that are C arrays as opposed to OT::ArrayOf @@ -481,7 +1203,7 @@ Date: Fri Dec 12 21:07:53 2014 -0800 commit 9df0a520306a491f973d42965597bfda6023e508 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 12 20:54:28 2014 -0800 +Date: Fri Dec 12 20:54:28 2014 -0800 [otlayout] Avoid invalid access with Context format 3 @@ -490,7 +1212,7 @@ Date: Fri Dec 12 20:54:28 2014 -0800 commit 295ef1dd5229f47d8e0eb5b4eb48c90a6b470073 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 12 20:43:18 2014 -0800 +Date: Fri Dec 12 20:43:18 2014 -0800 [ot] Debug get_coverage @@ -499,7 +1221,7 @@ Date: Fri Dec 12 20:43:18 2014 -0800 commit 00f6a8e334ec4c586e4e633a95b411ccb50306d3 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 12 20:36:49 2014 -0800 +Date: Fri Dec 12 20:36:49 2014 -0800 [ot] Print format in dispatch trace @@ -510,7 +1232,7 @@ Date: Fri Dec 12 20:36:49 2014 -0800 commit 5c7d6f02d71362c2b192a7d96e6181977682921c Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 12 20:28:49 2014 -0800 +Date: Fri Dec 12 20:28:49 2014 -0800 Minor @@ -519,7 +1241,7 @@ Date: Fri Dec 12 20:28:49 2014 -0800 commit 153beebba9b76901b8b62b90ba0dc69462ae2090 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 12 19:46:09 2014 -0800 +Date: Fri Dec 12 19:46:09 2014 -0800 [ot] Make sure all toplevel tables have tableTag @@ -530,7 +1252,7 @@ Date: Fri Dec 12 19:46:09 2014 -0800 commit 282b13f9b4d86b091714de7fbddc94b3e3ff3d91 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 12 19:32:46 2014 -0800 +Date: Fri Dec 12 19:32:46 2014 -0800 [sanitize] Improve debug output some more @@ -539,7 +1261,7 @@ Date: Fri Dec 12 19:32:46 2014 -0800 commit 0766ee1f4e6046598a2e8fb1b167c3942b4a87a0 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 12 18:23:20 2014 -0800 +Date: Fri Dec 12 18:23:20 2014 -0800 [sanitize] Improve debug output @@ -548,7 +1270,7 @@ Date: Fri Dec 12 18:23:20 2014 -0800 commit e6f80fa1044243898c402ec6a59d6c1b5420be53 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 10 12:05:24 2014 -0800 +Date: Wed Dec 10 12:05:24 2014 -0800 [indic] Allow ZWJ/ZWNJ before SM @@ -574,28 +1296,28 @@ Date: Wed Dec 10 12:05:24 2014 -0800 TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%) TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%) - src/hb-ot-shape-complex-indic-machine.rl | 2 +- - test/shaping/Makefile.am | 1 + + src/hb-ot-shape-complex-indic-machine.rl | 2 +- + test/shaping/Makefile.am | 1 + .../sha1sum/5028afb650b1bb718ed2131e872fbcce57828fff.ttf | Bin 0 -> 4720 bytes - test/shaping/fonts/sha1sum/MANIFEST | 1 + - test/shaping/tests/MANIFEST | 1 + - test/shaping/tests/indic-joiner-candrabindu.tests | 2 ++ + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/indic-joiner-candrabindu.tests | 2 ++ 6 files changed, 6 insertions(+), 1 deletion(-) commit c0e95abc5f3f14121483b71f10837828a3a1d73a Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Nov 20 14:42:24 2014 -0800 +Date: Thu Nov 20 14:42:24 2014 -0800 0.9.36 - NEWS | 12 ++++++++++++ + NEWS | 12 ++++++++++++ configure.ac | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) commit fde3e4a423871463c883cb969e99c29cb6f69f6b Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 29 11:23:08 2014 -0700 +Date: Wed Oct 29 11:23:08 2014 -0700 In hb_ot_collect_glyphs(), don't recurse to a lookup more than once @@ -612,7 +1334,7 @@ Date: Wed Oct 29 11:23:08 2014 -0700 commit 5a5640d8506ccfc99fd119e89e829170d1fea421 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Oct 14 21:26:13 2014 -0700 +Date: Tue Oct 14 21:26:13 2014 -0700 Move code around @@ -622,7 +1344,7 @@ Date: Tue Oct 14 21:26:13 2014 -0700 commit 666b42f73bd1f516657b206ef738108825bf239f Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Oct 14 21:24:59 2014 -0700 +Date: Tue Oct 14 21:24:59 2014 -0700 Move macros around @@ -630,13 +1352,13 @@ Date: Tue Oct 14 21:24:59 2014 -0700 src/hb-open-type-private.hh | 63 ++++++++++++++++++++++++++++++++++++++------- - src/hb-private.hh | 41 ----------------------------- - src/hb-uniscribe.cc | 6 +++++ + src/hb-private.hh | 41 ----------------------------- + src/hb-uniscribe.cc | 6 +++++ 3 files changed, 60 insertions(+), 50 deletions(-) commit 5c87120b8178566ddae99d9825edc24f9b87ea3d Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Oct 14 20:07:31 2014 -0700 +Date: Tue Oct 14 20:07:31 2014 -0700 Fix misc warnings @@ -644,12 +1366,12 @@ Date: Tue Oct 14 20:07:31 2014 -0700 src/hb-buffer-deserialize-json.rl | 4 ++-- src/hb-ot-layout-gsub-table.hh | 2 +- - src/hb-private.hh | 6 +++--- + src/hb-private.hh | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) commit a1f27ac3c48cfe6d532dc422cf256952fea472ed Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Oct 2 16:54:33 2014 -0400 +Date: Thu Oct 2 16:54:33 2014 -0400 Update test expectation for previous commit @@ -658,7 +1380,7 @@ Date: Thu Oct 2 16:54:33 2014 -0400 commit 8afaf096870d7895cf2fffb6438b02c0ad1b6c52 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Oct 2 16:40:41 2014 -0400 +Date: Thu Oct 2 16:40:41 2014 -0400 [ft] Add NO_HINTING in a couple other places @@ -667,7 +1389,7 @@ Date: Thu Oct 2 16:40:41 2014 -0400 commit 7228011411f0e490ad1ba9894dd0d576823903ea Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 18:58:43 2014 -0400 +Date: Wed Oct 1 18:58:43 2014 -0400 [travis] Fix clang again @@ -676,7 +1398,7 @@ Date: Wed Oct 1 18:58:43 2014 -0400 commit 406a020e5228d4a04da6282f5a75165bab7a483e Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 18:54:55 2014 -0400 +Date: Wed Oct 1 18:54:55 2014 -0400 [travis] Fail build if coveralls fails @@ -685,7 +1407,7 @@ Date: Wed Oct 1 18:54:55 2014 -0400 commit a8aa20260dbd9af9cbcc7d545fa8b41b07aae276 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 18:48:40 2014 -0400 +Date: Wed Oct 1 18:48:40 2014 -0400 [travis] Only run coveralls under gcc @@ -694,7 +1416,7 @@ Date: Wed Oct 1 18:48:40 2014 -0400 commit 5de0407337d630117e424b7c715b7cbd432f4ef9 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 18:18:25 2014 -0400 +Date: Wed Oct 1 18:18:25 2014 -0400 Help clang with gcov @@ -704,7 +1426,7 @@ Date: Wed Oct 1 18:18:25 2014 -0400 commit ef40ca8e5e830231539dc61088b58e907a840629 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 18:07:27 2014 -0400 +Date: Wed Oct 1 18:07:27 2014 -0400 [travis] Try to make coverage work with clang @@ -713,7 +1435,7 @@ Date: Wed Oct 1 18:07:27 2014 -0400 commit 52784da17b7278f2587168234878bb15d918c9fe Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 17:57:43 2014 -0400 +Date: Wed Oct 1 17:57:43 2014 -0400 [travis] Minor @@ -722,7 +1444,7 @@ Date: Wed Oct 1 17:57:43 2014 -0400 commit f2c9005f5123c7f9b227fd9ac9a3438c5fe4cf47 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 17:45:17 2014 -0400 +Date: Wed Oct 1 17:45:17 2014 -0400 Add README.md symlink to make github happy @@ -731,7 +1453,7 @@ Date: Wed Oct 1 17:45:17 2014 -0400 commit 40987e8aaca4155d9cff211549e8d23f24c334e5 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 17:44:30 2014 -0400 +Date: Wed Oct 1 17:44:30 2014 -0400 [travis] Re-enable clang @@ -740,7 +1462,7 @@ Date: Wed Oct 1 17:44:30 2014 -0400 commit 5400ac476e5a5bcc66559fcfb05a683a6b433ea1 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 17:41:41 2014 -0400 +Date: Wed Oct 1 17:41:41 2014 -0400 Add build and coverage status links @@ -749,7 +1471,7 @@ Date: Wed Oct 1 17:41:41 2014 -0400 commit 19360e0a5609c65842a989587b01a4dc7c9eae36 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 17:35:03 2014 -0400 +Date: Wed Oct 1 17:35:03 2014 -0400 [travis] Report matrix settings to help debugging @@ -758,7 +1480,7 @@ Date: Wed Oct 1 17:35:03 2014 -0400 commit 9b89fc52f49b80df1f27ac7de69e0152bdcc94d6 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 17:20:31 2014 -0400 +Date: Wed Oct 1 17:20:31 2014 -0400 [travis] More coveralls @@ -767,7 +1489,7 @@ Date: Wed Oct 1 17:20:31 2014 -0400 commit a68f2b62c1f24009993911b1dbcb76b821e58c51 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 17:05:58 2014 -0400 +Date: Wed Oct 1 17:05:58 2014 -0400 [travis] Give coveralls a hand @@ -776,7 +1498,7 @@ Date: Wed Oct 1 17:05:58 2014 -0400 commit 5194d647e13aa5ba2cfcdbdcd4a659dc5bd11418 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 17:03:26 2014 -0400 +Date: Wed Oct 1 17:03:26 2014 -0400 [travis] Disable clang for now @@ -785,7 +1507,7 @@ Date: Wed Oct 1 17:03:26 2014 -0400 commit 715f27f85f97fee13b119f60037db5c139489ee6 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 16:53:00 2014 -0400 +Date: Wed Oct 1 16:53:00 2014 -0400 [test] Fixup test @@ -794,7 +1516,7 @@ Date: Wed Oct 1 16:53:00 2014 -0400 commit 2a508ddae5de3852243725ce22caa3dcffccb83e Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 16:49:22 2014 -0400 +Date: Wed Oct 1 16:49:22 2014 -0400 [travis] Another try at coveralls.io @@ -803,7 +1525,7 @@ Date: Wed Oct 1 16:49:22 2014 -0400 commit dfe8078e5be46cab5e67aed977749c1d6725e6a7 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 16:38:47 2014 -0400 +Date: Wed Oct 1 16:38:47 2014 -0400 [travis] First try to hookup coveralls.io code coverage tracking @@ -812,7 +1534,7 @@ Date: Wed Oct 1 16:38:47 2014 -0400 commit 1b387571e4d0eed883f1ae8ec85cf0e818b4a7f9 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 16:14:59 2014 -0400 +Date: Wed Oct 1 16:14:59 2014 -0400 [travis] Unbreak @@ -821,7 +1543,7 @@ Date: Wed Oct 1 16:14:59 2014 -0400 commit e281ed360dfdf803aea87b6078983867d08e07a7 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 16:09:08 2014 -0400 +Date: Wed Oct 1 16:09:08 2014 -0400 [travis] Minor @@ -830,7 +1552,7 @@ Date: Wed Oct 1 16:09:08 2014 -0400 commit c0b82ba32a1987902a3b9c05b46f8be6b121883a Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 14:24:07 2014 -0400 +Date: Wed Oct 1 14:24:07 2014 -0400 Create ragel-generated files in srcdir @@ -839,7 +1561,7 @@ Date: Wed Oct 1 14:24:07 2014 -0400 commit 79bbb10b0da49ace763a50f259c2ea687143f7ea Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 13:33:21 2014 -0400 +Date: Wed Oct 1 13:33:21 2014 -0400 Clean ragel-generated headers in maintainercleanfiles @@ -848,7 +1570,7 @@ Date: Wed Oct 1 13:33:21 2014 -0400 commit 8971cac83eb4f06847abfa3eaa15857d27141810 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 12:41:03 2014 -0400 +Date: Wed Oct 1 12:41:03 2014 -0400 Don't use tmp files in Makefile @@ -860,7 +1582,7 @@ Date: Wed Oct 1 12:41:03 2014 -0400 commit 22723186652224a635f1dad5cda0f753e78c301d Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 11:56:07 2014 -0400 +Date: Wed Oct 1 11:56:07 2014 -0400 check-static-inits: Filter out zero-length sections @@ -872,7 +1594,7 @@ Date: Wed Oct 1 11:56:07 2014 -0400 commit b695a3dc2300ed970a4154ad8b997407b3cb4faf Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 11:55:14 2014 -0400 +Date: Wed Oct 1 11:55:14 2014 -0400 check-static-inits: check for static finalizers @@ -881,7 +1603,7 @@ Date: Wed Oct 1 11:55:14 2014 -0400 commit 250398b1e4f102e4e44eeb9e2aebf0cd2d397344 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 11:28:01 2014 -0400 +Date: Wed Oct 1 11:28:01 2014 -0400 Hide other bubble-sort @@ -890,7 +1612,7 @@ Date: Wed Oct 1 11:28:01 2014 -0400 commit c1e87442621beff98791ce56cfd1ccee506c4ee6 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Oct 1 11:07:08 2014 -0400 +Date: Wed Oct 1 11:07:08 2014 -0400 Hide bubble-sort! @@ -899,7 +1621,7 @@ Date: Wed Oct 1 11:07:08 2014 -0400 commit 80f77282264afb1356351024b1f062b2824bba3b Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Sep 25 17:59:46 2014 +0300 +Date: Thu Sep 25 17:59:46 2014 +0300 [util] Fix ansi output when surface is empty @@ -908,7 +1630,7 @@ Date: Thu Sep 25 17:59:46 2014 +0300 commit 156852991e18e5ac256ee4d6b2916931cc274977 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Sep 25 17:45:49 2014 +0300 +Date: Thu Sep 25 17:45:49 2014 +0300 [ot-font] Add hb_ot_face_cmap_accelerator_t @@ -918,7 +1640,7 @@ Date: Thu Sep 25 17:45:49 2014 +0300 commit d088ccaf11d9475fe0d269ce130b1793b8a1ffbf Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Sep 25 17:26:56 2014 +0300 +Date: Thu Sep 25 17:26:56 2014 +0300 [ot-font] Minor @@ -927,7 +1649,7 @@ Date: Thu Sep 25 17:26:56 2014 +0300 commit d7c160a1530adabbcf33725b105072293115a34c Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Sep 25 17:15:35 2014 +0300 +Date: Thu Sep 25 17:15:35 2014 +0300 [ot-font] Handle missing vertical metrics tables @@ -936,11 +1658,11 @@ Date: Thu Sep 25 17:15:35 2014 +0300 commit be1cca270257bfdfee3fbe821175269713acf408 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Sep 25 16:53:24 2014 +0300 +Date: Thu Sep 25 16:53:24 2014 +0300 [ot-font] Add metrics_accel_t - src/hb-ot-font.cc | 111 + src/hb-ot-font.cc | 111 ++++++++++++++++++++++-------------------------- src/hb-ot-hhea-table.hh | 2 +- src/hb-ot-hmtx-table.hh | 4 +- @@ -948,11 +1670,11 @@ Date: Thu Sep 25 16:53:24 2014 +0300 commit d41b809e9d21e655129a97c600d28f278fd7e62c Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Sep 25 13:04:08 2014 +0300 +Date: Thu Sep 25 13:04:08 2014 +0300 [ot-font] Start adding vertical support - src/hb-ot-font.cc | 57 ++++++++++++++++++++++++++++++++++---------- + src/hb-ot-font.cc | 57 ++++++++++++++++++++++++++++++++++---------- src/hb-ot-hhea-table.hh | 63 ++++++++++++++++++++++++++----------------------- src/hb-ot-hmtx-table.hh | 35 +++++++++++++++++---------- @@ -960,7 +1682,7 @@ Date: Thu Sep 25 13:04:08 2014 +0300 commit 22f0de5025aeeef4c8b3ca876d291d4c8e558d94 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 25 12:54:57 2014 -0400 +Date: Mon Aug 25 12:54:57 2014 -0400 Fix build @@ -969,7 +1691,7 @@ Date: Mon Aug 25 12:54:57 2014 -0400 commit d457e3f0ff9b27616a34e4cc110d3edbf8796841 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 25 12:31:19 2014 -0400 +Date: Mon Aug 25 12:31:19 2014 -0400 [arabic] Don't #include __FILE__ @@ -982,7 +1704,7 @@ Date: Mon Aug 25 12:31:19 2014 -0400 commit 9ceb673d9c35bb28c9b2ed5359bdd8b23fda0019 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 25 11:48:12 2014 -0400 +Date: Mon Aug 25 11:48:12 2014 -0400 [arabic] Allow disabling win1256 fallback code @@ -993,7 +1715,7 @@ Date: Mon Aug 25 11:48:12 2014 -0400 commit 8a9319502141c09695461c386e54f998250420e9 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Aug 22 12:06:57 2014 -0400 +Date: Fri Aug 22 12:06:57 2014 -0400 [ot] Prefer Windows platform cmap tables / accept all Unicode encodingIDs @@ -1005,7 +1727,7 @@ Date: Fri Aug 22 12:06:57 2014 -0400 commit 270971a0fccdf4964fd3e8ab8e5cf53037a3518d Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Aug 15 14:28:04 2014 -0400 +Date: Fri Aug 15 14:28:04 2014 -0400 [win32] Avoid preprocessor warnings re macros @@ -1014,17 +1736,17 @@ Date: Fri Aug 15 14:28:04 2014 -0400 commit 8c6bd34d38fb3007c3d660fce0095cc5c7e9962e Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Aug 14 13:33:37 2014 -0400 +Date: Thu Aug 14 13:33:37 2014 -0400 Fix check-symbols on OS X src/check-libstdc++.sh | 14 +++++++------- - src/check-symbols.sh | 8 +++++++- + src/check-symbols.sh | 8 +++++++- 2 files changed, 14 insertions(+), 8 deletions(-) commit 522b1cc5261c1419166bfb90d2ff634b684be66a Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Aug 14 13:29:30 2014 -0400 +Date: Thu Aug 14 13:29:30 2014 -0400 [coretext] Hide feature_mappings @@ -1033,7 +1755,7 @@ Date: Thu Aug 14 13:29:30 2014 -0400 commit 0d2c2f238bf0a847ecd55a70cc0f081f18a053ac Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Aug 14 13:25:55 2014 -0400 +Date: Thu Aug 14 13:25:55 2014 -0400 Simplify hb-object @@ -1043,7 +1765,7 @@ Date: Thu Aug 14 13:25:55 2014 -0400 commit 9d861b81f349188a4507350398786a6e94038095 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Aug 14 13:15:21 2014 -0400 +Date: Thu Aug 14 13:15:21 2014 -0400 Really fix clang build this time @@ -1053,7 +1775,7 @@ Date: Thu Aug 14 13:15:21 2014 -0400 commit 272226f294382b0c6921b36e0e67fc53daa765d3 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Aug 14 13:11:33 2014 -0400 +Date: Thu Aug 14 13:11:33 2014 -0400 Revert "Fix build on clang after previous commit" @@ -1064,7 +1786,7 @@ Date: Thu Aug 14 13:11:33 2014 -0400 commit 9c80cbc87f23040a334e30c750f64523d9ef10c8 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Aug 14 13:09:52 2014 -0400 +Date: Thu Aug 14 13:09:52 2014 -0400 Fix build on clang after previous commit @@ -1073,7 +1795,7 @@ Date: Thu Aug 14 13:09:52 2014 -0400 commit a5a27073cfff91c4f80209ca8462543130af61dd Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Aug 14 13:05:36 2014 -0400 +Date: Thu Aug 14 13:05:36 2014 -0400 Rewrite this==NULL checks to avoid undefined behavior @@ -1084,7 +1806,7 @@ Date: Thu Aug 14 13:05:36 2014 -0400 commit cc3b2d432b02f9381cdf19e2dd5fbbdd002a750c Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Aug 14 12:59:16 2014 -0400 +Date: Thu Aug 14 12:59:16 2014 -0400 Remove this==NULL check from face->reference_table() @@ -1096,7 +1818,7 @@ Date: Thu Aug 14 12:59:16 2014 -0400 commit cd7ea4f791dc41d62ad238673e2ea0107883c9e3 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Aug 14 12:57:02 2014 -0400 +Date: Thu Aug 14 12:57:02 2014 -0400 Make hb_object_t members private @@ -1104,12 +1826,12 @@ Date: Thu Aug 14 12:57:02 2014 -0400 https://code.google.com/p/chromium/issues/detail?id=403594 src/hb-object-private.hh | 26 +++++++++++++++++++++----- - src/hb-set-private.hh | 2 +- + src/hb-set-private.hh | 2 +- 2 files changed, 22 insertions(+), 6 deletions(-) commit c4308f895aef93ed884fd54e4ebc65b6d2cfc94a Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Aug 13 19:42:01 2014 -0400 +Date: Wed Aug 13 19:42:01 2014 -0400 Minor @@ -1118,17 +1840,17 @@ Date: Wed Aug 13 19:42:01 2014 -0400 commit cd5a1149d980dc3c17b6bb9d961c761b2671ba1b Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Aug 13 12:39:34 2014 -0400 +Date: Wed Aug 13 12:39:34 2014 -0400 0.9.35 - NEWS | 29 +++++++++++++++++++++++++++++ + NEWS | 29 +++++++++++++++++++++++++++++ configure.ac | 2 +- 2 files changed, 30 insertions(+), 1 deletion(-) commit 20076cc41e673c31305fcb58d37b3b292fd35f83 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 12 19:26:35 2014 -0400 +Date: Tue Aug 12 19:26:35 2014 -0400 [coretext] Add version guards for kCTLanguageAttributeName @@ -1137,7 +1859,7 @@ Date: Tue Aug 12 19:26:35 2014 -0400 commit 1b3011c27df531875d432e909ae6b77f115c5017 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 12 19:17:19 2014 -0400 +Date: Tue Aug 12 19:17:19 2014 -0400 [coretext] Pass buffer language to CoreText @@ -1146,7 +1868,7 @@ Date: Tue Aug 12 19:17:19 2014 -0400 commit 3eb6a4dbf25b11fce5e0e426e89f7457887aeca0 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 12 19:10:33 2014 -0400 +Date: Tue Aug 12 19:10:33 2014 -0400 [coretext] Minor @@ -1155,7 +1877,7 @@ Date: Tue Aug 12 19:10:33 2014 -0400 commit 08acfe0d3a1d8223a9fa0696703fff63d6c2ea8b Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 12 18:57:08 2014 -0400 +Date: Tue Aug 12 18:57:08 2014 -0400 [hb-coretext] Fix cluster order of notdef runs in RTL text @@ -1164,7 +1886,7 @@ Date: Tue Aug 12 18:57:08 2014 -0400 commit 30eed75de24ac0b6648a72d98d10bb24a563d7ef Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 12 17:15:09 2014 -0400 +Date: Tue Aug 12 17:15:09 2014 -0400 [shape-plan] Fix typo! @@ -1177,7 +1899,7 @@ Date: Tue Aug 12 17:15:09 2014 -0400 commit dc9aba6fc53898acd7281b118cec0355d61b1df2 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 12 17:14:36 2014 -0400 +Date: Tue Aug 12 17:14:36 2014 -0400 [shape-plan] Better debug messages @@ -1186,7 +1908,7 @@ Date: Tue Aug 12 17:14:36 2014 -0400 commit e956c65bf724a8403471362288d2361361b6ac58 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 12 17:03:27 2014 -0400 +Date: Tue Aug 12 17:03:27 2014 -0400 [shape-plan] Simplify macro @@ -1195,7 +1917,7 @@ Date: Tue Aug 12 17:03:27 2014 -0400 commit 29e25550ce8fee3fecc42d20a45ce9c212dc59df Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 12 17:02:59 2014 -0400 +Date: Tue Aug 12 17:02:59 2014 -0400 Fix gcc warning @@ -1204,7 +1926,7 @@ Date: Tue Aug 12 17:02:59 2014 -0400 commit 8d5eebc0c6ada01128c6ee384340efdbef7ba29d Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 12 16:50:22 2014 -0400 +Date: Tue Aug 12 16:50:22 2014 -0400 [shape-plan] Fix shape-plan caching with more than one requested shaper @@ -1218,7 +1940,7 @@ Date: Tue Aug 12 16:50:22 2014 -0400 commit bc3d0dc60104f1cda465a5e8ba5b40ed5bec70b9 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 12 16:49:18 2014 -0400 +Date: Tue Aug 12 16:49:18 2014 -0400 [shape-plan] Add debug tracing @@ -1227,7 +1949,7 @@ Date: Tue Aug 12 16:49:18 2014 -0400 commit 81b8d9777b9c38c7e6408591763a4cac6de18e4b Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 12 15:49:47 2014 -0400 +Date: Tue Aug 12 15:49:47 2014 -0400 [coretext] Fix buffer resizing @@ -1238,7 +1960,7 @@ Date: Tue Aug 12 15:49:47 2014 -0400 commit c3e924fb9e0e2d4003790817655efd9c5688c7e1 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 12 14:25:11 2014 -0400 +Date: Tue Aug 12 14:25:11 2014 -0400 [coretext] Rewind scratch-allocated arrays when not needed anymore @@ -1247,7 +1969,7 @@ Date: Tue Aug 12 14:25:11 2014 -0400 commit 8fd4d70b1450d7261a35ab3dea1c70baea2e5c99 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 12 13:12:31 2014 -0400 +Date: Tue Aug 12 13:12:31 2014 -0400 [wince] Two more Windows CE fixes @@ -1256,12 +1978,12 @@ Date: Tue Aug 12 13:12:31 2014 -0400 https://codereview.qt-project.org/#/c/92087/ src/hb-mutex-private.hh | 2 +- - src/hb-private.hh | 2 ++ + src/hb-private.hh | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) commit fd0001d7dbe6ede99a9f87f96f231ffb53303be8 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 12 10:32:41 2014 -0400 +Date: Tue Aug 12 10:32:41 2014 -0400 [coretext] Compare CGFont and PS name, if CTFont didn't match @@ -1281,7 +2003,7 @@ Date: Tue Aug 12 10:32:41 2014 -0400 commit 5a0eed3b50629be4826e4e9428f2c3255195395d Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 11 23:47:16 2014 -0400 +Date: Mon Aug 11 23:47:16 2014 -0400 [coretext] Implement vertical shaping @@ -1295,7 +2017,7 @@ Date: Mon Aug 11 23:47:16 2014 -0400 commit 1b55077f03758e49f93b8bc1de678e96ea58718c Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 11 20:45:12 2014 -0400 +Date: Mon Aug 11 20:45:12 2014 -0400 [coretext] Remove unnecessary alt_size @@ -1306,7 +2028,7 @@ Date: Mon Aug 11 20:45:12 2014 -0400 commit 10b1104d791a0b0103c6bbb083b5819f2b7d328d Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 11 20:02:45 2014 -0400 +Date: Mon Aug 11 20:02:45 2014 -0400 [coretext] Use CFRunStatus @@ -1318,7 +2040,7 @@ Date: Mon Aug 11 20:02:45 2014 -0400 commit fd1a6aa8d029c701b1532efa59ce901109cfc216 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 11 20:01:37 2014 -0400 +Date: Mon Aug 11 20:01:37 2014 -0400 [coretext] Minor @@ -1327,7 +2049,7 @@ Date: Mon Aug 11 20:01:37 2014 -0400 commit 130856c705641aa681307b5b51b5fb84e295f382 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 11 19:16:26 2014 -0400 +Date: Mon Aug 11 19:16:26 2014 -0400 [coretext] Remove debug printf! @@ -1336,7 +2058,7 @@ Date: Mon Aug 11 19:16:26 2014 -0400 commit b5fbc3b8f560235d014c62e49220574ffcf89349 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 11 18:40:01 2014 -0400 +Date: Mon Aug 11 18:40:01 2014 -0400 API: Do not clear buffer-flags in hb_buffer_clear_contents() @@ -1349,13 +2071,13 @@ Date: Mon Aug 11 18:40:01 2014 -0400 Tests updated. src/hb-buffer-private.hh | 4 +--- - src/hb-buffer.cc | 4 ++-- + src/hb-buffer.cc | 4 ++-- test/api/test-buffer.c | 15 ++++++++++++--- 3 files changed, 15 insertions(+), 8 deletions(-) commit 104484cefeca03d95837bba5f39178693c86ce8a Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 11 18:23:43 2014 -0400 +Date: Mon Aug 11 18:23:43 2014 -0400 Minor @@ -1364,7 +2086,7 @@ Date: Mon Aug 11 18:23:43 2014 -0400 commit 4acce77db7dd588ba277779c4997b0256ebe426e Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 11 17:46:50 2014 -0400 +Date: Mon Aug 11 17:46:50 2014 -0400 [coretext] Pass buffer direction to CoreText @@ -1375,7 +2097,7 @@ Date: Mon Aug 11 17:46:50 2014 -0400 commit 5ec45dd37caa8a87ce2689a66272ba8a343fe6ba Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 11 17:46:12 2014 -0400 +Date: Mon Aug 11 17:46:12 2014 -0400 [coretext] Minor @@ -1387,7 +2109,7 @@ Date: Mon Aug 11 17:46:12 2014 -0400 commit 624a299b829ccf9864dd2f3001b1a49476e96b4a Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 11 15:29:18 2014 -0400 +Date: Mon Aug 11 15:29:18 2014 -0400 [coretext] Attach marks to base clusters @@ -1399,7 +2121,7 @@ Date: Mon Aug 11 15:29:18 2014 -0400 commit 3c41ccb5358b0be6cc68d49f436d2cb1792cd5e5 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 11 15:11:59 2014 -0400 +Date: Mon Aug 11 15:11:59 2014 -0400 [coretext] Use input clusters @@ -1413,7 +2135,7 @@ Date: Mon Aug 11 15:11:59 2014 -0400 commit a6b8dc87421de33746b0b14d86d2d1532aec02af Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 11 15:08:19 2014 -0400 +Date: Mon Aug 11 15:08:19 2014 -0400 [coretext] Fix buffer resize handling @@ -1422,13 +2144,13 @@ Date: Mon Aug 11 15:08:19 2014 -0400 shaper to retry from (almost) scratch. src/hb-buffer-private.hh | 3 + - src/hb-coretext.cc | 428 + src/hb-coretext.cc | 428 ++++++++++++++++++++++++++--------------------- 2 files changed, 238 insertions(+), 193 deletions(-) commit 9b3c60c88b118f01610ae7a608b138f79f2dc7be Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 11 13:25:43 2014 -0400 +Date: Mon Aug 11 13:25:43 2014 -0400 [coretext] Always compute log_clusters @@ -1439,7 +2161,7 @@ Date: Mon Aug 11 13:25:43 2014 -0400 commit 15c633dd1f412f9ef839d80a8f7af35e7ea48fbc Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 11 13:42:42 2014 -0400 +Date: Mon Aug 11 13:42:42 2014 -0400 Minor @@ -1449,7 +2171,7 @@ Date: Mon Aug 11 13:42:42 2014 -0400 commit 9ce067c77524a9ffc77ceabcba5e7dab36fd39de Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 11 02:04:38 2014 -0400 +Date: Mon Aug 11 02:04:38 2014 -0400 [coretext] Simplify cluster mapping @@ -1458,7 +2180,7 @@ Date: Mon Aug 11 02:04:38 2014 -0400 commit 49f7fb63761e4ca9936990fb90a77fd3600f5ad2 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Aug 10 19:19:38 2014 -0400 +Date: Sun Aug 10 19:19:38 2014 -0400 [coretext] Minor @@ -1467,7 +2189,7 @@ Date: Sun Aug 10 19:19:38 2014 -0400 commit 25f4fb9b56bb3f8bec821571c78f8829e40daa54 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Aug 10 19:05:25 2014 -0400 +Date: Sun Aug 10 19:05:25 2014 -0400 [coretext] Fix fallback detection @@ -1478,7 +2200,7 @@ Date: Sun Aug 10 19:05:25 2014 -0400 commit 77a7a53acef7de355116d488e7d64ff1d7e9e9e1 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Aug 10 18:59:47 2014 -0400 +Date: Sun Aug 10 18:59:47 2014 -0400 [coretext] Fix last range @@ -1492,7 +2214,7 @@ Date: Sun Aug 10 18:59:47 2014 -0400 commit c2b151d95262a8dc2d2ce94e19ab0ef5b0c8f98d Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Aug 10 18:52:07 2014 -0400 +Date: Sun Aug 10 18:52:07 2014 -0400 Fix hb_in_range() for types smaller than int @@ -1503,7 +2225,7 @@ Date: Sun Aug 10 18:52:07 2014 -0400 commit 26a963b9cb4af3119177f277a2d48a5d537458fb Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Aug 10 18:04:50 2014 -0400 +Date: Sun Aug 10 18:04:50 2014 -0400 [wince] Try to fix some stuff on Windows CE @@ -1517,7 +2239,7 @@ Date: Sun Aug 10 18:04:50 2014 -0400 commit 92aeee3f040c2c32cbf70b27bd6954535388c870 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Aug 10 17:42:19 2014 -0400 +Date: Sun Aug 10 17:42:19 2014 -0400 Minor @@ -1527,7 +2249,7 @@ Date: Sun Aug 10 17:42:19 2014 -0400 commit b9993d8d6d332994dfbd29e99ff8043622003417 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Aug 10 17:40:24 2014 -0400 +Date: Sun Aug 10 17:40:24 2014 -0400 [coretext] Fix assert on Yosemite @@ -1541,7 +2263,7 @@ Date: Sun Aug 10 17:40:24 2014 -0400 commit 087733dd66e17297ef0e53680fafe42c84884104 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Apr 18 11:21:08 2014 -0700 +Date: Fri Apr 18 11:21:08 2014 -0700 [coretext] Use CGFont as face_data @@ -1550,7 +2272,7 @@ Date: Fri Apr 18 11:21:08 2014 -0700 commit d277c3d7eee1fd4fb41c38255e5c4df539353e89 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Aug 7 15:38:52 2014 -0400 +Date: Thu Aug 7 15:38:52 2014 -0400 [arabic] Bug 82306 - Mandaic had errors in its Unicode Joining_Type @@ -1561,7 +2283,7 @@ Date: Thu Aug 7 15:38:52 2014 -0400 commit 38fb30d7420a4b01f99cee31baa8c3990a1d1c5f Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Aug 6 13:34:49 2014 -0400 +Date: Wed Aug 6 13:34:49 2014 -0400 Use atexit() only if it's safe to call from shared library @@ -1572,17 +2294,17 @@ Date: Wed Aug 6 13:34:49 2014 -0400 https://bugs.freedesktop.org/show_bug.cgi?id=82246 - src/hb-common.cc | 4 ++-- - src/hb-ft.cc | 2 +- + src/hb-common.cc | 4 ++-- + src/hb-ft.cc | 2 +- src/hb-private.hh | 25 +++++++++++++++++++++++++ - src/hb-shape.cc | 2 +- - src/hb-shaper.cc | 2 +- - src/hb-uniscribe.cc | 2 +- + src/hb-shape.cc | 2 +- + src/hb-shaper.cc | 2 +- + src/hb-uniscribe.cc | 2 +- 6 files changed, 31 insertions(+), 6 deletions(-) commit d5e61470fa8e5046c35a79988e00e012ae4fff0f Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 5 14:19:01 2014 -0400 +Date: Tue Aug 5 14:19:01 2014 -0400 [arabic] Fix fallback shaping regression @@ -1592,28 +2314,28 @@ Date: Tue Aug 5 14:19:01 2014 -0400 Micro-test added. - src/hb-ot-shape-complex-arabic.cc | 4 ++-- - test/shaping/Makefile.am | 1 + - test/shaping/fonts/sha1sum/MANIFEST | 1 + + src/hb-ot-shape-complex-arabic.cc | 4 ++-- + test/shaping/Makefile.am | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 1 + .../sha1sum/df768b9c257e0c9c35786c47cae15c46571d56be.ttf | Bin 0 -> 6332 bytes - test/shaping/tests/MANIFEST | 1 + - test/shaping/tests/arabic-fallback-shaping.tests | 1 + + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/arabic-fallback-shaping.tests | 1 + 6 files changed, 6 insertions(+), 2 deletions(-) commit 91c2c0fd2b0f660d79744b3dfaf39ab86883e96b Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Aug 2 19:24:55 2014 -0400 +Date: Sat Aug 2 19:24:55 2014 -0400 0.9.34 - NEWS | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + NEWS | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 2 +- 2 files changed, 54 insertions(+), 1 deletion(-) commit d7c850f8037d2701366008eb8c2a527c9d40abde Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Aug 2 17:46:38 2014 -0400 +Date: Sat Aug 2 17:46:38 2014 -0400 [uniscribe] Minor @@ -1622,29 +2344,29 @@ Date: Sat Aug 2 17:46:38 2014 -0400 commit 8f3eebf7ee4005f9a8efaafcb7f4058cc0a3756e Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Aug 2 17:18:46 2014 -0400 +Date: Sat Aug 2 17:18:46 2014 -0400 Make sure gsubgpos buffer vars are available during fallback_position Add buffer var allocation asserts to a few key places. - src/hb-ot-layout-gpos-table.hh | 4 ++-- - src/hb-ot-layout-gsub-table.hh | 2 +- - src/hb-ot-layout-private.hh | 15 +++++++++++++++ + src/hb-ot-layout-gpos-table.hh | 4 ++-- + src/hb-ot-layout-gsub-table.hh | 2 +- + src/hb-ot-layout-private.hh | 15 +++++++++++++++ src/hb-ot-shape-complex-arabic-fallback.hh | 2 +- - src/hb-ot-shape-fallback.cc | 2 ++ - src/hb-ot-shape-normalize.cc | 2 ++ - src/hb-ot-shape.cc | 3 +++ + src/hb-ot-shape-fallback.cc | 2 ++ + src/hb-ot-shape-normalize.cc | 2 ++ + src/hb-ot-shape.cc | 3 +++ 7 files changed, 26 insertions(+), 4 deletions(-) commit 2053f369f84676f197ac41ea654a318c48922abd Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Aug 2 16:31:16 2014 -0400 +Date: Sat Aug 2 16:31:16 2014 -0400 Disable 'liga' for vertical text The reason we turned it on is because Kazuraki uses it. But that's - not reason enough. Until the OpenType spec gets its act together re + not reason enough. Until the OpenType spec gets its act together re adding design-direction to lookups, this is better user experience. src/hb-ot-shape.cc | 2 +- @@ -1652,7 +2374,7 @@ Date: Sat Aug 2 16:31:16 2014 -0400 commit 763e5466c0a03a7c27020e1e2598e488612529a7 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Aug 2 16:17:44 2014 -0400 +Date: Sat Aug 2 16:17:44 2014 -0400 Make it easier to use HB_BUFFER_FLAG_BOT/EOT @@ -1662,23 +2384,23 @@ Date: Sat Aug 2 16:17:44 2014 -0400 had code like this: hb_buffer_set_flags (hb_buffer, - (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) | - (item_offset + item_length == paragraph_length - ? - HB_BUFFER_FLAG_EOT : 0)); + (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) | + (item_offset + item_length == paragraph_length + ? + HB_BUFFER_FLAG_EOT : 0)); hb_buffer_add_utf8 (hb_buffer, - paragraph_text, paragraph_length, - item_offset, item_length); + paragraph_text, paragraph_length, + item_offset, item_length); After this change such clients can simply say: hb_buffer_set_flags (hb_buffer, - HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT); + HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT); hb_buffer_add_utf8 (hb_buffer, - paragraph_text, paragraph_length, - item_offset, item_length); + paragraph_text, paragraph_length, + item_offset, item_length); Ie, HarfBuzz itself checks whether the segment is at the beginning/end of the paragraph. Clients that only pass item-at-a-time to HarfBuzz @@ -1690,19 +2412,19 @@ Date: Sat Aug 2 16:17:44 2014 -0400 src/hb-ot-shape-complex-arabic.cc | 40 +++++++++++++++++++-------------------- - src/hb-ot-shape.cc | 1 + + src/hb-ot-shape.cc | 1 + 2 files changed, 20 insertions(+), 21 deletions(-) commit 0a5ae9336231c4d189e1682e4fd9c9c4552b8bbf Merge: ac53443 6ab6be3 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Aug 2 15:00:34 2014 -0400 +Date: Sat Aug 2 15:00:34 2014 -0400 Merge branch 'win1256' commit 6ab6be32c5857ce3344021ad2996e80b2a8c8f99 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Aug 2 14:58:38 2014 -0400 +Date: Sat Aug 2 14:58:38 2014 -0400 [arabic/win1256] Remove unused MultipleSubst macros @@ -1711,7 +2433,7 @@ Date: Sat Aug 2 14:58:38 2014 -0400 commit abfa4252cce1c56c472693dcd8400cd97ededd2f Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Aug 1 19:05:33 2014 -0400 +Date: Fri Aug 1 19:05:33 2014 -0400 [arabic/win1256] Really fix lam-alef this time @@ -1725,7 +2447,7 @@ Date: Fri Aug 1 19:05:33 2014 -0400 commit 55977f2a462b7fa1248eab3787053dc82320d3e5 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Aug 1 16:14:33 2014 -0400 +Date: Fri Aug 1 16:14:33 2014 -0400 [arabic/win1256] Hook up lamMedi lookup @@ -1740,7 +2462,7 @@ Date: Fri Aug 1 16:14:33 2014 -0400 commit e839e2523e64fd0cf21929f6a45e2facd59c7917 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Aug 1 16:09:31 2014 -0400 +Date: Fri Aug 1 16:09:31 2014 -0400 [arabic/win1256] Fix TEH MARBUTA final form @@ -1751,7 +2473,7 @@ Date: Fri Aug 1 16:09:31 2014 -0400 commit a2de193220ee2839125594bd1a60b5b66ab4598e Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Jul 31 18:21:05 2014 -0400 +Date: Thu Jul 31 18:21:05 2014 -0400 [arabic/win1256] Fix shaping of JEEM, HAH, and KHAH @@ -1762,7 +2484,7 @@ Date: Thu Jul 31 18:21:05 2014 -0400 commit 1789ccb1dd56af6117eac00e633eff94860ba252 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Jul 31 11:04:00 2014 -0400 +Date: Thu Jul 31 11:04:00 2014 -0400 [arabic/win1256] Remove GCC'ism @@ -1780,14 +2502,14 @@ Date: Thu Jul 31 11:04:00 2014 -0400 See: https://github.com/behdad/harfbuzz/commit/a97f537cec209649302899975d76ca2b2661da7a#commitcomment-7218736 - src/hb-ot-shape-complex-arabic-fallback.hh | 4 +- + src/hb-ot-shape-complex-arabic-fallback.hh | 4 +- src/hb-ot-shape-complex-arabic-win1256.hh | 123 +++++++++++++++++------------ 2 files changed, 75 insertions(+), 52 deletions(-) commit f28b1c823db2ad56fed356ef864a7508d23048b8 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Jul 30 02:15:44 2014 -0400 +Date: Wed Jul 30 02:15:44 2014 -0400 [arabic] Implement Windows-1256 private shaping @@ -1796,7 +2518,7 @@ Date: Wed Jul 30 02:15:44 2014 -0400 https://bugzilla.mozilla.org/show_bug.cgi?id=1045139 This is only enabled on Windows platforms, and requires support from - Uniscribe to work. But for clients that do hook up to Uniscribe, this + Uniscribe to work. But for clients that do hook up to Uniscribe, this fixes shaping of Windows-1256-encoded bitmap fonts like "MS Sans Serif". @@ -1805,8 +2527,8 @@ Date: Wed Jul 30 02:15:44 2014 -0400 UNTESTED. I might even have broken regular Arabic fallback shaping. - src/Makefile.am | 1 + - src/check-includes.sh | 2 +- + src/Makefile.am | 1 + + src/check-includes.sh | 2 +- src/hb-ot-shape-complex-arabic-fallback.hh | 125 +++++++++-- src/hb-ot-shape-complex-arabic-win1256.hh | 328 +++++++++++++++++++++++++++++ @@ -1814,7 +2536,7 @@ Date: Wed Jul 30 02:15:44 2014 -0400 commit ac53443f1cea83ed43a4e41a9fdb91902f7fae7b Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Jul 31 18:51:37 2014 -0400 +Date: Thu Jul 31 18:51:37 2014 -0400 [hangul] Don't apply 'calt' @@ -1822,22 +2544,22 @@ Date: Thu Jul 31 18:51:37 2014 -0400 Micro-test added. - src/hb-ot-shape-complex-hangul.cc | 11 + src/hb-ot-shape-complex-hangul.cc | 11 ++++++++++- - test/shaping/Makefile.am | 1 + + test/shaping/Makefile.am | 1 + .../sha1sum/757ebd573617a24aa9dfbf0b885c54875c6fe06b.ttf | Bin 0 -> 1804 bytes .../sha1sum/7e14e7883ed152baa158b80e207b66114c823a8b.ttf | Bin 0 -> 1644 bytes - test/shaping/fonts/sha1sum/MANIFEST | 2 ++ - test/shaping/tests/MANIFEST | 1 + - test/shaping/tests/hangul-jamo.tests | 11 + test/shaping/fonts/sha1sum/MANIFEST | 2 ++ + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/hangul-jamo.tests | 11 +++++++++++ 7 files changed, 25 insertions(+), 1 deletion(-) commit 8292f96b2be173ebceb1b54426c271cfeaecd633 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Jul 31 18:33:11 2014 -0400 +Date: Thu Jul 31 18:33:11 2014 -0400 [test] Fix record-test.sh @@ -1846,7 +2568,7 @@ Date: Thu Jul 31 18:33:11 2014 -0400 commit 88911e8cc765c26e502503a3a00ac7f17973f3d9 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Jul 29 19:47:26 2014 -0400 +Date: Tue Jul 29 19:47:26 2014 -0400 Minor @@ -1855,7 +2577,7 @@ Date: Tue Jul 29 19:47:26 2014 -0400 commit 9e834e29e0b657f0555df1ab9cea79ff7abcf08d Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Jul 26 20:34:01 2014 -0400 +Date: Sat Jul 26 20:34:01 2014 -0400 [hebrew] Zero mark advance by GDEF late @@ -1869,16 +2591,16 @@ Date: Sat Jul 26 20:34:01 2014 -0400 Micro-test added. - src/hb-ot-shape-complex-hebrew.cc | 2 +- + src/hb-ot-shape-complex-hebrew.cc | 2 +- .../sha1sum/8454d22037f892e76614e1645d066689a0200e61.ttf | Bin 0 -> 6068 bytes - test/shaping/fonts/sha1sum/MANIFEST | 1 + - test/shaping/tests/zero-width-marks.tests | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/zero-width-marks.tests | 1 + 4 files changed, 3 insertions(+), 1 deletion(-) commit 6f2d9ba52a6d1e3fc200da1ef0e85ba020fcd0dc Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Jul 26 19:17:44 2014 -0400 +Date: Sat Jul 26 19:17:44 2014 -0400 Add old-Myanmar shaper @@ -1891,30 +2613,30 @@ Date: Sat Jul 26 19:17:44 2014 -0400 Micro-test added based on Padauk. - src/hb-ot-shape-complex-myanmar.cc | 18 + src/hb-ot-shape-complex-myanmar.cc | 18 ++++++++++++++++++ - src/hb-ot-shape-complex-private.hh | 5 +++-- - test/shaping/Makefile.am | 1 + - test/shaping/fonts/sha1sum/MANIFEST | 1 + + src/hb-ot-shape-complex-private.hh | 5 +++-- + test/shaping/Makefile.am | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 1 + .../bb9473d2403488714043bcfb946c9f78b86ad627.ttf | Bin 0 -> 3440 bytes - test/shaping/tests/MANIFEST | 1 + - test/shaping/tests/zero-width-marks.tests | 1 + + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/zero-width-marks.tests | 1 + 7 files changed, 25 insertions(+), 2 deletions(-) commit 595d2b96c37de8147489dc5e0ddcc4ab1ad3eea9 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Jul 26 18:44:15 2014 -0400 +Date: Sat Jul 26 18:44:15 2014 -0400 Minor src/hb-ot-shape-complex-indic.cc | 1 + - src/hb-ot-shape.cc | 2 +- + src/hb-ot-shape.cc | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) commit fe6788bc570d77d5b3aafc68efd51ca6b80499b1 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jul 25 12:40:56 2014 -0400 +Date: Fri Jul 25 12:40:56 2014 -0400 Typo @@ -1923,7 +2645,7 @@ Date: Fri Jul 25 12:40:56 2014 -0400 commit 0de25d4184d2d92b1a2ebb6fa054275aaae4c316 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jul 25 12:35:03 2014 -0400 +Date: Fri Jul 25 12:35:03 2014 -0400 [util] Note CSS compatibility in --help-features @@ -1932,7 +2654,7 @@ Date: Fri Jul 25 12:35:03 2014 -0400 commit 6e69200a2aadbc6bba35ffb4a058c14286b84f46 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jul 25 12:30:47 2014 -0400 +Date: Fri Jul 25 12:30:47 2014 -0400 Fix snprintf() format @@ -1944,7 +2666,7 @@ Date: Fri Jul 25 12:30:47 2014 -0400 commit 5c5cdbbdf8be231c433e21b050a6c6991d327b61 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jul 25 12:21:49 2014 -0400 +Date: Fri Jul 25 12:21:49 2014 -0400 Make sure broken feature strings are not partially parsed @@ -1956,7 +2678,7 @@ Date: Fri Jul 25 12:21:49 2014 -0400 commit a795fe637846e0d9561d2f7cdd84cfafd58b23a7 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jul 25 12:15:33 2014 -0400 +Date: Fri Jul 25 12:15:33 2014 -0400 Allow quotation marks around feature tag in hb_feature_from_string() @@ -1967,7 +2689,7 @@ Date: Fri Jul 25 12:15:33 2014 -0400 commit 3f6461847412e78bcddc8eba97200f3afcde869a Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jul 25 12:04:27 2014 -0400 +Date: Fri Jul 25 12:04:27 2014 -0400 Allow space at the end of feature string with values, eg 'dlig=1 ' @@ -1976,7 +2698,7 @@ Date: Fri Jul 25 12:04:27 2014 -0400 commit f31f7d2259dd8edffc070af55938cb7aa23514c1 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jul 25 12:03:52 2014 -0400 +Date: Fri Jul 25 12:03:52 2014 -0400 Minor @@ -1985,7 +2707,7 @@ Date: Fri Jul 25 12:03:52 2014 -0400 commit 60cb18a5dea2d30793f89e80995bb729c014864a Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jul 25 12:01:22 2014 -0400 +Date: Fri Jul 25 12:01:22 2014 -0400 Allow on/off in hb_feature_from_string() @@ -1996,7 +2718,7 @@ Date: Fri Jul 25 12:01:22 2014 -0400 commit d9e618eca9e01c2eb6db65504af3f73be370a1e7 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jul 25 11:56:01 2014 -0400 +Date: Fri Jul 25 11:56:01 2014 -0400 Remove duplicate definition of ISALNUM @@ -2007,7 +2729,7 @@ Date: Fri Jul 25 11:56:01 2014 -0400 commit 2ee5f665ded86147acedc400153c0b3a90fe07c6 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jul 25 11:53:46 2014 -0400 +Date: Fri Jul 25 11:53:46 2014 -0400 Fix parsing of features like "- liga" (with the space) @@ -2016,7 +2738,7 @@ Date: Fri Jul 25 11:53:46 2014 -0400 commit e15fa7a8cffbe6a67b1048d7b87b7df77d8b1686 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jul 25 11:44:35 2014 -0400 +Date: Fri Jul 25 11:44:35 2014 -0400 Do not require the '=' in hb_feature_from_string() @@ -2027,7 +2749,7 @@ Date: Fri Jul 25 11:44:35 2014 -0400 commit f4fe9baefdb7e0ff9946f88b6f4b55738fa30cdf Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jul 25 11:39:55 2014 -0400 +Date: Fri Jul 25 11:39:55 2014 -0400 Reject tags longer than 4 chars in hb_feature_from_string() @@ -2036,22 +2758,22 @@ Date: Fri Jul 25 11:39:55 2014 -0400 commit 7e8c38954649c0bf2e6051d84ca08dce090ec169 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jul 25 11:18:11 2014 -0400 +Date: Fri Jul 25 11:18:11 2014 -0400 Minor warnings fixes Some systems insist on -Wmissing-field-initializers. We have too many, - by design. Fix a few easy ones. + by design. Fix a few easy ones. src/hb-open-type-private.hh | 2 +- src/hb-ot-layout-private.hh | 2 +- - src/hb-private.hh | 2 +- + src/hb-private.hh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit fc0daafab0336b847ac14682e581a8838f36a0bf Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Jul 23 16:48:51 2014 -0400 +Date: Wed Jul 23 16:48:51 2014 -0400 [indic] Handle old-spec Malayalam reordering with final Halant @@ -2059,20 +2781,20 @@ Date: Wed Jul 23 16:48:51 2014 -0400 Micro-tests added. - src/hb-ot-shape-complex-indic.cc | 28 + src/hb-ot-shape-complex-indic.cc | 28 +++++++++++++++++---- - test/shaping/Makefile.am | 1 + + test/shaping/Makefile.am | 1 + .../270b89df543a7e48e206a2d830c0e10e5265c630.ttf | Bin 0 -> 3428 bytes .../57a9d9f83020155cbb1d2be1f43d82388cbecc88.ttf | Bin 0 -> 2272 bytes - test/shaping/fonts/sha1sum/MANIFEST | 2 ++ - test/shaping/tests/MANIFEST | 1 + - test/shaping/tests/indic-old-spec.tests | 2 ++ - .../indic/script-malayalam/misc/misc.txt | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 2 ++ + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/indic-old-spec.tests | 2 ++ + .../indic/script-malayalam/misc/misc.txt | 1 + 8 files changed, 30 insertions(+), 5 deletions(-) commit d6d349d17898529ecdf8217a54987a3e9f81ce05 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Jul 23 11:38:49 2014 -0400 +Date: Wed Jul 23 11:38:49 2014 -0400 Give CC to gir-scanner @@ -2084,17 +2806,17 @@ Date: Wed Jul 23 11:38:49 2014 -0400 commit 8c1bdb46facb79cfca5ebfea9a7e467b40337f47 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Jul 22 17:56:43 2014 -0400 +Date: Tue Jul 22 17:56:43 2014 -0400 0.9.33 - NEWS | 10 ++++++++++ + NEWS | 10 ++++++++++ configure.ac | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) commit d218bdb26b226fbf68331eb586b24460c061313d Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Jul 22 18:01:46 2014 -0400 +Date: Tue Jul 22 18:01:46 2014 -0400 Fix test runner under Windows @@ -2103,7 +2825,7 @@ Date: Tue Jul 22 18:01:46 2014 -0400 commit 3f310dc0cae9015c45ba642b9b83d5695c807aad Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Jul 22 16:26:27 2014 -0400 +Date: Tue Jul 22 16:26:27 2014 -0400 Disallow changing settings on immutable face @@ -2116,7 +2838,7 @@ Date: Tue Jul 22 16:26:27 2014 -0400 commit 0fc0a1022854324261fea8893678a3e9fd9443eb Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Jul 21 11:12:54 2014 -0400 +Date: Mon Jul 21 11:12:54 2014 -0400 [win] Fix Cygwin build @@ -2127,7 +2849,7 @@ Date: Mon Jul 21 11:12:54 2014 -0400 commit 1132a7dd0ecf1c425078e39e5471330bace42659 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Jul 20 01:17:40 2014 -0400 +Date: Sun Jul 20 01:17:40 2014 -0400 Add HB_TAG_MAX_SIGNED / _HB_SCRIPT_MAX_VALUE_SIGNED @@ -2138,7 +2860,7 @@ Date: Sun Jul 20 01:17:40 2014 -0400 commit df99976398a53521e0228541055dcaee8f5ba87f Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Jul 19 17:31:23 2014 -0400 +Date: Sat Jul 19 17:31:23 2014 -0400 [gobject] Skip _HB_SCRIPT_MAX_VALUE @@ -2149,7 +2871,7 @@ Date: Sat Jul 19 17:31:23 2014 -0400 commit f1a8d50a87edfb8147aa1bec732ed7ccbfef2877 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Jul 19 16:52:32 2014 -0400 +Date: Sat Jul 19 16:52:32 2014 -0400 [win] Don't define visibility attribtue under Cygwin @@ -2158,7 +2880,7 @@ Date: Sat Jul 19 16:52:32 2014 -0400 commit 9c77027d645142794c3ff1590a96bb151c3f2e91 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Jul 19 16:37:22 2014 -0400 +Date: Sat Jul 19 16:37:22 2014 -0400 [win] Turn STRICT on for including windows.h @@ -2167,20 +2889,20 @@ Date: Sat Jul 19 16:37:22 2014 -0400 commit db308280488c2ee11ba865a9922eb6a0c1abeef3 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Jul 19 16:32:04 2014 -0400 +Date: Sat Jul 19 16:32:04 2014 -0400 [win] Consolidate windows.h include tips and tricks src/hb-atomic-private.hh | 4 ---- src/hb-mutex-private.hh | 1 - - src/hb-private.hh | 12 ++++++++++++ - src/hb-uniscribe.cc | 3 --- - src/hb-uniscribe.h | 3 --- + src/hb-private.hh | 12 ++++++++++++ + src/hb-uniscribe.cc | 3 --- + src/hb-uniscribe.h | 3 --- 5 files changed, 12 insertions(+), 11 deletions(-) commit f26d59d4684be3419c976d781b6dbc956248e3bb Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Jul 19 16:10:21 2014 -0400 +Date: Sat Jul 19 16:10:21 2014 -0400 More fixing MemoryBarrier() on Mingw32 @@ -2193,37 +2915,37 @@ Date: Sat Jul 19 16:10:21 2014 -0400 commit 00a57eb4b50fd894dc68c6525a5bbebf0ebc30e4 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jul 18 14:42:50 2014 -0400 +Date: Fri Jul 18 14:42:50 2014 -0400 [test] Remove unused micro-font - .../9d64156923a1b9fed1e05f74599c16563eca42d9.ttf | Bin 81968 -> + .../9d64156923a1b9fed1e05f74599c16563eca42d9.ttf | Bin 81968 -> 0 bytes - test/shaping/fonts/sha1sum/MANIFEST | 1 - + test/shaping/fonts/sha1sum/MANIFEST | 1 - 2 files changed, 1 deletion(-) commit ed29b15f5d0d9e7b40143926ca7d40bf645f67e9 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jul 18 14:37:49 2014 -0400 +Date: Fri Jul 18 14:37:49 2014 -0400 [test] Add more Mongolian variation selector tests From https://code.google.com/p/chromium/issues/detail?id=393896 - .../9d64156923a1b9fed1e05f74599c16563eca42d9.ttf | Bin 0 -> + .../9d64156923a1b9fed1e05f74599c16563eca42d9.ttf | Bin 0 -> 81968 bytes - test/shaping/fonts/sha1sum/MANIFEST | 2 ++ - .../bb29ce50df2bdba2d10726427c6b7609bf460e04.ttf | Bin 0 -> + test/shaping/fonts/sha1sum/MANIFEST | 2 ++ + .../bb29ce50df2bdba2d10726427c6b7609bf460e04.ttf | Bin 0 -> 74856 bytes - test/shaping/tests/mongolian-variation-selector.tests | 1 + - .../shaper-arabic/script-mongolian/misc/MANIFEST | 1 + - .../script-mongolian/misc/variation-selectors.txt | 8 ++++++++ + test/shaping/tests/mongolian-variation-selector.tests | 1 + + .../shaper-arabic/script-mongolian/misc/MANIFEST | 1 + + .../script-mongolian/misc/variation-selectors.txt | 8 ++++++++ 6 files changed, 12 insertions(+) commit 385cf37cf084198e3aedb4354a7b025938a9f11b Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Jul 17 18:22:07 2014 -0400 +Date: Thu Jul 17 18:22:07 2014 -0400 Fix hb_in_range() unused-var warning on Windows @@ -2232,7 +2954,7 @@ Date: Thu Jul 17 18:22:07 2014 -0400 commit e3b42f1af409c073b819bfc696024ccb1f1da63f Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Jul 17 17:13:54 2014 -0400 +Date: Thu Jul 17 17:13:54 2014 -0400 [arabic] Disable 'cswh' again @@ -2243,17 +2965,17 @@ Date: Thu Jul 17 17:13:54 2014 -0400 commit 66f30915b185727a0041c998641edb550eb8a7fc Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Jul 17 16:05:47 2014 -0400 +Date: Thu Jul 17 16:05:47 2014 -0400 0.9.32 - NEWS | 12 ++++++++++++ + NEWS | 12 ++++++++++++ configure.ac | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) commit 82f4d9d53f348f41b14b877c1ac77c0372c49caa Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Jul 17 15:57:37 2014 -0400 +Date: Thu Jul 17 15:57:37 2014 -0400 [arabic] Add note re disabled 'cswh' @@ -2262,7 +2984,7 @@ Date: Thu Jul 17 15:57:37 2014 -0400 commit 615d00ea252739da57edbd980ff27e573f88ee7e Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Jul 17 13:36:09 2014 -0400 +Date: Thu Jul 17 13:36:09 2014 -0400 [arabic] Apply init/medi/isol/fini/... in separate stages @@ -2271,20 +2993,20 @@ Date: Thu Jul 17 13:36:09 2014 -0400 Micro-tests for Arabic and Mongolian added for the latter. - src/hb-ot-shape-complex-arabic.cc | 56 + src/hb-ot-shape-complex-arabic.cc | 56 +++++++++++++-------- - test/shaping/Makefile.am | 2 + + test/shaping/Makefile.am | 2 + .../813c2f8e5512187fd982417a7fb4286728e6f4a8.ttf | Bin 0 -> 3428 bytes .../8a9fea2a7384f2116e5b84a9b31f83be7850ce21.ttf | Bin 0 -> 3428 bytes - test/shaping/fonts/sha1sum/MANIFEST | 3 ++ + test/shaping/fonts/sha1sum/MANIFEST | 3 ++ .../a919b33197965846f21074b24e30250d67277bce.ttf | Bin 0 -> 12560 bytes - test/shaping/tests/MANIFEST | 1 + - test/shaping/tests/arabic-feature-order.tests | 3 ++ + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/arabic-feature-order.tests | 3 ++ 8 files changed, 43 insertions(+), 22 deletions(-) commit d21e997035b16e9807dfb29c3605abb93f92f1ee Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Jul 17 15:27:46 2014 -0400 +Date: Thu Jul 17 15:27:46 2014 -0400 [test] Make record_test understand cmdline args to hb-shape @@ -2293,23 +3015,23 @@ Date: Thu Jul 17 15:27:46 2014 -0400 commit 7cd33f230441093dbfb1fec48f8c580ee8d9ef71 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Jul 17 14:22:11 2014 -0400 +Date: Thu Jul 17 14:22:11 2014 -0400 Micro optimization - src/hb-fallback-shape.cc | 36 + src/hb-fallback-shape.cc | 36 +++++++++++++++++++----------------- src/hb-ot-shape-complex-arabic.cc | 19 +++++++++++-------- src/hb-ot-shape-complex-indic.cc | 15 ++++++++++----- src/hb-ot-shape-complex-myanmar.cc | 7 +++++-- src/hb-ot-shape-complex-sea.cc | 7 +++++-- - src/hb-ot-shape-fallback.cc | 30 ++++++++++++++++-------------- - src/hb-ot-shape.cc | 18 ++++++++++++------ + src/hb-ot-shape-fallback.cc | 30 ++++++++++++++++-------------- + src/hb-ot-shape.cc | 18 ++++++++++++------ 7 files changed, 78 insertions(+), 54 deletions(-) commit 164c13d73f67fdddba28e6409d76b4903e8ffab3 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Jul 17 14:16:38 2014 -0400 +Date: Thu Jul 17 14:16:38 2014 -0400 Another try to fix Mongolian free variation selectors @@ -2321,23 +3043,23 @@ Date: Thu Jul 17 14:16:38 2014 -0400 https://code.google.com/p/chromium/issues/detail?id=393896 - src/hb-ot-shape-complex-arabic.cc | 24 + src/hb-ot-shape-complex-arabic.cc | 24 +++++++++++++++------ - src/hb-unicode-private.hh | 3 ++- - test/shaping/fonts/sha1sum/MANIFEST | 1 + + src/hb-unicode-private.hh | 3 ++- + test/shaping/fonts/sha1sum/MANIFEST | 1 + .../ef86fe710cfea877bbe0dbb6946a1f88d0661031.ttf | Bin 0 -> 2748 bytes - .../tests/mongolian-variation-selector.tests | 1 + + .../tests/mongolian-variation-selector.tests | 1 + 5 files changed, 22 insertions(+), 7 deletions(-) commit 5209c505061130854a2bfea8849928ade3ee92f3 Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Jul 17 12:23:44 2014 -0400 +Date: Thu Jul 17 12:23:44 2014 -0400 Revert "Show U+FFFD REPLACEMENT CHARACTER for invalid Unicode codepoints" We now handle U+FFFD replacement in hb_buffer_add_utf*(). Any other - manipulation can happen in user callbacks. No need for this. + manipulation can happen in user callbacks. No need for this. https://github.com/behdad/harfbuzz/commit/efe74214bbb68eaa3d7621e73869b5d58210107e#commitcomment-7039404 diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/Makefile.am index 58afd9b923c..47aeb97768e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/Makefile.am +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/Makefile.am @@ -19,6 +19,7 @@ MAINTAINERCLEANFILES = \ $(GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN) \ $(srcdir)/INSTALL \ $(srcdir)/ChangeLog \ + $(srcdir)/gtk-doc.make \ $(NULL) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/NEWS b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/NEWS index 3a33bdf5cb5..dbbfbba195f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/NEWS +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/NEWS @@ -1,3 +1,13 @@ +Overview of changes leading to 0.9.39 +Wednesday, March 4, 2015 +===================================== + +- Critical hb-coretext fixes. +- Optimizations and refactoring; no functional change + expected. +- Misc build fixes. + + Overview of changes leading to 0.9.38 Friday, January 23, 2015 ===================================== diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/README b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/README index d34bc74f997..d34bc74f997 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/README +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/README diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/README.python b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/README.python index eabdf5bbb56..eabdf5bbb56 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/README.python +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/README.python diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/THANKS b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/THANKS index 940cfde5c39..940cfde5c39 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/THANKS +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/THANKS diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/TODO b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/TODO index e1aa39c4c01..e1aa39c4c01 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/TODO +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/TODO diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/autogen.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/autogen.sh index a267f297b06..a81d2aacd09 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/autogen.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/autogen.sh @@ -19,17 +19,22 @@ which pkg-config || { exit 1 } +echo -n "checking for libtoolize... " +which libtoolize || { + echo "*** No libtoolize (libtool) found, please install it ***" + exit 1 +} echo -n "checking for gtkdocize... " if which gtkdocize ; then gtkdocize --copy || exit 1 else - echo "*** No gtkdocize found, skipping documentation ***" + echo "*** No gtkdocize (gtk-doc) found, skipping documentation ***" echo "EXTRA_DIST = " > gtk-doc.make fi echo -n "checking for autoreconf... " which autoreconf || { - echo "*** No autoreconf found, please install it ***" + echo "*** No autoreconf (autoconf) found, please install it ***" exit 1 } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/config.h.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/config.h.in index 35395c36138..35395c36138 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/config.h.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/config.h.in diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/configure.ac index 3e42d95b4b9..166a121e912 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/configure.ac +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ([2.64]) AC_INIT([HarfBuzz], - [0.9.38], + [0.9.39], [http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz], [harfbuzz], [http://harfbuzz.org/]) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/gtk-doc.make b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/gtk-doc.make index e7916563d75..e7916563d75 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/gtk-doc.make +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/gtk-doc.make diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/harfbuzz.doap b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/harfbuzz.doap index d2896ebefa8..d2896ebefa8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/harfbuzz.doap +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/harfbuzz.doap diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/Makefile.am index c99967f6904..c99967f6904 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/Makefile.am +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/Makefile.am diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-c-linkage-decls.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-c-linkage-decls.sh index b10310f5384..b10310f5384 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-c-linkage-decls.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-c-linkage-decls.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-defs.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-defs.sh index 65a24670e48..65a24670e48 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-defs.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-defs.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-header-guards.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-header-guards.sh index 9a3302c7f87..9a3302c7f87 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-header-guards.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-header-guards.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-includes.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-includes.sh index 902f2357e2a..902f2357e2a 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-includes.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-includes.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-libstdc++.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-libstdc++.sh index 27deb42dc97..27deb42dc97 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-libstdc++.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-libstdc++.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-static-inits.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-static-inits.sh index 1446fa73405..1446fa73405 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-static-inits.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-static-inits.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-symbols.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-symbols.sh index b2bf43fcea5..b2bf43fcea5 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/check-symbols.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/check-symbols.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/gen-arabic-table.py b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/gen-arabic-table.py index 308435f991e..308435f991e 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/gen-arabic-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/gen-arabic-table.py diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/gen-indic-table.py b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/gen-indic-table.py index f5716bda789..f5716bda789 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/gen-indic-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/gen-indic-table.py diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/harfbuzz-gobject.pc.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/harfbuzz-gobject.pc.in index 70083601901..70083601901 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/harfbuzz-gobject.pc.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/harfbuzz-gobject.pc.in diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/harfbuzz-icu.pc.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/harfbuzz-icu.pc.in index 949869a3563..949869a3563 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/harfbuzz-icu.pc.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/harfbuzz-icu.pc.in diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/harfbuzz.pc.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/harfbuzz.pc.in index 7f27bbbdef0..7f27bbbdef0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/harfbuzz.pc.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/harfbuzz.pc.in diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-atomic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-atomic-private.hh index e6738b7d9f6..e6738b7d9f6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-atomic-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-atomic-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-blob.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-blob.cc index 8759a252a57..8759a252a57 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-blob.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-blob.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-blob.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-blob.h index b2419abfd2a..b2419abfd2a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-blob.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-blob.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-deserialize-json.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-deserialize-json.hh index 3f626bda40d..3f626bda40d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-deserialize-json.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-deserialize-json.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-deserialize-json.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-deserialize-json.rl index 91b350f5ac0..91b350f5ac0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-deserialize-json.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-deserialize-json.rl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-deserialize-text.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-deserialize-text.hh index 7a46ab278be..7a46ab278be 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-deserialize-text.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-deserialize-text.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-deserialize-text.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-deserialize-text.rl index 8856580fbe3..8856580fbe3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-deserialize-text.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-deserialize-text.rl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-private.hh index 069f9255811..069f9255811 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-serialize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-serialize.cc index 406d69db758..406d69db758 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer-serialize.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer-serialize.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer.cc index 7bf232d7603..942177cbd05 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer.cc @@ -454,7 +454,7 @@ hb_buffer_t::reverse_range (unsigned int start, info[j] = t; } - if (pos) { + if (have_positions) { for (i = start, j = end - 1; i < j; i++, j--) { hb_glyph_position_t t; @@ -1328,15 +1328,15 @@ hb_buffer_guess_segment_properties (hb_buffer_t *buffer) buffer->guess_segment_properties (); } -template <bool validate, typename T> +template <typename utf_t> static inline void hb_buffer_add_utf (hb_buffer_t *buffer, - const T *text, + const typename utf_t::codepoint_t *text, int text_length, unsigned int item_offset, int item_length) { - typedef hb_utf_t<T, true> utf_t; + typedef typename utf_t::codepoint_t T; const hb_codepoint_t replacement = buffer->replacement; assert (buffer->content_type == HB_BUFFER_CONTENT_TYPE_UNICODE || @@ -1416,7 +1416,7 @@ hb_buffer_add_utf8 (hb_buffer_t *buffer, unsigned int item_offset, int item_length) { - hb_buffer_add_utf<true> (buffer, (const uint8_t *) text, text_length, item_offset, item_length); + hb_buffer_add_utf<hb_utf8_t> (buffer, (const uint8_t *) text, text_length, item_offset, item_length); } /** @@ -1438,7 +1438,7 @@ hb_buffer_add_utf16 (hb_buffer_t *buffer, unsigned int item_offset, int item_length) { - hb_buffer_add_utf<true> (buffer, text, text_length, item_offset, item_length); + hb_buffer_add_utf<hb_utf16_t> (buffer, text, text_length, item_offset, item_length); } /** @@ -1460,7 +1460,29 @@ hb_buffer_add_utf32 (hb_buffer_t *buffer, unsigned int item_offset, int item_length) { - hb_buffer_add_utf<true> (buffer, text, text_length, item_offset, item_length); + hb_buffer_add_utf<hb_utf32_t<> > (buffer, text, text_length, item_offset, item_length); +} + +/** + * hb_buffer_add_latin1: + * @buffer: a buffer. + * @text: (array length=text_length) (element-type uint8_t): + * @text_length: + * @item_offset: + * @item_length: + * + * + * + * Since: 1.0 + **/ +void +hb_buffer_add_latin1 (hb_buffer_t *buffer, + const uint8_t *text, + int text_length, + unsigned int item_offset, + int item_length) +{ + hb_buffer_add_utf<hb_latin1_t> (buffer, text, text_length, item_offset, item_length); } /** @@ -1482,7 +1504,7 @@ hb_buffer_add_codepoints (hb_buffer_t *buffer, unsigned int item_offset, int item_length) { - hb_buffer_add_utf<false> (buffer, text, text_length, item_offset, item_length); + hb_buffer_add_utf<hb_utf32_t<false> > (buffer, text, text_length, item_offset, item_length); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer.h index 7b0c9204688..e5b46d867a4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-buffer.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-buffer.h @@ -253,6 +253,14 @@ hb_buffer_add_utf32 (hb_buffer_t *buffer, unsigned int item_offset, int item_length); +/* Allows only access to first 256 Unicode codepoints. */ +void +hb_buffer_add_latin1 (hb_buffer_t *buffer, + const uint8_t *text, + int text_length, + unsigned int item_offset, + int item_length); + /* Like add_utf32 but does NOT check for invalid Unicode codepoints. */ void hb_buffer_add_codepoints (hb_buffer_t *buffer, diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-cache-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-cache-private.hh index 19b70b7e395..19b70b7e395 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-cache-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-cache-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-common.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-common.cc index 8837cefbf7d..05a1f9ce19d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-common.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-common.cc @@ -265,6 +265,7 @@ retry: *lang = key; if (!hb_atomic_ptr_cmpexch (&langs, first_lang, lang)) { + lang->finish (); free (lang); goto retry; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-common.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-common.h index b6ce3f724de..b6ce3f724de 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-common.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-common.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-coretext.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-coretext.cc index 16e069d4948..4a451752879 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-coretext.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-coretext.cc @@ -787,6 +787,7 @@ retry: buffer->len = 0; uint32_t status_and = ~0, status_or = 0; + double advances_so_far = 0; const CFRange range_all = CFRangeMake (0, 0); @@ -797,6 +798,10 @@ retry: status_or |= run_status; status_and &= run_status; DEBUG_MSG (CORETEXT, run, "CTRunStatus: %x", run_status); + double run_advance = CTRunGetTypographicBounds (run, range_all, NULL, NULL, NULL); + if (HB_DIRECTION_IS_VERTICAL (buffer->props.direction)) + run_advance = -run_advance; + DEBUG_MSG (CORETEXT, run, "Run advance: %g", run_advance); /* CoreText does automatic font fallback (AKA "cascading") for characters * not supported by the requested font, and provides no way to turn it off, @@ -892,6 +897,8 @@ retry: * for this one. */ continue; } + if (buffer->unicode->is_default_ignorable (ch)) + continue; info->codepoint = notdef; info->cluster = log_clusters[j]; @@ -905,6 +912,7 @@ retry: } if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction)) buffer->reverse_range (old_len, buffer->len); + advances_so_far += run_advance; continue; } } @@ -934,7 +942,7 @@ retry: scratch_size = scratch_size_saved; \ scratch = scratch_saved; - { + { /* Setup glyphs */ SCRATCH_SAVE(); const CGGlyph* glyphs = USE_PTR ? CTRunGetGlyphsPtr (run) : NULL; if (!glyphs) { @@ -958,6 +966,11 @@ retry: SCRATCH_RESTORE(); } { + /* Setup positions. + * Note that CoreText does not return advances for glyphs. As such, + * for all but last glyph, we use the delta position to next glyph as + * advance (in the advance direction only), and for last glyph we set + * whatever is needed to make the whole run's advance add up. */ SCRATCH_SAVE(); const CGPoint* positions = USE_PTR ? CTRunGetPositionsPtr (run) : NULL; if (!positions) { @@ -965,34 +978,42 @@ retry: CTRunGetPositions (run, range_all, position_buf); positions = position_buf; } - double run_advance = CTRunGetTypographicBounds (run, range_all, NULL, NULL, NULL); - DEBUG_MSG (CORETEXT, run, "Run advance: %g", run_advance); hb_glyph_info_t *info = run_info; CGFloat x_mult = font_data->x_mult, y_mult = font_data->y_mult; if (HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction)) { + hb_position_t x_offset = (positions[0].x - advances_so_far) * x_mult; for (unsigned int j = 0; j < num_glyphs; j++) { - double advance = (j + 1 < num_glyphs ? positions[j + 1].x : positions[0].x + run_advance) - positions[j].x; + double advance; + if (likely (j + 1 < num_glyphs)) + advance = positions[j + 1].x - positions[j].x; + else /* last glyph */ + advance = run_advance - (positions[j].x - positions[0].x); info->mask = advance * x_mult; - info->var1.u32 = positions[0].x * x_mult; /* Yes, zero. */ + info->var1.u32 = x_offset; info->var2.u32 = positions[j].y * y_mult; info++; } } else { - run_advance = -run_advance; + hb_position_t y_offset = (positions[0].y - advances_so_far) * y_mult; for (unsigned int j = 0; j < num_glyphs; j++) { - double advance = (j + 1 < num_glyphs ? positions[j + 1].y : positions[0].y + run_advance) - positions[j].y; + double advance; + if (likely (j + 1 < num_glyphs)) + advance = positions[j + 1].y - positions[j].y; + else /* last glyph */ + advance = run_advance - (positions[j].y - positions[0].y); info->mask = advance * y_mult; info->var1.u32 = positions[j].x * x_mult; - info->var2.u32 = positions[0].y * y_mult; /* Yes, zero. */ + info->var2.u32 = y_offset; info++; } } SCRATCH_RESTORE(); + advances_so_far += run_advance; } #undef SCRATCH_RESTORE #undef SCRATCH_SAVE diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-coretext.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-coretext.h index 25267bc9784..25267bc9784 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-coretext.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-coretext.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-deprecated.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-deprecated.h index 30ae4b1caf7..30ae4b1caf7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-deprecated.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-deprecated.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-face-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-face-private.hh index c4266fff4f0..c4266fff4f0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-face-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-face-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-face.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-face.cc index 9348af7bf8e..9348af7bf8e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-face.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-face.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-face.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-face.h index f682c468de5..f682c468de5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-face.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-face.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-fallback-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-fallback-shape.cc index 9d061a9e845..9d061a9e845 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-fallback-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-fallback-shape.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-font-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-font-private.hh index 33bbf7143a2..33bbf7143a2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-font-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-font-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-font.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-font.cc index 4364ca72fb0..4364ca72fb0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-font.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-font.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-font.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-font.h index 7273db43eda..7273db43eda 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-font.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-font.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ft.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ft.cc index f57f566f6f9..322f93a8efc 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ft.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ft.cc @@ -118,6 +118,9 @@ hb_ft_get_glyph_v_advance (hb_font_t *font HB_UNUSED, if (unlikely (FT_Get_Advance (ft_face, glyph, load_flags, &v))) return 0; + if (font->y_scale < 0) + v = -v; + /* Note: FreeType's vertical metrics grows downward while other FreeType coordinates * have a Y growing upward. Hence the extra negation. */ return (-v + (1<<9)) >> 10; @@ -154,6 +157,11 @@ hb_ft_get_glyph_v_origin (hb_font_t *font HB_UNUSED, *x = ft_face->glyph->metrics.horiBearingX - ft_face->glyph->metrics.vertBearingX; *y = ft_face->glyph->metrics.horiBearingY - (-ft_face->glyph->metrics.vertBearingY); + if (font->x_scale < 0) + *x = -*x; + if (font->y_scale < 0) + *y = -*y; + return true; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ft.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ft.h index 92f4b361441..92f4b361441 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ft.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ft.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-glib.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-glib.cc index 61dff5e3d6f..61dff5e3d6f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-glib.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-glib.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-glib.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-glib.h index 1a8f42ea529..1a8f42ea529 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-glib.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-glib.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-gobject-enums.cc.tmpl b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-gobject-enums.cc.tmpl index ca458a3846c..ca458a3846c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-gobject-enums.cc.tmpl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-gobject-enums.cc.tmpl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-gobject-enums.h.tmpl b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-gobject-enums.h.tmpl index 6ecda06c2a6..6ecda06c2a6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-gobject-enums.h.tmpl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-gobject-enums.h.tmpl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-gobject-structs.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-gobject-structs.cc index 2451b66291b..2451b66291b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-gobject-structs.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-gobject-structs.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-gobject-structs.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-gobject-structs.h index 4a88d569e8d..4a88d569e8d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-gobject-structs.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-gobject-structs.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-gobject.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-gobject.h index ea1bd25df82..ea1bd25df82 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-gobject.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-gobject.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-graphite2.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-graphite2.cc index 807c3308771..807c3308771 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-graphite2.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-graphite2.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-graphite2.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-graphite2.h index 3eae54acbd8..3eae54acbd8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-graphite2.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-graphite2.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-icu.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-icu.cc index 24cec9d7266..24cec9d7266 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-icu.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-icu.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-icu.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-icu.h index f2f35f0f2ce..f2f35f0f2ce 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-icu.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-icu.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-mutex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-mutex-private.hh index 62812019585..a8ea39ccfd9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-mutex-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-mutex-private.hh @@ -47,7 +47,11 @@ #include <windows.h> typedef CRITICAL_SECTION hb_mutex_impl_t; #define HB_MUTEX_IMPL_INIT {0} +#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP) +#define hb_mutex_impl_init(M) InitializeCriticalSectionEx (M, 0, 0) +#else #define hb_mutex_impl_init(M) InitializeCriticalSection (M) +#endif #define hb_mutex_impl_lock(M) EnterCriticalSection (M) #define hb_mutex_impl_unlock(M) LeaveCriticalSection (M) #define hb_mutex_impl_finish(M) DeleteCriticalSection (M) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-object-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-object-private.hh index 7bd0f1624b5..7bd0f1624b5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-object-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-object-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-open-file-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-open-file-private.hh index 7500c32f156..178bc7ccb85 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-open-file-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-open-file-private.hh @@ -53,7 +53,8 @@ struct TTCHeader; typedef struct TableRecord { - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this)); } @@ -102,7 +103,8 @@ typedef struct OffsetTable } public: - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && c->check_array (tables, TableRecord::static_size, numTables)); } @@ -130,7 +132,8 @@ struct TTCHeaderVersion1 inline unsigned int get_face_count (void) const { return table.len; } inline const OpenTypeFontFace& get_face (unsigned int i) const { return this+table[i]; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (table.sanitize (c, this)); } @@ -169,7 +172,8 @@ struct TTCHeader } } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (unlikely (!u.header.version.sanitize (c))) return TRACE_RETURN (false); switch (u.header.version.major) { @@ -233,7 +237,8 @@ struct OpenTypeFontFile } } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (unlikely (!u.tag.sanitize (c))) return TRACE_RETURN (false); switch (u.tag) { diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-open-type-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-open-type-private.hh index 477d9e28b2c..75a0f568d11 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-open-type-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-open-type-private.hh @@ -179,10 +179,13 @@ struct hb_sanitize_context_t inline const char *get_name (void) { return "SANITIZE"; } static const unsigned int max_debug_depth = HB_DEBUG_SANITIZE; typedef bool return_t; + template <typename T, typename F> + inline bool may_dispatch (const T *obj, const F *format) + { return format->sanitize (this); } template <typename T> inline return_t dispatch (const T &obj) { return obj.sanitize (this); } static return_t default_return_value (void) { return true; } - bool stop_sublookup_iteration (const return_t r HB_UNUSED) const { return false; } + bool stop_sublookup_iteration (const return_t r) const { return !r; } inline void init (hb_blob_t *b) { @@ -270,9 +273,9 @@ struct hb_sanitize_context_t } template <typename Type, typename ValueType> - inline bool try_set (Type *obj, const ValueType &v) { + inline bool try_set (const Type *obj, const ValueType &v) { if (this->may_edit (obj, obj->static_size)) { - obj->set (v); + const_cast<Type *> (obj)->set (v); return true; } return false; @@ -546,12 +549,6 @@ struct BEInt<Type, 2> return (v[0] << 8) + (v[1] ); } - inline bool operator == (const BEInt<Type, 2>& o) const - { - return v[0] == o.v[0] - && v[1] == o.v[1]; - } - inline bool operator != (const BEInt<Type, 2>& o) const { return !(*this == o); } private: uint8_t v[2]; }; template <typename Type> @@ -570,13 +567,6 @@ struct BEInt<Type, 3> + (v[1] << 8) + (v[2] ); } - inline bool operator == (const BEInt<Type, 3>& o) const - { - return v[0] == o.v[0] - && v[1] == o.v[1] - && v[2] == o.v[2]; - } - inline bool operator != (const BEInt<Type, 3>& o) const { return !(*this == o); } private: uint8_t v[3]; }; template <typename Type> @@ -597,14 +587,6 @@ struct BEInt<Type, 4> + (v[2] << 8) + (v[3] ); } - inline bool operator == (const BEInt<Type, 4>& o) const - { - return v[0] == o.v[0] - && v[1] == o.v[1] - && v[2] == o.v[2] - && v[3] == o.v[3]; - } - inline bool operator != (const BEInt<Type, 4>& o) const { return !(*this == o); } private: uint8_t v[4]; }; @@ -614,12 +596,19 @@ struct IntType { inline void set (Type i) { v.set (i); } inline operator Type(void) const { return v; } - inline bool operator == (const IntType<Type,Size> &o) const { return v == o.v; } - inline bool operator != (const IntType<Type,Size> &o) const { return v != o.v; } + inline bool operator == (const IntType<Type,Size> &o) const { return (Type) v == (Type) o.v; } + inline bool operator != (const IntType<Type,Size> &o) const { return !(*this == o); } static inline int cmp (const IntType<Type,Size> *a, const IntType<Type,Size> *b) { return b->cmp (*a); } - inline int cmp (IntType<Type,Size> va) const { Type a = va; Type b = v; return a < b ? -1 : a == b ? 0 : +1; } - inline int cmp (Type a) const { Type b = v; return a < b ? -1 : a == b ? 0 : +1; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline int cmp (Type a) const + { + Type b = v; + if (sizeof (Type) < sizeof (int)) + return (int) a - (int) b; + else + return a < b ? -1 : a == b ? 0 : +1; + } + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (likely (c->check_struct (this))); } @@ -646,7 +635,8 @@ typedef USHORT UFWORD; * 1904. The value is represented as a signed 64-bit integer. */ struct LONGDATETIME { - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (likely (c->check_struct (this))); } @@ -670,7 +660,10 @@ struct Tag : ULONG DEFINE_NULL_DATA (Tag, " "); /* Glyph index number, same as uint16 (length = 16 bits) */ -typedef USHORT GlyphID; +struct GlyphID : USHORT { + static inline int cmp (const GlyphID *a, const GlyphID *b) { return b->USHORT::cmp (*a); } + inline int cmp (hb_codepoint_t a) const { return (int) a - (int) *this; } +}; /* Script/language-system/feature index */ struct Index : USHORT { @@ -719,7 +712,8 @@ struct FixedVersion { inline uint32_t to_int (void) const { return (major << 16) + minor; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this)); } @@ -747,33 +741,35 @@ struct OffsetTo : Offset<OffsetType> return StructAtOffset<Type> (base, offset); } - inline Type& serialize (hb_serialize_context_t *c, void *base) + inline Type& serialize (hb_serialize_context_t *c, const void *base) { Type *t = c->start_embed<Type> (); this->set ((char *) t - (char *) base); /* TODO(serialize) Overflow? */ return *t; } - inline bool sanitize (hb_sanitize_context_t *c, void *base) { + inline bool sanitize (hb_sanitize_context_t *c, const void *base) const + { TRACE_SANITIZE (this); if (unlikely (!c->check_struct (this))) return TRACE_RETURN (false); unsigned int offset = *this; if (unlikely (!offset)) return TRACE_RETURN (true); - Type &obj = StructAtOffset<Type> (base, offset); + const Type &obj = StructAtOffset<Type> (base, offset); return TRACE_RETURN (likely (obj.sanitize (c)) || neuter (c)); } template <typename T> - inline bool sanitize (hb_sanitize_context_t *c, void *base, T user_data) { + inline bool sanitize (hb_sanitize_context_t *c, const void *base, T user_data) const + { TRACE_SANITIZE (this); if (unlikely (!c->check_struct (this))) return TRACE_RETURN (false); unsigned int offset = *this; if (unlikely (!offset)) return TRACE_RETURN (true); - Type &obj = StructAtOffset<Type> (base, offset); + const Type &obj = StructAtOffset<Type> (base, offset); return TRACE_RETURN (likely (obj.sanitize (c, user_data)) || neuter (c)); } /* Set the offset to Null */ - inline bool neuter (hb_sanitize_context_t *c) { + inline bool neuter (hb_sanitize_context_t *c) const { return c->try_set (this, 0); } DEFINE_SIZE_STATIC (sizeof(OffsetType)); @@ -838,7 +834,8 @@ struct ArrayOf return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (unlikely (!sanitize_shallow (c))) return TRACE_RETURN (false); @@ -853,7 +850,8 @@ struct ArrayOf return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c, void *base) { + inline bool sanitize (hb_sanitize_context_t *c, const void *base) const + { TRACE_SANITIZE (this); if (unlikely (!sanitize_shallow (c))) return TRACE_RETURN (false); unsigned int count = len; @@ -863,7 +861,8 @@ struct ArrayOf return TRACE_RETURN (true); } template <typename T> - inline bool sanitize (hb_sanitize_context_t *c, void *base, T user_data) { + inline bool sanitize (hb_sanitize_context_t *c, const void *base, T user_data) const + { TRACE_SANITIZE (this); if (unlikely (!sanitize_shallow (c))) return TRACE_RETURN (false); unsigned int count = len; @@ -884,7 +883,8 @@ struct ArrayOf } private: - inline bool sanitize_shallow (hb_sanitize_context_t *c) { + inline bool sanitize_shallow (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && c->check_array (this, Type::static_size, len)); } @@ -910,12 +910,14 @@ struct OffsetListOf : OffsetArrayOf<Type> return this+this->array[i]; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (OffsetArrayOf<Type>::sanitize (c, this)); } template <typename T> - inline bool sanitize (hb_sanitize_context_t *c, T user_data) { + inline bool sanitize (hb_sanitize_context_t *c, T user_data) const + { TRACE_SANITIZE (this); return TRACE_RETURN (OffsetArrayOf<Type>::sanitize (c, this, user_data)); } @@ -949,12 +951,14 @@ struct HeadlessArrayOf return TRACE_RETURN (true); } - inline bool sanitize_shallow (hb_sanitize_context_t *c) { + inline bool sanitize_shallow (hb_sanitize_context_t *c) const + { return c->check_struct (this) && c->check_array (this, Type::static_size, len); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (unlikely (!sanitize_shallow (c))) return TRACE_RETURN (false); diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-cmap-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-cmap-table.hh index d53141157d0..04823125538 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-cmap-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-cmap-table.hh @@ -51,7 +51,8 @@ struct CmapSubtableFormat0 return true; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this)); } @@ -125,7 +126,7 @@ struct CmapSubtableFormat4 return true; } - inline bool sanitize (hb_sanitize_context_t *c) + inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); if (unlikely (!c->check_struct (this))) @@ -183,7 +184,8 @@ struct CmapSubtableLongGroup return 0; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this)); } @@ -210,7 +212,8 @@ struct CmapSubtableTrimmed return true; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && glyphIdArray.sanitize (c)); } @@ -242,7 +245,8 @@ struct CmapSubtableLongSegmented return true; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && groups.sanitize (c)); } @@ -288,7 +292,8 @@ struct UnicodeValueRange return 0; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this)); } @@ -309,7 +314,8 @@ struct UVSMapping return unicodeValue.cmp (codepoint); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this)); } @@ -348,7 +354,8 @@ struct VariationSelectorRecord return varSelector.cmp (variation_selector); } - inline bool sanitize (hb_sanitize_context_t *c, void *base) { + inline bool sanitize (hb_sanitize_context_t *c, const void *base) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && defaultUVS.sanitize (c, base) && @@ -373,7 +380,8 @@ struct CmapSubtableFormat14 return record[record.bsearch(variation_selector)].get_glyph (codepoint, glyph, this); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && record.sanitize (c, this)); @@ -418,7 +426,8 @@ struct CmapSubtable } } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (!u.format.sanitize (c)) return TRACE_RETURN (false); switch (u.format) { @@ -461,7 +470,8 @@ struct EncodingRecord return 0; } - inline bool sanitize (hb_sanitize_context_t *c, void *base) { + inline bool sanitize (hb_sanitize_context_t *c, const void *base) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && subtable.sanitize (c, base)); @@ -496,7 +506,8 @@ struct cmap return &(this+encodingRecord[result].subtable); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && likely (version == 0) && diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-font.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-font.cc index 2af2f54a759..2af2f54a759 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-font.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-font.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-font.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-font.h index 7a8c04ac33d..7a8c04ac33d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-font.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-font.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-head-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-head-table.hh index ec4e8c9d453..268f133408c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-head-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-head-table.hh @@ -45,13 +45,15 @@ struct head { static const hb_tag_t tableTag = HB_OT_TAG_head; - inline unsigned int get_upem (void) const { + inline unsigned int get_upem (void) const + { unsigned int upem = unitsPerEm; /* If no valid head table found, assume 1000, which matches typical Type1 usage. */ return 16 <= upem && upem <= 16384 ? upem : 1000; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && likely (version.major == 1)); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-hhea-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-hhea-table.hh index edc0e29cbfb..992fe552021 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-hhea-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-hhea-table.hh @@ -49,7 +49,8 @@ struct _hea static const hb_tag_t hheaTag = HB_OT_TAG_hhea; static const hb_tag_t vheaTag = HB_OT_TAG_vhea; - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && likely (version.major == 1)); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-hmtx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-hmtx-table.hh index 317854ce7f8..a0e3855a849 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-hmtx-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-hmtx-table.hh @@ -57,7 +57,8 @@ struct _mtx static const hb_tag_t hmtxTag = HB_OT_TAG_hmtx; static const hb_tag_t vmtxTag = HB_OT_TAG_vmtx; - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); /* We don't check for anything specific here. The users of the * struct do all the hard work... */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-common-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-common-private.hh index abd063c8961..3db7f57ab42 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-common-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-common-private.hh @@ -37,6 +37,12 @@ namespace OT { +#define TRACE_DISPATCH(this, format) \ + hb_auto_trace_t<context_t::max_debug_depth, typename context_t::return_t> trace \ + (&c->debug_depth, c->get_name (), this, HB_FUNC, \ + "format %d", (int) format); + + #define NOT_COVERED ((unsigned int) -1) #define MAX_NESTING_LEVEL 8 #define MAX_CONTEXT_LENGTH 64 @@ -63,9 +69,10 @@ struct Record struct sanitize_closure_t { hb_tag_t tag; - void *list_base; + const void *list_base; }; - inline bool sanitize (hb_sanitize_context_t *c, void *base) { + inline bool sanitize (hb_sanitize_context_t *c, const void *base) const + { TRACE_SANITIZE (this); const sanitize_closure_t closure = {tag, base}; return TRACE_RETURN (c->check_struct (this) && offset.sanitize (c, base, &closure)); @@ -121,7 +128,8 @@ struct RecordListOf : RecordArrayOf<Type> inline const Type& operator [] (unsigned int i) const { return this+RecordArrayOf<Type>::operator [](i).offset; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (RecordArrayOf<Type>::sanitize (c, this)); } @@ -134,7 +142,8 @@ struct RangeRecord return g < start ? -1 : g <= end ? 0 : +1 ; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this)); } @@ -199,7 +208,8 @@ struct LangSys } inline bool sanitize (hb_sanitize_context_t *c, - const Record<LangSys>::sanitize_closure_t * = NULL) { + const Record<LangSys>::sanitize_closure_t * = NULL) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && featureIndex.sanitize (c)); } @@ -238,7 +248,8 @@ struct Script inline const LangSys& get_default_lang_sys (void) const { return this+defaultLangSys; } inline bool sanitize (hb_sanitize_context_t *c, - const Record<Script>::sanitize_closure_t * = NULL) { + const Record<Script>::sanitize_closure_t * = NULL) const + { TRACE_SANITIZE (this); return TRACE_RETURN (defaultLangSys.sanitize (c, this) && langSys.sanitize (c, this)); } @@ -260,7 +271,8 @@ typedef RecordListOf<Script> ScriptList; /* http://www.microsoft.com/typography/otspec/features_pt.htm#size */ struct FeatureParamsSize { - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (unlikely (!c->check_struct (this))) return TRACE_RETURN (false); @@ -371,7 +383,8 @@ struct FeatureParamsSize /* http://www.microsoft.com/typography/otspec/features_pt.htm#ssxx */ struct FeatureParamsStylisticSet { - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); /* Right now minorVersion is at zero. Which means, any table supports * the uiNameID field. */ @@ -404,7 +417,8 @@ struct FeatureParamsStylisticSet /* http://www.microsoft.com/typography/otspec/features_ae.htm#cv01-cv99 */ struct FeatureParamsCharacterVariants { - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && characters.sanitize (c)); @@ -444,7 +458,8 @@ struct FeatureParamsCharacterVariants struct FeatureParams { - inline bool sanitize (hb_sanitize_context_t *c, hb_tag_t tag) { + inline bool sanitize (hb_sanitize_context_t *c, hb_tag_t tag) const + { TRACE_SANITIZE (this); if (tag == HB_TAG ('s','i','z','e')) return TRACE_RETURN (u.size.sanitize (c)); @@ -486,7 +501,8 @@ struct Feature { return this+featureParams; } inline bool sanitize (hb_sanitize_context_t *c, - const Record<Feature>::sanitize_closure_t *closure) { + const Record<Feature>::sanitize_closure_t *closure) const + { TRACE_SANITIZE (this); if (unlikely (!(c->check_struct (this) && lookupIndex.sanitize (c)))) return TRACE_RETURN (false); @@ -561,6 +577,17 @@ struct Lookup { inline unsigned int get_subtable_count (void) const { return subTable.len; } + template <typename SubTableType> + inline const SubTableType& get_subtable (unsigned int i) const + { return this+CastR<OffsetArrayOf<SubTableType> > (subTable)[i]; } + + template <typename SubTableType> + inline const OffsetArrayOf<SubTableType>& get_subtables (void) const + { return CastR<OffsetArrayOf<SubTableType> > (subTable); } + template <typename SubTableType> + inline OffsetArrayOf<SubTableType>& get_subtables (void) + { return CastR<OffsetArrayOf<SubTableType> > (subTable); } + inline unsigned int get_type (void) const { return lookupType; } /* lookup_props is a 32-bit integer where the lower 16-bit is LookupFlag and @@ -577,6 +604,20 @@ struct Lookup return flag; } + template <typename SubTableType, typename context_t> + inline typename context_t::return_t dispatch (context_t *c) const + { + unsigned int lookup_type = get_type (); + TRACE_DISPATCH (this, lookup_type); + unsigned int count = get_subtable_count (); + for (unsigned int i = 0; i < count; i++) { + typename context_t::return_t r = get_subtable<SubTableType> (i).dispatch (c, lookup_type); + if (c->stop_sublookup_iteration (r)) + return TRACE_RETURN (r); + } + return TRACE_RETURN (c->default_return_value ()); + } + inline bool serialize (hb_serialize_context_t *c, unsigned int lookup_type, uint32_t lookup_props, @@ -595,18 +636,20 @@ struct Lookup return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); /* Real sanitize of the subtables is done by GSUB/GPOS/... */ if (!(c->check_struct (this) && subTable.sanitize (c))) return TRACE_RETURN (false); if (lookupFlag & LookupFlag::UseMarkFilteringSet) { - USHORT &markFilteringSet = StructAfter<USHORT> (subTable); + const USHORT &markFilteringSet = StructAfter<USHORT> (subTable); if (!markFilteringSet.sanitize (c)) return TRACE_RETURN (false); } return TRACE_RETURN (true); } + private: USHORT lookupType; /* Different enumerations for GSUB and GPOS */ USHORT lookupFlag; /* Lookup qualifiers */ ArrayOf<Offset<> > @@ -651,7 +694,8 @@ struct CoverageFormat1 return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (glyphArray.sanitize (c)); } @@ -737,7 +781,8 @@ struct CoverageFormat2 return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (rangeRecord.sanitize (c)); } @@ -832,7 +877,8 @@ struct Coverage } } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (!u.format.sanitize (c)) return TRACE_RETURN (false); switch (u.format) { @@ -938,12 +984,14 @@ struct ClassDefFormat1 private: inline unsigned int get_class (hb_codepoint_t glyph_id) const { - if (unlikely ((unsigned int) (glyph_id - startGlyph) < classValue.len)) - return classValue[glyph_id - startGlyph]; + unsigned int i = (unsigned int) (glyph_id - startGlyph); + if (unlikely (i < classValue.len)) + return classValue[i]; return 0; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && classValue.sanitize (c)); } @@ -994,12 +1042,13 @@ struct ClassDefFormat2 inline unsigned int get_class (hb_codepoint_t glyph_id) const { int i = rangeRecord.bsearch (glyph_id); - if (i != -1) + if (unlikely (i != -1)) return rangeRecord[i].value; return 0; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (rangeRecord.sanitize (c)); } @@ -1056,7 +1105,8 @@ struct ClassDef } } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (!u.format.sanitize (c)) return TRACE_RETURN (false); switch (u.format) { @@ -1148,7 +1198,8 @@ struct Device return USHORT::static_size * (4 + ((endSize - startSize) >> (4 - f))); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && c->check_range (this, this->get_size ())); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-gdef-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-gdef-table.hh index 84a5e797c63..7a6c04d1700 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-gdef-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-gdef-table.hh @@ -71,7 +71,8 @@ struct AttachList return points.len; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (coverage.sanitize (c, this) && attachPoint.sanitize (c, this)); } @@ -101,7 +102,8 @@ struct CaretValueFormat1 return HB_DIRECTION_IS_HORIZONTAL (direction) ? font->em_scale_x (coordinate) : font->em_scale_y (coordinate); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this)); } @@ -127,7 +129,8 @@ struct CaretValueFormat2 return 0; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this)); } @@ -150,7 +153,8 @@ struct CaretValueFormat3 font->em_scale_y (coordinate) + (this+deviceTable).get_y_delta (font); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && deviceTable.sanitize (c, this)); } @@ -178,7 +182,8 @@ struct CaretValue } } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (!u.format.sanitize (c)) return TRACE_RETURN (false); switch (u.format) { @@ -219,7 +224,8 @@ struct LigGlyph return carets.len; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (carets.sanitize (c, this)); } @@ -253,7 +259,8 @@ struct LigCaretList return lig_glyph.get_lig_carets (font, direction, glyph_id, start_offset, caret_count, caret_array); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (coverage.sanitize (c, this) && ligGlyph.sanitize (c, this)); } @@ -275,7 +282,8 @@ struct MarkGlyphSetsFormat1 inline bool covers (unsigned int set_index, hb_codepoint_t glyph_id) const { return (this+coverage[set_index]).get_coverage (glyph_id) != NOT_COVERED; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (coverage.sanitize (c, this)); } @@ -299,7 +307,8 @@ struct MarkGlyphSets } } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (!u.format.sanitize (c)) return TRACE_RETURN (false); switch (u.format) { @@ -364,7 +373,8 @@ struct GDEF inline bool mark_set_covers (unsigned int set_index, hb_codepoint_t glyph_id) const { return version.to_int () >= 0x00010002u && (this+markGlyphSetsDef[0]).covers (set_index, glyph_id); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (version.sanitize (c) && likely (version.major == 1) && diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-gpos-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-gpos-table.hh index f7fef5273ae..d88f7876e0a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-gpos-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-gpos-table.hh @@ -146,7 +146,8 @@ struct ValueFormat : USHORT } private: - inline bool sanitize_value_devices (hb_sanitize_context_t *c, void *base, Value *values) { + inline bool sanitize_value_devices (hb_sanitize_context_t *c, const void *base, const Value *values) const + { unsigned int format = *this; if (format & xPlacement) values++; @@ -177,12 +178,14 @@ struct ValueFormat : USHORT return (format & devices) != 0; } - inline bool sanitize_value (hb_sanitize_context_t *c, void *base, Value *values) { + inline bool sanitize_value (hb_sanitize_context_t *c, const void *base, const Value *values) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_range (values, get_size ()) && (!has_device () || sanitize_value_devices (c, base, values))); } - inline bool sanitize_values (hb_sanitize_context_t *c, void *base, Value *values, unsigned int count) { + inline bool sanitize_values (hb_sanitize_context_t *c, const void *base, const Value *values, unsigned int count) const + { TRACE_SANITIZE (this); unsigned int len = get_len (); @@ -200,7 +203,8 @@ struct ValueFormat : USHORT } /* Just sanitize referenced Device tables. Doesn't check the values themselves. */ - inline bool sanitize_values_stride_unsafe (hb_sanitize_context_t *c, void *base, Value *values, unsigned int count, unsigned int stride) { + inline bool sanitize_values_stride_unsafe (hb_sanitize_context_t *c, const void *base, const Value *values, unsigned int count, unsigned int stride) const + { TRACE_SANITIZE (this); if (!has_device ()) return TRACE_RETURN (true); @@ -225,7 +229,8 @@ struct AnchorFormat1 *y = font->em_scale_y (yCoordinate); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this)); } @@ -254,7 +259,8 @@ struct AnchorFormat2 *y = ret && y_ppem ? cy : font->em_scale_y (yCoordinate); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this)); } @@ -282,7 +288,8 @@ struct AnchorFormat3 *y += (this+yDeviceTable).get_x_delta (font); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && xDeviceTable.sanitize (c, this) && yDeviceTable.sanitize (c, this)); } @@ -317,7 +324,8 @@ struct Anchor } } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (!u.format.sanitize (c)) return TRACE_RETURN (false); switch (u.format) { @@ -349,7 +357,8 @@ struct AnchorMatrix return this+matrixZ[row * cols + col]; } - inline bool sanitize (hb_sanitize_context_t *c, unsigned int cols) { + inline bool sanitize (hb_sanitize_context_t *c, unsigned int cols) const + { TRACE_SANITIZE (this); if (!c->check_struct (this)) return TRACE_RETURN (false); if (unlikely (rows > 0 && cols >= ((unsigned int) -1) / rows)) return TRACE_RETURN (false); @@ -374,7 +383,8 @@ struct MarkRecord { friend struct MarkArray; - inline bool sanitize (hb_sanitize_context_t *c, void *base) { + inline bool sanitize (hb_sanitize_context_t *c, const void *base) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && markAnchor.sanitize (c, base)); } @@ -421,7 +431,8 @@ struct MarkArray : ArrayOf<MarkRecord> /* Array of MarkRecords--in Coverage orde return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (ArrayOf<MarkRecord>::sanitize (c, this)); } @@ -457,9 +468,12 @@ struct SinglePosFormat1 return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && coverage.sanitize (c, this) && valueFormat.sanitize_value (c, this, values)); + return TRACE_RETURN (c->check_struct (this) + && coverage.sanitize (c, this) + && valueFormat.sanitize_value (c, this, values)); } protected: @@ -506,9 +520,12 @@ struct SinglePosFormat2 return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && coverage.sanitize (c, this) && valueFormat.sanitize_values (c, this, values, valueCount)); + return TRACE_RETURN (c->check_struct (this) + && coverage.sanitize (c, this) + && valueFormat.sanitize_values (c, this, values, valueCount)); } protected: @@ -531,6 +548,7 @@ struct SinglePos inline typename context_t::return_t dispatch (context_t *c) const { TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); switch (u.format) { case 1: return TRACE_RETURN (c->dispatch (u.format1)); case 2: return TRACE_RETURN (c->dispatch (u.format2)); @@ -538,16 +556,6 @@ struct SinglePos } } - inline bool sanitize (hb_sanitize_context_t *c) { - TRACE_SANITIZE (this); - if (!u.format.sanitize (c)) return TRACE_RETURN (false); - switch (u.format) { - case 1: return TRACE_RETURN (u.format1.sanitize (c)); - case 2: return TRACE_RETURN (u.format2.sanitize (c)); - default:return TRACE_RETURN (true); - } - } - protected: union { USHORT format; /* Format identifier */ @@ -636,19 +644,20 @@ struct PairSet } struct sanitize_closure_t { - void *base; - ValueFormat *valueFormats; + const void *base; + const ValueFormat *valueFormats; unsigned int len1; /* valueFormats[0].get_len() */ unsigned int stride; /* 1 + len1 + len2 */ }; - inline bool sanitize (hb_sanitize_context_t *c, const sanitize_closure_t *closure) { + inline bool sanitize (hb_sanitize_context_t *c, const sanitize_closure_t *closure) const + { TRACE_SANITIZE (this); if (!(c->check_struct (this) && c->check_array (arrayZ, USHORT::static_size * closure->stride, len))) return TRACE_RETURN (false); unsigned int count = len; - PairValueRecord *record = CastP<PairValueRecord> (arrayZ); + const PairValueRecord *record = CastP<PairValueRecord> (arrayZ); return TRACE_RETURN (closure->valueFormats[0].sanitize_values_stride_unsafe (c, closure->base, &record->values[0], count, closure->stride) && closure->valueFormats[1].sanitize_values_stride_unsafe (c, closure->base, &record->values[closure->len1], count, closure->stride)); } @@ -681,18 +690,18 @@ struct PairPosFormat1 { TRACE_APPLY (this); hb_buffer_t *buffer = c->buffer; - hb_apply_context_t::skipping_forward_iterator_t skippy_iter (c, buffer->idx, 1); - if (skippy_iter.has_no_chance ()) return TRACE_RETURN (false); - unsigned int index = (this+coverage).get_coverage (buffer->cur().codepoint); if (likely (index == NOT_COVERED)) return TRACE_RETURN (false); + hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input; + skippy_iter.reset (buffer->idx, 1); if (!skippy_iter.next ()) return TRACE_RETURN (false); return TRACE_RETURN ((this+pairSet[index]).apply (c, &valueFormat1, skippy_iter.idx)); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); unsigned int len1 = valueFormat1.get_len (); @@ -752,12 +761,11 @@ struct PairPosFormat2 { TRACE_APPLY (this); hb_buffer_t *buffer = c->buffer; - hb_apply_context_t::skipping_forward_iterator_t skippy_iter (c, buffer->idx, 1); - if (skippy_iter.has_no_chance ()) return TRACE_RETURN (false); - unsigned int index = (this+coverage).get_coverage (buffer->cur().codepoint); if (likely (index == NOT_COVERED)) return TRACE_RETURN (false); + hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input; + skippy_iter.reset (buffer->idx, 1); if (!skippy_iter.next ()) return TRACE_RETURN (false); unsigned int len1 = valueFormat1.get_len (); @@ -781,7 +789,8 @@ struct PairPosFormat2 return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (!(c->check_struct (this) && coverage.sanitize (c, this) @@ -834,6 +843,7 @@ struct PairPos inline typename context_t::return_t dispatch (context_t *c) const { TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); switch (u.format) { case 1: return TRACE_RETURN (c->dispatch (u.format1)); case 2: return TRACE_RETURN (c->dispatch (u.format2)); @@ -841,16 +851,6 @@ struct PairPos } } - inline bool sanitize (hb_sanitize_context_t *c) { - TRACE_SANITIZE (this); - if (!u.format.sanitize (c)) return TRACE_RETURN (false); - switch (u.format) { - case 1: return TRACE_RETURN (u.format1.sanitize (c)); - case 2: return TRACE_RETURN (u.format2.sanitize (c)); - default:return TRACE_RETURN (true); - } - } - protected: union { USHORT format; /* Format identifier */ @@ -864,7 +864,8 @@ struct EntryExitRecord { friend struct CursivePosFormat1; - inline bool sanitize (hb_sanitize_context_t *c, void *base) { + inline bool sanitize (hb_sanitize_context_t *c, const void *base) const + { TRACE_SANITIZE (this); return TRACE_RETURN (entryAnchor.sanitize (c, base) && exitAnchor.sanitize (c, base)); } @@ -903,12 +904,11 @@ struct CursivePosFormat1 /* We don't handle mark glyphs here. */ if (unlikely (_hb_glyph_info_is_mark (&buffer->cur()))) return TRACE_RETURN (false); - hb_apply_context_t::skipping_forward_iterator_t skippy_iter (c, buffer->idx, 1); - if (skippy_iter.has_no_chance ()) return TRACE_RETURN (false); - const EntryExitRecord &this_record = entryExitRecord[(this+coverage).get_coverage (buffer->cur().codepoint)]; if (!this_record.exitAnchor) return TRACE_RETURN (false); + hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input; + skippy_iter.reset (buffer->idx, 1); if (!skippy_iter.next ()) return TRACE_RETURN (false); const EntryExitRecord &next_record = entryExitRecord[(this+coverage).get_coverage (buffer->info[skippy_iter.idx].codepoint)]; @@ -978,7 +978,8 @@ struct CursivePosFormat1 return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (coverage.sanitize (c, this) && entryExitRecord.sanitize (c, this)); } @@ -1001,21 +1002,13 @@ struct CursivePos inline typename context_t::return_t dispatch (context_t *c) const { TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); switch (u.format) { case 1: return TRACE_RETURN (c->dispatch (u.format1)); default:return TRACE_RETURN (c->default_return_value ()); } } - inline bool sanitize (hb_sanitize_context_t *c) { - TRACE_SANITIZE (this); - if (!u.format.sanitize (c)) return TRACE_RETURN (false); - switch (u.format) { - case 1: return TRACE_RETURN (u.format1.sanitize (c)); - default:return TRACE_RETURN (true); - } - } - protected: union { USHORT format; /* Format identifier */ @@ -1051,7 +1044,8 @@ struct MarkBasePosFormat1 if (likely (mark_index == NOT_COVERED)) return TRACE_RETURN (false); /* now we search backwards for a non-mark glyph */ - hb_apply_context_t::skipping_backward_iterator_t skippy_iter (c, buffer->idx, 1); + hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input; + skippy_iter.reset (buffer->idx, 1); skippy_iter.set_lookup_props (LookupFlag::IgnoreMarks); do { if (!skippy_iter.prev ()) return TRACE_RETURN (false); @@ -1069,7 +1063,8 @@ struct MarkBasePosFormat1 return TRACE_RETURN ((this+markArray).apply (c, mark_index, base_index, this+baseArray, classCount, skippy_iter.idx)); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && markCoverage.sanitize (c, this) && baseCoverage.sanitize (c, this) && markArray.sanitize (c, this) && baseArray.sanitize (c, this, (unsigned int) classCount)); @@ -1100,21 +1095,13 @@ struct MarkBasePos inline typename context_t::return_t dispatch (context_t *c) const { TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); switch (u.format) { case 1: return TRACE_RETURN (c->dispatch (u.format1)); default:return TRACE_RETURN (c->default_return_value ()); } } - inline bool sanitize (hb_sanitize_context_t *c) { - TRACE_SANITIZE (this); - if (!u.format.sanitize (c)) return TRACE_RETURN (false); - switch (u.format) { - case 1: return TRACE_RETURN (u.format1.sanitize (c)); - default:return TRACE_RETURN (true); - } - } - protected: union { USHORT format; /* Format identifier */ @@ -1155,7 +1142,8 @@ struct MarkLigPosFormat1 if (likely (mark_index == NOT_COVERED)) return TRACE_RETURN (false); /* now we search backwards for a non-mark glyph */ - hb_apply_context_t::skipping_backward_iterator_t skippy_iter (c, buffer->idx, 1); + hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input; + skippy_iter.reset (buffer->idx, 1); skippy_iter.set_lookup_props (LookupFlag::IgnoreMarks); if (!skippy_iter.prev ()) return TRACE_RETURN (false); @@ -1189,7 +1177,8 @@ struct MarkLigPosFormat1 return TRACE_RETURN ((this+markArray).apply (c, mark_index, comp_index, lig_attach, classCount, j)); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && markCoverage.sanitize (c, this) && ligatureCoverage.sanitize (c, this) && markArray.sanitize (c, this) && ligatureArray.sanitize (c, this, (unsigned int) classCount)); @@ -1221,21 +1210,13 @@ struct MarkLigPos inline typename context_t::return_t dispatch (context_t *c) const { TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); switch (u.format) { case 1: return TRACE_RETURN (c->dispatch (u.format1)); default:return TRACE_RETURN (c->default_return_value ()); } } - inline bool sanitize (hb_sanitize_context_t *c) { - TRACE_SANITIZE (this); - if (!u.format.sanitize (c)) return TRACE_RETURN (false); - switch (u.format) { - case 1: return TRACE_RETURN (u.format1.sanitize (c)); - default:return TRACE_RETURN (true); - } - } - protected: union { USHORT format; /* Format identifier */ @@ -1271,7 +1252,8 @@ struct MarkMarkPosFormat1 if (likely (mark1_index == NOT_COVERED)) return TRACE_RETURN (false); /* now we search backwards for a suitable mark glyph until a non-mark glyph */ - hb_apply_context_t::skipping_backward_iterator_t skippy_iter (c, buffer->idx, 1); + hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input; + skippy_iter.reset (buffer->idx, 1); skippy_iter.set_lookup_props (c->lookup_props & ~LookupFlag::IgnoreFlags); if (!skippy_iter.prev ()) return TRACE_RETURN (false); @@ -1306,7 +1288,8 @@ struct MarkMarkPosFormat1 return TRACE_RETURN ((this+mark1Array).apply (c, mark1_index, mark2_index, this+mark2Array, classCount, j)); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && mark1Coverage.sanitize (c, this) && mark2Coverage.sanitize (c, this) && mark1Array.sanitize (c, this) @@ -1340,21 +1323,13 @@ struct MarkMarkPos inline typename context_t::return_t dispatch (context_t *c) const { TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); switch (u.format) { case 1: return TRACE_RETURN (c->dispatch (u.format1)); default:return TRACE_RETURN (c->default_return_value ()); } } - inline bool sanitize (hb_sanitize_context_t *c) { - TRACE_SANITIZE (this); - if (!u.format.sanitize (c)) return TRACE_RETURN (false); - switch (u.format) { - case 1: return TRACE_RETURN (u.format1.sanitize (c)); - default:return TRACE_RETURN (true); - } - } - protected: union { USHORT format; /* Format identifier */ @@ -1399,6 +1374,8 @@ struct PosLookupSubTable inline typename context_t::return_t dispatch (context_t *c, unsigned int lookup_type) const { TRACE_DISPATCH (this, lookup_type); + /* The sub_format passed to may_dispatch is unnecessary but harmless. */ + if (unlikely (!c->may_dispatch (this, &u.sub_format))) TRACE_RETURN (c->default_return_value ()); switch (lookup_type) { case Single: return TRACE_RETURN (u.single.dispatch (c)); case Pair: return TRACE_RETURN (u.pair.dispatch (c)); @@ -1413,29 +1390,9 @@ struct PosLookupSubTable } } - inline bool sanitize (hb_sanitize_context_t *c, unsigned int lookup_type) { - TRACE_SANITIZE (this); - if (!u.header.sub_format.sanitize (c)) - return TRACE_RETURN (false); - switch (lookup_type) { - case Single: return TRACE_RETURN (u.single.sanitize (c)); - case Pair: return TRACE_RETURN (u.pair.sanitize (c)); - case Cursive: return TRACE_RETURN (u.cursive.sanitize (c)); - case MarkBase: return TRACE_RETURN (u.markBase.sanitize (c)); - case MarkLig: return TRACE_RETURN (u.markLig.sanitize (c)); - case MarkMark: return TRACE_RETURN (u.markMark.sanitize (c)); - case Context: return TRACE_RETURN (u.context.sanitize (c)); - case ChainContext: return TRACE_RETURN (u.chainContext.sanitize (c)); - case Extension: return TRACE_RETURN (u.extension.sanitize (c)); - default: return TRACE_RETURN (true); - } - } - protected: union { - struct { - USHORT sub_format; - } header; + USHORT sub_format; SinglePos single; PairPos pair; CursivePos cursive; @@ -1447,48 +1404,37 @@ struct PosLookupSubTable ExtensionPos extension; } u; public: - DEFINE_SIZE_UNION (2, header.sub_format); + DEFINE_SIZE_UNION (2, sub_format); }; struct PosLookup : Lookup { inline const PosLookupSubTable& get_subtable (unsigned int i) const - { return this+CastR<OffsetArrayOf<PosLookupSubTable> > (subTable)[i]; } + { return Lookup::get_subtable<PosLookupSubTable> (i); } inline bool is_reverse (void) const { return false; } + inline bool apply (hb_apply_context_t *c) const + { + TRACE_APPLY (this); + return TRACE_RETURN (dispatch (c)); + } + inline hb_collect_glyphs_context_t::return_t collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - c->set_recurse_func (NULL); return TRACE_RETURN (dispatch (c)); } template <typename set_t> inline void add_coverage (set_t *glyphs) const { - hb_get_coverage_context_t c; - const Coverage *last = NULL; - unsigned int count = get_subtable_count (); - for (unsigned int i = 0; i < count; i++) { - const Coverage *coverage = &get_subtable (i).dispatch (&c, get_type ()); - if (coverage != last) { - coverage->add_coverage (glyphs); - last = coverage; - } - } - } - - inline bool apply_once (hb_apply_context_t *c) const - { - TRACE_APPLY (this); - if (!c->check_glyph_property (&c->buffer->cur(), c->lookup_props)) - return TRACE_RETURN (false); - return TRACE_RETURN (dispatch (c)); + hb_add_coverage_context_t<set_t> c (glyphs); + dispatch (&c); } static bool apply_recurse_func (hb_apply_context_t *c, unsigned int lookup_index); @@ -1498,23 +1444,14 @@ struct PosLookup : Lookup template <typename context_t> inline typename context_t::return_t dispatch (context_t *c) const - { - unsigned int lookup_type = get_type (); - TRACE_DISPATCH (this, lookup_type); - unsigned int count = get_subtable_count (); - for (unsigned int i = 0; i < count; i++) { - typename context_t::return_t r = get_subtable (i).dispatch (c, lookup_type); - if (c->stop_sublookup_iteration (r)) - return TRACE_RETURN (r); - } - return TRACE_RETURN (c->default_return_value ()); - } + { return Lookup::dispatch<PosLookupSubTable> (c); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (unlikely (!Lookup::sanitize (c))) return TRACE_RETURN (false); - OffsetArrayOf<PosLookupSubTable> &list = CastR<OffsetArrayOf<PosLookupSubTable> > (subTable); - return TRACE_RETURN (list.sanitize (c, this, get_type ())); + const OffsetArrayOf<PosLookupSubTable> &list = get_subtables<PosLookupSubTable> (); + return TRACE_RETURN (dispatch (c)); } }; @@ -1534,10 +1471,11 @@ struct GPOS : GSUBGPOS static inline void position_start (hb_font_t *font, hb_buffer_t *buffer); static inline void position_finish (hb_font_t *font, hb_buffer_t *buffer); - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (unlikely (!GSUBGPOS::sanitize (c))) return TRACE_RETURN (false); - OffsetTo<PosLookupList> &list = CastR<OffsetTo<PosLookupList> > (lookupList); + const OffsetTo<PosLookupList> &list = CastR<OffsetTo<PosLookupList> > (lookupList); return TRACE_RETURN (list.sanitize (c, this)); } public: @@ -1632,8 +1570,8 @@ template <typename context_t> const PosLookup &l = gpos.get_lookup (lookup_index); unsigned int saved_lookup_props = c->lookup_props; c->set_lookup (l); - bool ret = l.apply_once (c); - c->lookup_props = saved_lookup_props; + bool ret = l.dispatch (c); + c->set_lookup_props (saved_lookup_props); return ret; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-gsub-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-gsub-table.hh index 5d67be0ec0f..ebe4c9ec4e4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-gsub-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-gsub-table.hh @@ -97,7 +97,8 @@ struct SingleSubstFormat1 return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (coverage.sanitize (c, this) && deltaGlyphID.sanitize (c)); } @@ -173,7 +174,8 @@ struct SingleSubstFormat2 return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (coverage.sanitize (c, this) && substitute.sanitize (c)); } @@ -223,6 +225,7 @@ struct SingleSubst inline typename context_t::return_t dispatch (context_t *c) const { TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); switch (u.format) { case 1: return TRACE_RETURN (c->dispatch (u.format1)); case 2: return TRACE_RETURN (c->dispatch (u.format2)); @@ -230,16 +233,6 @@ struct SingleSubst } } - inline bool sanitize (hb_sanitize_context_t *c) { - TRACE_SANITIZE (this); - if (!u.format.sanitize (c)) return TRACE_RETURN (false); - switch (u.format) { - case 1: return TRACE_RETURN (u.format1.sanitize (c)); - case 2: return TRACE_RETURN (u.format2.sanitize (c)); - default:return TRACE_RETURN (true); - } - } - protected: union { USHORT format; /* Format identifier */ @@ -312,7 +305,8 @@ struct Sequence return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (substitute.sanitize (c)); } @@ -384,7 +378,8 @@ struct MultipleSubstFormat1 return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (coverage.sanitize (c, this) && sequence.sanitize (c, this)); } @@ -423,21 +418,13 @@ struct MultipleSubst inline typename context_t::return_t dispatch (context_t *c) const { TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); switch (u.format) { case 1: return TRACE_RETURN (c->dispatch (u.format1)); default:return TRACE_RETURN (c->default_return_value ()); } } - inline bool sanitize (hb_sanitize_context_t *c) { - TRACE_SANITIZE (this); - if (!u.format.sanitize (c)) return TRACE_RETURN (false); - switch (u.format) { - case 1: return TRACE_RETURN (u.format1.sanitize (c)); - default:return TRACE_RETURN (true); - } - } - protected: union { USHORT format; /* Format identifier */ @@ -535,7 +522,8 @@ struct AlternateSubstFormat1 return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (coverage.sanitize (c, this) && alternateSet.sanitize (c, this)); } @@ -574,21 +562,13 @@ struct AlternateSubst inline typename context_t::return_t dispatch (context_t *c) const { TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); switch (u.format) { case 1: return TRACE_RETURN (c->dispatch (u.format1)); default:return TRACE_RETURN (c->default_return_value ()); } } - inline bool sanitize (hb_sanitize_context_t *c) { - TRACE_SANITIZE (this); - if (!u.format.sanitize (c)) return TRACE_RETURN (false); - switch (u.format) { - case 1: return TRACE_RETURN (u.format1.sanitize (c)); - default:return TRACE_RETURN (true); - } - } - protected: union { USHORT format; /* Format identifier */ @@ -686,7 +666,8 @@ struct Ligature } public: - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (ligGlyph.sanitize (c) && component.sanitize (c)); } @@ -764,7 +745,8 @@ struct LigatureSet return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (ligature.sanitize (c, this)); } @@ -848,7 +830,8 @@ struct LigatureSubstFormat1 return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (coverage.sanitize (c, this) && ligatureSet.sanitize (c, this)); } @@ -890,21 +873,13 @@ struct LigatureSubst inline typename context_t::return_t dispatch (context_t *c) const { TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); switch (u.format) { case 1: return TRACE_RETURN (c->dispatch (u.format1)); default:return TRACE_RETURN (c->default_return_value ()); } } - inline bool sanitize (hb_sanitize_context_t *c) { - TRACE_SANITIZE (this); - if (!u.format.sanitize (c)) return TRACE_RETURN (false); - switch (u.format) { - case 1: return TRACE_RETURN (u.format1.sanitize (c)); - default:return TRACE_RETURN (true); - } - } - protected: union { USHORT format; /* Format identifier */ @@ -1017,14 +992,15 @@ struct ReverseChainSingleSubstFormat1 return TRACE_RETURN (false); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (!(coverage.sanitize (c, this) && backtrack.sanitize (c, this))) return TRACE_RETURN (false); - OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage> > (backtrack); + const OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage> > (backtrack); if (!lookahead.sanitize (c, this)) return TRACE_RETURN (false); - ArrayOf<GlyphID> &substitute = StructAfter<ArrayOf<GlyphID> > (lookahead); + const ArrayOf<GlyphID> &substitute = StructAfter<ArrayOf<GlyphID> > (lookahead); return TRACE_RETURN (substitute.sanitize (c)); } @@ -1054,21 +1030,13 @@ struct ReverseChainSingleSubst inline typename context_t::return_t dispatch (context_t *c) const { TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); switch (u.format) { case 1: return TRACE_RETURN (c->dispatch (u.format1)); default:return TRACE_RETURN (c->default_return_value ()); } } - inline bool sanitize (hb_sanitize_context_t *c) { - TRACE_SANITIZE (this); - if (!u.format.sanitize (c)) return TRACE_RETURN (false); - switch (u.format) { - case 1: return TRACE_RETURN (u.format1.sanitize (c)); - default:return TRACE_RETURN (true); - } - } - protected: union { USHORT format; /* Format identifier */ @@ -1101,6 +1069,8 @@ struct SubstLookupSubTable inline typename context_t::return_t dispatch (context_t *c, unsigned int lookup_type) const { TRACE_DISPATCH (this, lookup_type); + /* The sub_format passed to may_dispatch is unnecessary but harmless. */ + if (unlikely (!c->may_dispatch (this, &u.sub_format))) TRACE_RETURN (c->default_return_value ()); switch (lookup_type) { case Single: return TRACE_RETURN (u.single.dispatch (c)); case Multiple: return TRACE_RETURN (u.multiple.dispatch (c)); @@ -1114,28 +1084,9 @@ struct SubstLookupSubTable } } - inline bool sanitize (hb_sanitize_context_t *c, unsigned int lookup_type) { - TRACE_SANITIZE (this); - if (!u.header.sub_format.sanitize (c)) - return TRACE_RETURN (false); - switch (lookup_type) { - case Single: return TRACE_RETURN (u.single.sanitize (c)); - case Multiple: return TRACE_RETURN (u.multiple.sanitize (c)); - case Alternate: return TRACE_RETURN (u.alternate.sanitize (c)); - case Ligature: return TRACE_RETURN (u.ligature.sanitize (c)); - case Context: return TRACE_RETURN (u.context.sanitize (c)); - case ChainContext: return TRACE_RETURN (u.chainContext.sanitize (c)); - case Extension: return TRACE_RETURN (u.extension.sanitize (c)); - case ReverseChainSingle: return TRACE_RETURN (u.reverseChainContextSingle.sanitize (c)); - default: return TRACE_RETURN (true); - } - } - protected: union { - struct { - USHORT sub_format; - } header; + USHORT sub_format; SingleSubst single; MultipleSubst multiple; AlternateSubst alternate; @@ -1146,14 +1097,14 @@ struct SubstLookupSubTable ReverseChainSingleSubst reverseChainContextSingle; } u; public: - DEFINE_SIZE_UNION (2, header.sub_format); + DEFINE_SIZE_UNION (2, sub_format); }; struct SubstLookup : Lookup { inline const SubstLookupSubTable& get_subtable (unsigned int i) const - { return this+CastR<OffsetArrayOf<SubstLookupSubTable> > (subTable)[i]; } + { return Lookup::get_subtable<SubstLookupSubTable> (i); } inline static bool lookup_type_is_reverse (unsigned int lookup_type) { return lookup_type == SubstLookupSubTable::ReverseChainSingle; } @@ -1166,6 +1117,12 @@ struct SubstLookup : Lookup return lookup_type_is_reverse (type); } + inline bool apply (hb_apply_context_t *c) const + { + TRACE_APPLY (this); + return TRACE_RETURN (dispatch (c)); + } + inline hb_closure_context_t::return_t closure (hb_closure_context_t *c) const { TRACE_CLOSURE (this); @@ -1183,39 +1140,24 @@ struct SubstLookup : Lookup template <typename set_t> inline void add_coverage (set_t *glyphs) const { - hb_get_coverage_context_t c; - const Coverage *last = NULL; - unsigned int count = get_subtable_count (); - for (unsigned int i = 0; i < count; i++) { - const Coverage *coverage = &get_subtable (i).dispatch (&c, get_type ()); - if (coverage != last) { - coverage->add_coverage (glyphs); - last = coverage; - } - } + hb_add_coverage_context_t<set_t> c (glyphs); + dispatch (&c); } - inline bool would_apply (hb_would_apply_context_t *c, const hb_set_digest_t *digest) const + inline bool would_apply (hb_would_apply_context_t *c, + const hb_ot_layout_lookup_accelerator_t *accel) const { TRACE_WOULD_APPLY (this); if (unlikely (!c->len)) return TRACE_RETURN (false); - if (!digest->may_have (c->glyphs[0])) return TRACE_RETURN (false); + if (!accel->may_have (c->glyphs[0])) return TRACE_RETURN (false); return TRACE_RETURN (dispatch (c)); } - inline bool apply_once (hb_apply_context_t *c) const - { - TRACE_APPLY (this); - if (!c->check_glyph_property (&c->buffer->cur(), c->lookup_props)) - return TRACE_RETURN (false); - return TRACE_RETURN (dispatch (c)); - } - static bool apply_recurse_func (hb_apply_context_t *c, unsigned int lookup_index); inline SubstLookupSubTable& serialize_subtable (hb_serialize_context_t *c, unsigned int i) - { return CastR<OffsetArrayOf<SubstLookupSubTable> > (subTable)[i].serialize (c, this); } + { return get_subtables<SubstLookupSubTable> ()[i].serialize (c, this); } inline bool serialize_single (hb_serialize_context_t *c, uint32_t lookup_props, @@ -1274,24 +1216,14 @@ struct SubstLookup : Lookup template <typename context_t> inline typename context_t::return_t dispatch (context_t *c) const - { - unsigned int lookup_type = get_type (); - TRACE_DISPATCH (this, lookup_type); - unsigned int count = get_subtable_count (); - for (unsigned int i = 0; i < count; i++) { - typename context_t::return_t r = get_subtable (i).dispatch (c, lookup_type); - if (c->stop_sublookup_iteration (r)) - return TRACE_RETURN (r); - } - return TRACE_RETURN (c->default_return_value ()); - } + { return Lookup::dispatch<SubstLookupSubTable> (c); } - inline bool sanitize (hb_sanitize_context_t *c) + inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); if (unlikely (!Lookup::sanitize (c))) return TRACE_RETURN (false); - OffsetArrayOf<SubstLookupSubTable> &list = CastR<OffsetArrayOf<SubstLookupSubTable> > (subTable); - if (unlikely (!list.sanitize (c, this, get_type ()))) return TRACE_RETURN (false); + const OffsetArrayOf<SubstLookupSubTable> &list = get_subtables<SubstLookupSubTable> (); + if (unlikely (!dispatch (c))) return TRACE_RETURN (false); if (unlikely (get_type () == SubstLookupSubTable::Extension)) { @@ -1324,10 +1256,11 @@ struct GSUB : GSUBGPOS static inline void substitute_start (hb_font_t *font, hb_buffer_t *buffer); static inline void substitute_finish (hb_font_t *font, hb_buffer_t *buffer); - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (unlikely (!GSUBGPOS::sanitize (c))) return TRACE_RETURN (false); - OffsetTo<SubstLookupList> &list = CastR<OffsetTo<SubstLookupList> > (lookupList); + const OffsetTo<SubstLookupList> &list = CastR<OffsetTo<SubstLookupList> > (lookupList); return TRACE_RETURN (list.sanitize (c, this)); } public: @@ -1362,7 +1295,7 @@ GSUB::substitute_finish (hb_font_t *font HB_UNUSED, hb_buffer_t *buffer HB_UNUSE { unsigned int type = get_type (); if (unlikely (type == SubstLookupSubTable::Extension)) - return CastR<ExtensionSubst> (get_subtable<SubstLookupSubTable>()).is_reverse (); + return CastR<ExtensionSubst> (get_subtable<LookupSubTable>()).is_reverse (); return SubstLookup::lookup_type_is_reverse (type); } @@ -1380,8 +1313,8 @@ template <typename context_t> const SubstLookup &l = gsub.get_lookup (lookup_index); unsigned int saved_lookup_props = c->lookup_props; c->set_lookup (l); - bool ret = l.apply_once (c); - c->lookup_props = saved_lookup_props; + bool ret = l.dispatch (c); + c->set_lookup_props (saved_lookup_props); return ret; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-gsubgpos-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-gsubgpos-private.hh index 57fc1e05f76..cbc6840bc86 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-gsubgpos-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-gsubgpos-private.hh @@ -37,12 +37,6 @@ namespace OT { - -#define TRACE_DISPATCH(this, format) \ - hb_auto_trace_t<context_t::max_debug_depth, typename context_t::return_t> trace \ - (&c->debug_depth, c->get_name (), this, HB_FUNC, \ - "format %d", (int) format); - #ifndef HB_DEBUG_CLOSURE #define HB_DEBUG_CLOSURE (HB_DEBUG+0) #endif @@ -58,6 +52,8 @@ struct hb_closure_context_t static const unsigned int max_debug_depth = HB_DEBUG_CLOSURE; typedef hb_void_t return_t; typedef return_t (*recurse_func_t) (hb_closure_context_t *c, unsigned int lookup_index); + template <typename T, typename F> + inline bool may_dispatch (const T *obj, const F *format) { return true; } template <typename T> inline return_t dispatch (const T &obj) { obj.closure (this); return HB_VOID; } static return_t default_return_value (void) { return HB_VOID; } @@ -107,6 +103,8 @@ struct hb_would_apply_context_t inline const char *get_name (void) { return "WOULD_APPLY"; } static const unsigned int max_debug_depth = HB_DEBUG_WOULD_APPLY; typedef bool return_t; + template <typename T, typename F> + inline bool may_dispatch (const T *obj, const F *format) { return true; } template <typename T> inline return_t dispatch (const T &obj) { return obj.would_apply (this); } static return_t default_return_value (void) { return false; } @@ -146,6 +144,8 @@ struct hb_collect_glyphs_context_t static const unsigned int max_debug_depth = HB_DEBUG_COLLECT_GLYPHS; typedef hb_void_t return_t; typedef return_t (*recurse_func_t) (hb_collect_glyphs_context_t *c, unsigned int lookup_index); + template <typename T, typename F> + inline bool may_dispatch (const T *obj, const F *format) { return true; } template <typename T> inline return_t dispatch (const T &obj) { obj.collect_glyphs (this); return HB_VOID; } static return_t default_return_value (void) { return HB_VOID; } @@ -232,18 +232,28 @@ struct hb_collect_glyphs_context_t #define HB_DEBUG_GET_COVERAGE (HB_DEBUG+0) #endif -struct hb_get_coverage_context_t +template <typename set_t> +struct hb_add_coverage_context_t { inline const char *get_name (void) { return "GET_COVERAGE"; } static const unsigned int max_debug_depth = HB_DEBUG_GET_COVERAGE; typedef const Coverage &return_t; + template <typename T, typename F> + inline bool may_dispatch (const T *obj, const F *format) { return true; } template <typename T> inline return_t dispatch (const T &obj) { return obj.get_coverage (); } static return_t default_return_value (void) { return Null(Coverage); } + bool stop_sublookup_iteration (return_t r) const + { + r.add_coverage (set); + return false; + } - hb_get_coverage_context_t (void) : + hb_add_coverage_context_t (set_t *set_) : + set (set_), debug_depth (0) {} + set_t *set; unsigned int debug_depth; }; @@ -260,61 +270,6 @@ struct hb_get_coverage_context_t struct hb_apply_context_t { - inline const char *get_name (void) { return "APPLY"; } - static const unsigned int max_debug_depth = HB_DEBUG_APPLY; - typedef bool return_t; - typedef return_t (*recurse_func_t) (hb_apply_context_t *c, unsigned int lookup_index); - template <typename T> - inline return_t dispatch (const T &obj) { return obj.apply (this); } - static return_t default_return_value (void) { return false; } - bool stop_sublookup_iteration (return_t r) const { return r; } - return_t recurse (unsigned int lookup_index) - { - if (unlikely (nesting_level_left == 0 || !recurse_func)) - return default_return_value (); - - nesting_level_left--; - bool ret = recurse_func (this, lookup_index); - nesting_level_left++; - return ret; - } - - unsigned int table_index; /* GSUB/GPOS */ - hb_font_t *font; - hb_face_t *face; - hb_buffer_t *buffer; - hb_direction_t direction; - hb_mask_t lookup_mask; - bool auto_zwj; - recurse_func_t recurse_func; - unsigned int nesting_level_left; - unsigned int lookup_props; - const GDEF &gdef; - bool has_glyph_classes; - unsigned int debug_depth; - - - hb_apply_context_t (unsigned int table_index_, - hb_font_t *font_, - hb_buffer_t *buffer_) : - table_index (table_index_), - font (font_), face (font->face), buffer (buffer_), - direction (buffer_->props.direction), - lookup_mask (1), - auto_zwj (true), - recurse_func (NULL), - nesting_level_left (MAX_NESTING_LEVEL), - lookup_props (0), - gdef (*hb_ot_layout_from_face (face)->gdef), - has_glyph_classes (gdef.has_glyph_classes ()), - debug_depth (0) {} - - inline void set_lookup_mask (hb_mask_t mask) { lookup_mask = mask; } - inline void set_auto_zwj (bool auto_zwj_) { auto_zwj = auto_zwj_; } - inline void set_recurse_func (recurse_func_t func) { recurse_func = func; } - inline void set_lookup_props (unsigned int lookup_props_) { lookup_props = lookup_props_; } - inline void set_lookup (const Lookup &l) { lookup_props = l.get_props (); } - struct matcher_t { inline matcher_t (void) : @@ -390,29 +345,24 @@ struct hb_apply_context_t const void *match_data; }; - struct skipping_forward_iterator_t - { - inline skipping_forward_iterator_t (hb_apply_context_t *c_, - unsigned int start_index_, - unsigned int num_items_, - bool context_match = false) : - idx (start_index_), - c (c_), - match_glyph_data (NULL), - num_items (num_items_), - end (c->buffer->len) + struct skipping_iterator_t + { + inline void init (hb_apply_context_t *c_, bool context_match = false) { + c = c_; + match_glyph_data = NULL, + matcher.set_match_func (NULL, NULL); matcher.set_lookup_props (c->lookup_props); /* Ignore ZWNJ if we are matching GSUB context, or matching GPOS. */ matcher.set_ignore_zwnj (context_match || c->table_index == 1); /* Ignore ZWJ if we are matching GSUB context, or matching GPOS, or if asked to. */ matcher.set_ignore_zwj (context_match || c->table_index == 1 || c->auto_zwj); - if (!context_match) - matcher.set_mask (c->lookup_mask); - matcher.set_syllable (start_index_ == c->buffer->idx ? c->buffer->cur().syllable () : 0); + matcher.set_mask (context_match ? -1 : c->lookup_mask); + } + inline void set_lookup_props (unsigned int lookup_props) + { + matcher.set_lookup_props (lookup_props); } - inline void set_lookup_props (unsigned int lookup_props) { matcher.set_lookup_props (lookup_props); } - inline void set_syllable (unsigned int syllable) { matcher.set_syllable (syllable); } inline void set_match_func (matcher_t::match_func_t match_func, const void *match_data, const USHORT glyph_data[]) @@ -421,12 +371,21 @@ struct hb_apply_context_t match_glyph_data = glyph_data; } - inline bool has_no_chance (void) const { return unlikely (num_items && idx + num_items >= end); } + inline void reset (unsigned int start_index_, + unsigned int num_items_) + { + idx = start_index_; + num_items = num_items_; + end = c->buffer->len; + matcher.set_syllable (start_index_ == c->buffer->idx ? c->buffer->cur().syllable () : 0); + } + inline void reject (void) { num_items++; match_glyph_data--; } + inline bool next (void) { assert (num_items > 0); - while (!has_no_chance ()) + while (idx + num_items < end) { idx++; const hb_glyph_info_t &info = c->buffer->info[idx]; @@ -450,53 +409,10 @@ struct hb_apply_context_t } return false; } - - unsigned int idx; - protected: - hb_apply_context_t *c; - matcher_t matcher; - const USHORT *match_glyph_data; - - unsigned int num_items; - unsigned int end; - }; - - struct skipping_backward_iterator_t - { - inline skipping_backward_iterator_t (hb_apply_context_t *c_, - unsigned int start_index_, - unsigned int num_items_, - bool context_match = false) : - idx (start_index_), - c (c_), - match_glyph_data (NULL), - num_items (num_items_) - { - matcher.set_lookup_props (c->lookup_props); - /* Ignore ZWNJ if we are matching GSUB context, or matching GPOS. */ - matcher.set_ignore_zwnj (context_match || c->table_index == 1); - /* Ignore ZWJ if we are matching GSUB context, or matching GPOS, or if asked to. */ - matcher.set_ignore_zwj (context_match || c->table_index == 1 || c->auto_zwj); - if (!context_match) - matcher.set_mask (c->lookup_mask); - matcher.set_syllable (start_index_ == c->buffer->idx ? c->buffer->cur().syllable () : 0); - } - inline void set_lookup_props (unsigned int lookup_props) { matcher.set_lookup_props (lookup_props); } - inline void set_syllable (unsigned int syllable) { matcher.set_syllable (syllable); } - inline void set_match_func (matcher_t::match_func_t match_func, - const void *match_data, - const USHORT glyph_data[]) - { - matcher.set_match_func (match_func, match_data); - match_glyph_data = glyph_data; - } - - inline bool has_no_chance (void) const { return unlikely (idx < num_items); } - inline void reject (void) { num_items++; } inline bool prev (void) { assert (num_items > 0); - while (!has_no_chance ()) + while (idx >= num_items) { idx--; const hb_glyph_info_t &info = c->buffer->out_info[idx]; @@ -528,8 +444,75 @@ struct hb_apply_context_t const USHORT *match_glyph_data; unsigned int num_items; + unsigned int end; }; + + inline const char *get_name (void) { return "APPLY"; } + static const unsigned int max_debug_depth = HB_DEBUG_APPLY; + typedef bool return_t; + typedef return_t (*recurse_func_t) (hb_apply_context_t *c, unsigned int lookup_index); + template <typename T, typename F> + inline bool may_dispatch (const T *obj, const F *format) { return true; } + template <typename T> + inline return_t dispatch (const T &obj) { return obj.apply (this); } + static return_t default_return_value (void) { return false; } + bool stop_sublookup_iteration (return_t r) const { return r; } + return_t recurse (unsigned int lookup_index) + { + if (unlikely (nesting_level_left == 0 || !recurse_func)) + return default_return_value (); + + nesting_level_left--; + bool ret = recurse_func (this, lookup_index); + nesting_level_left++; + return ret; + } + + unsigned int table_index; /* GSUB/GPOS */ + hb_font_t *font; + hb_face_t *face; + hb_buffer_t *buffer; + hb_direction_t direction; + hb_mask_t lookup_mask; + bool auto_zwj; + recurse_func_t recurse_func; + unsigned int nesting_level_left; + unsigned int lookup_props; + const GDEF &gdef; + bool has_glyph_classes; + skipping_iterator_t iter_input, iter_context; + unsigned int debug_depth; + + + hb_apply_context_t (unsigned int table_index_, + hb_font_t *font_, + hb_buffer_t *buffer_) : + table_index (table_index_), + font (font_), face (font->face), buffer (buffer_), + direction (buffer_->props.direction), + lookup_mask (1), + auto_zwj (true), + recurse_func (NULL), + nesting_level_left (MAX_NESTING_LEVEL), + lookup_props (0), + gdef (*hb_ot_layout_from_face (face)->gdef), + has_glyph_classes (gdef.has_glyph_classes ()), + iter_input (), + iter_context (), + debug_depth (0) {} + + inline void set_lookup_mask (hb_mask_t mask) { lookup_mask = mask; } + inline void set_auto_zwj (bool auto_zwj_) { auto_zwj = auto_zwj_; } + inline void set_recurse_func (recurse_func_t func) { recurse_func = func; } + inline void set_lookup (const Lookup &l) { set_lookup_props (l.get_props ()); } + inline void set_lookup_props (unsigned int lookup_props_) + { + lookup_props = lookup_props_; + iter_input.init (this, false); + iter_context.init (this, true); + } + inline bool match_properties_mark (hb_codepoint_t glyph, unsigned int glyph_props, @@ -741,9 +724,9 @@ static inline bool match_input (hb_apply_context_t *c, hb_buffer_t *buffer = c->buffer; - hb_apply_context_t::skipping_forward_iterator_t skippy_iter (c, buffer->idx, count - 1); + hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input; + skippy_iter.reset (buffer->idx, count - 1); skippy_iter.set_match_func (match_func, match_data, input); - if (skippy_iter.has_no_chance ()) return TRACE_RETURN (false); /* * This is perhaps the trickiest part of OpenType... Remarks: @@ -910,9 +893,9 @@ static inline bool match_backtrack (hb_apply_context_t *c, { TRACE_APPLY (NULL); - hb_apply_context_t::skipping_backward_iterator_t skippy_iter (c, c->buffer->backtrack_len (), count, true); + hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_context; + skippy_iter.reset (c->buffer->backtrack_len (), count); skippy_iter.set_match_func (match_func, match_data, backtrack); - if (skippy_iter.has_no_chance ()) return TRACE_RETURN (false); for (unsigned int i = 0; i < count; i++) if (!skippy_iter.prev ()) @@ -930,9 +913,9 @@ static inline bool match_lookahead (hb_apply_context_t *c, { TRACE_APPLY (NULL); - hb_apply_context_t::skipping_forward_iterator_t skippy_iter (c, c->buffer->idx + offset - 1, count, true); + hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_context; + skippy_iter.reset (c->buffer->idx + offset - 1, count); skippy_iter.set_match_func (match_func, match_data, lookahead); - if (skippy_iter.has_no_chance ()) return TRACE_RETURN (false); for (unsigned int i = 0; i < count; i++) if (!skippy_iter.next ()) @@ -945,7 +928,8 @@ static inline bool match_lookahead (hb_apply_context_t *c, struct LookupRecord { - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this)); } @@ -1168,7 +1152,8 @@ struct Rule } public: - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return inputCount.sanitize (c) && lookupCount.sanitize (c) @@ -1232,7 +1217,8 @@ struct RuleSet return TRACE_RETURN (false); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (rule.sanitize (c, this)); } @@ -1314,7 +1300,8 @@ struct ContextFormat1 return TRACE_RETURN (rule_set.apply (c, lookup_context)); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (coverage.sanitize (c, this) && ruleSet.sanitize (c, this)); } @@ -1406,7 +1393,8 @@ struct ContextFormat2 return TRACE_RETURN (rule_set.apply (c, lookup_context)); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (coverage.sanitize (c, this) && classDef.sanitize (c, this) && ruleSet.sanitize (c, this)); } @@ -1494,7 +1482,8 @@ struct ContextFormat3 return TRACE_RETURN (context_apply_lookup (c, glyphCount, (const USHORT *) (coverageZ + 1), lookupCount, lookupRecord, lookup_context)); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (!c->check_struct (this)) return TRACE_RETURN (false); unsigned int count = glyphCount; @@ -1502,7 +1491,7 @@ struct ContextFormat3 if (!c->check_array (coverageZ, coverageZ[0].static_size, count)) return TRACE_RETURN (false); for (unsigned int i = 0; i < count; i++) if (!coverageZ[i].sanitize (c, this)) return TRACE_RETURN (false); - LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverageZ, coverageZ[0].static_size * count); + const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverageZ, coverageZ[0].static_size * count); return TRACE_RETURN (c->check_array (lookupRecord, lookupRecord[0].static_size, lookupCount)); } @@ -1526,6 +1515,7 @@ struct Context inline typename context_t::return_t dispatch (context_t *c) const { TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); switch (u.format) { case 1: return TRACE_RETURN (c->dispatch (u.format1)); case 2: return TRACE_RETURN (c->dispatch (u.format2)); @@ -1534,17 +1524,6 @@ struct Context } } - inline bool sanitize (hb_sanitize_context_t *c) { - TRACE_SANITIZE (this); - if (!u.format.sanitize (c)) return TRACE_RETURN (false); - switch (u.format) { - case 1: return TRACE_RETURN (u.format1.sanitize (c)); - case 2: return TRACE_RETURN (u.format2.sanitize (c)); - case 3: return TRACE_RETURN (u.format3.sanitize (c)); - default:return TRACE_RETURN (true); - } - } - protected: union { USHORT format; /* Format identifier */ @@ -1726,14 +1705,15 @@ struct ChainRule lookup.array, lookup_context)); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (!backtrack.sanitize (c)) return TRACE_RETURN (false); - HeadlessArrayOf<USHORT> &input = StructAfter<HeadlessArrayOf<USHORT> > (backtrack); + const HeadlessArrayOf<USHORT> &input = StructAfter<HeadlessArrayOf<USHORT> > (backtrack); if (!input.sanitize (c)) return TRACE_RETURN (false); - ArrayOf<USHORT> &lookahead = StructAfter<ArrayOf<USHORT> > (input); + const ArrayOf<USHORT> &lookahead = StructAfter<ArrayOf<USHORT> > (input); if (!lookahead.sanitize (c)) return TRACE_RETURN (false); - ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead); + const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead); return TRACE_RETURN (lookup.sanitize (c)); } @@ -1795,7 +1775,8 @@ struct ChainRuleSet return TRACE_RETURN (false); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (rule.sanitize (c, this)); } @@ -1874,7 +1855,8 @@ struct ChainContextFormat1 return TRACE_RETURN (rule_set.apply (c, lookup_context)); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (coverage.sanitize (c, this) && ruleSet.sanitize (c, this)); } @@ -1984,7 +1966,8 @@ struct ChainContextFormat2 return TRACE_RETURN (rule_set.apply (c, lookup_context)); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (coverage.sanitize (c, this) && backtrackClassDef.sanitize (c, this) && inputClassDef.sanitize (c, this) && lookaheadClassDef.sanitize (c, this) && @@ -2105,15 +2088,16 @@ struct ChainContextFormat3 lookup.len, lookup.array, lookup_context)); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); if (!backtrack.sanitize (c, this)) return TRACE_RETURN (false); - OffsetArrayOf<Coverage> &input = StructAfter<OffsetArrayOf<Coverage> > (backtrack); + const OffsetArrayOf<Coverage> &input = StructAfter<OffsetArrayOf<Coverage> > (backtrack); if (!input.sanitize (c, this)) return TRACE_RETURN (false); if (!input.len) return TRACE_RETURN (false); /* To be consistent with Context. */ - OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage> > (input); + const OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage> > (input); if (!lookahead.sanitize (c, this)) return TRACE_RETURN (false); - ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead); + const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead); return TRACE_RETURN (lookup.sanitize (c)); } @@ -2144,6 +2128,7 @@ struct ChainContext inline typename context_t::return_t dispatch (context_t *c) const { TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); switch (u.format) { case 1: return TRACE_RETURN (c->dispatch (u.format1)); case 2: return TRACE_RETURN (c->dispatch (u.format2)); @@ -2152,17 +2137,6 @@ struct ChainContext } } - inline bool sanitize (hb_sanitize_context_t *c) { - TRACE_SANITIZE (this); - if (!u.format.sanitize (c)) return TRACE_RETURN (false); - switch (u.format) { - case 1: return TRACE_RETURN (u.format1.sanitize (c)); - case 2: return TRACE_RETURN (u.format2.sanitize (c)); - case 3: return TRACE_RETURN (u.format3.sanitize (c)); - default:return TRACE_RETURN (true); - } - } - protected: union { USHORT format; /* Format identifier */ @@ -2173,14 +2147,32 @@ struct ChainContext }; +template <typename T> struct ExtensionFormat1 { inline unsigned int get_type (void) const { return extensionLookupType; } - inline unsigned int get_offset (void) const { return extensionOffset; } - inline bool sanitize (hb_sanitize_context_t *c) { + template <typename X> + inline const X& get_subtable (void) const + { + unsigned int offset = extensionOffset; + if (unlikely (!offset)) return Null(typename T::LookupSubTable); + return StructAtOffset<typename T::LookupSubTable> (this, offset); + } + + template <typename context_t> + inline typename context_t::return_t dispatch (context_t *c) const + { + 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 ()); + } + + /* This is called from may_dispatch() above with hb_sanitize_context_t. */ + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this)); + return TRACE_RETURN (c->check_struct (this) && extensionOffset != 0); } protected: @@ -2204,49 +2196,30 @@ struct Extension default:return 0; } } - inline unsigned int get_offset (void) const - { - switch (u.format) { - case 1: return u.format1.get_offset (); - default:return 0; - } - } - template <typename X> inline const X& get_subtable (void) const { - unsigned int offset = get_offset (); - if (unlikely (!offset)) return Null(typename T::LookupSubTable); - return StructAtOffset<typename T::LookupSubTable> (this, offset); + switch (u.format) { + case 1: return u.format1.template get_subtable<typename T::LookupSubTable> (); + default:return Null(typename T::LookupSubTable); + } } template <typename context_t> inline typename context_t::return_t dispatch (context_t *c) const { - return get_subtable<typename T::LookupSubTable> ().dispatch (c, get_type ()); - } - - inline bool sanitize_self (hb_sanitize_context_t *c) { - TRACE_SANITIZE (this); - if (!u.format.sanitize (c)) return TRACE_RETURN (false); + TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); switch (u.format) { - case 1: return TRACE_RETURN (u.format1.sanitize (c)); - default:return TRACE_RETURN (true); + case 1: return TRACE_RETURN (u.format1.dispatch (c)); + default:return TRACE_RETURN (c->default_return_value ()); } } - inline bool sanitize (hb_sanitize_context_t *c) { - TRACE_SANITIZE (this); - if (!sanitize_self (c)) return TRACE_RETURN (false); - unsigned int offset = get_offset (); - if (unlikely (!offset)) return TRACE_RETURN (true); - return TRACE_RETURN (StructAtOffset<typename T::LookupSubTable> (this, offset).sanitize (c, get_type ())); - } - protected: union { USHORT format; /* Format identifier */ - ExtensionFormat1 format1; + ExtensionFormat1<T> format1; } u; }; @@ -2291,7 +2264,8 @@ struct GSUBGPOS inline const Lookup& get_lookup (unsigned int i) const { return (this+lookupList)[i]; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (version.sanitize (c) && likely (version.major == 1) && scriptList.sanitize (c, this) && diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-jstf-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-jstf-table.hh index 67a6df5b421..739dfd91067 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-jstf-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-jstf-table.hh @@ -54,7 +54,8 @@ typedef OffsetListOf<PosLookup> JstfMax; struct JstfPriority { - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && shrinkageEnableGSUB.sanitize (c, this) && @@ -123,7 +124,8 @@ struct JstfPriority struct JstfLangSys : OffsetListOf<JstfPriority> { inline bool sanitize (hb_sanitize_context_t *c, - const Record<JstfLangSys>::sanitize_closure_t * = NULL) { + const Record<JstfLangSys>::sanitize_closure_t * = NULL) const + { TRACE_SANITIZE (this); return TRACE_RETURN (OffsetListOf<JstfPriority>::sanitize (c)); } @@ -163,7 +165,8 @@ struct JstfScript inline const JstfLangSys& get_default_lang_sys (void) const { return this+defaultLangSys; } inline bool sanitize (hb_sanitize_context_t *c, - const Record<JstfScript>::sanitize_closure_t * = NULL) { + const Record<JstfScript>::sanitize_closure_t * = NULL) const + { TRACE_SANITIZE (this); return TRACE_RETURN (extenderGlyphs.sanitize (c, this) && defaultLangSys.sanitize (c, this) && @@ -206,7 +209,8 @@ struct JSTF inline bool find_script_index (hb_tag_t tag, unsigned int *index) const { return scriptList.find_index (tag, index); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (version.sanitize (c) && likely (version.major == 1) && scriptList.sanitize (c, this)); diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-private.hh index 3f7c858d1cf..47fecd216d3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout-private.hh @@ -130,6 +130,11 @@ struct hb_ot_layout_lookup_accelerator_t { } + inline bool may_have (hb_codepoint_t g) const { + return digest.may_have (g); + } + + private: hb_set_digest_t digest; }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout.cc index 602b94ecd6c..b1e69e89f4c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout.cc @@ -699,7 +699,7 @@ hb_ot_layout_lookup_would_substitute_fast (hb_face_t *face, const OT::SubstLookup& l = hb_ot_layout_from_face (face)->gsub->get_lookup (lookup_index); - return l.would_apply (&c, &hb_ot_layout_from_face (face)->gsub_accels[lookup_index].digest); + return l.would_apply (&c, &hb_ot_layout_from_face (face)->gsub_accels[lookup_index]); } void @@ -829,26 +829,83 @@ struct GPOSProxy }; -template <typename Lookup> -static inline bool apply_once (OT::hb_apply_context_t *c, - const Lookup &lookup) +template <typename Obj> +static inline bool +apply_forward (OT::hb_apply_context_t *c, + const Obj &obj, + const hb_ot_layout_lookup_accelerator_t &accel) { - if (!c->check_glyph_property (&c->buffer->cur(), c->lookup_props)) - return false; - return lookup.dispatch (c); + bool ret = false; + hb_buffer_t *buffer = c->buffer; + while (buffer->idx < buffer->len) + { + if (accel.may_have (buffer->cur().codepoint) && + (buffer->cur().mask & c->lookup_mask) && + c->check_glyph_property (&buffer->cur(), c->lookup_props) && + obj.apply (c)) + ret = true; + else + buffer->next_glyph (); + } + return ret; } -template <typename Proxy> +template <typename Obj> static inline bool +apply_backward (OT::hb_apply_context_t *c, + const Obj &obj, + const hb_ot_layout_lookup_accelerator_t &accel) +{ + bool ret = false; + hb_buffer_t *buffer = c->buffer; + do + { + if (accel.may_have (buffer->cur().codepoint) && + (buffer->cur().mask & c->lookup_mask) && + c->check_glyph_property (&buffer->cur(), c->lookup_props) && + obj.apply (c)) + ret = true; + /* The reverse lookup doesn't "advance" cursor (for good reason). */ + buffer->idx--; + + } + while ((int) buffer->idx >= 0); + return ret; +} + +struct hb_apply_forward_context_t +{ + inline const char *get_name (void) { return "APPLY_FORWARD"; } + static const unsigned int max_debug_depth = HB_DEBUG_APPLY; + typedef bool return_t; + template <typename T, typename F> + inline bool may_dispatch (const T *obj, const F *format) { return true; } + template <typename T> + inline return_t dispatch (const T &obj) { return apply_forward (c, obj, accel); } + static return_t default_return_value (void) { return false; } + bool stop_sublookup_iteration (return_t r HB_UNUSED) const { return true; } + + hb_apply_forward_context_t (OT::hb_apply_context_t *c_, + const hb_ot_layout_lookup_accelerator_t &accel_) : + c (c_), + accel (accel_), + debug_depth (0) {} + + OT::hb_apply_context_t *c; + const hb_ot_layout_lookup_accelerator_t &accel; + unsigned int debug_depth; +}; + +template <typename Proxy> +static inline void apply_string (OT::hb_apply_context_t *c, const typename Proxy::Lookup &lookup, const hb_ot_layout_lookup_accelerator_t &accel) { - bool ret = false; hb_buffer_t *buffer = c->buffer; if (unlikely (!buffer->len || !c->lookup_mask)) - return false; + return; c->set_lookup (lookup); @@ -859,21 +916,20 @@ apply_string (OT::hb_apply_context_t *c, buffer->clear_output (); buffer->idx = 0; - while (buffer->idx < buffer->len) + bool ret; + if (lookup.get_subtable_count () == 1) { - if (accel.digest.may_have (buffer->cur().codepoint) && - (buffer->cur().mask & c->lookup_mask) && - apply_once (c, lookup)) - ret = true; - else - buffer->next_glyph (); + hb_apply_forward_context_t c_forward (c, accel); + ret = lookup.dispatch (&c_forward); } + else + ret = apply_forward (c, lookup, accel); if (ret) { if (!Proxy::inplace) buffer->swap_buffers (); else - assert (!buffer->has_separate_output ()); + assert (!buffer->has_separate_output ()); } } else @@ -882,20 +938,9 @@ apply_string (OT::hb_apply_context_t *c, if (Proxy::table_index == 0) buffer->remove_output (); buffer->idx = buffer->len - 1; - do - { - if (accel.digest.may_have (buffer->cur().codepoint) && - (buffer->cur().mask & c->lookup_mask) && - apply_once (c, lookup)) - ret = true; - /* The reverse lookup doesn't "advance" cursor (for good reason). */ - buffer->idx--; - } - while ((int) buffer->idx >= 0); + apply_backward (c, lookup, accel); } - - return ret; } template <typename Proxy> diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout.h index 949678ac422..949678ac422 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-layout.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-layout.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-map-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-map-private.hh index 86b7e9fafea..86b7e9fafea 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-map-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-map-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-map.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-map.cc index 4985eb22b20..4985eb22b20 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-map.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-map.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-maxp-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-maxp-table.hh index b1f832852d3..0d9a0fa1d87 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-maxp-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-maxp-table.hh @@ -43,11 +43,13 @@ struct maxp { static const hb_tag_t tableTag = HB_OT_TAG_maxp; - inline unsigned int get_num_glyphs (void) const { + inline unsigned int get_num_glyphs (void) const + { return numGlyphs; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && likely (version.major == 1 || (version.major == 0 && version.minor == 0x5000u))); diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-name-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-name-table.hh index 31d9fac7e29..21450c61382 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-name-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-name-table.hh @@ -56,7 +56,8 @@ struct NameRecord return 0; } - inline bool sanitize (hb_sanitize_context_t *c, void *base) { + inline bool sanitize (hb_sanitize_context_t *c, const void *base) const + { TRACE_SANITIZE (this); /* We can check from base all the way up to the end of string... */ return TRACE_RETURN (c->check_struct (this) && c->check_range ((char *) base, (unsigned int) length + offset)); @@ -101,7 +102,7 @@ struct name inline unsigned int get_size (void) const { return min_size + count * nameRecord[0].min_size; } - inline bool sanitize_records (hb_sanitize_context_t *c) { + inline bool sanitize_records (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); char *string_pool = (char *) this + stringOffset; unsigned int _count = count; @@ -110,7 +111,8 @@ struct name return TRACE_RETURN (true); } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) const + { TRACE_SANITIZE (this); return TRACE_RETURN (c->check_struct (this) && likely (format == 0 || format == 1) && diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-arabic-fallback.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-arabic-fallback.hh index a77f24ec849..a77f24ec849 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-arabic-fallback.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-arabic-fallback.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-arabic-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-arabic-table.hh index 17100497ecb..17100497ecb 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-arabic-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-arabic-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-arabic-win1256.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-arabic-win1256.hh index 3a20b507d4e..8edd3ba8027 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-arabic-win1256.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-arabic-win1256.hh @@ -133,7 +133,6 @@ */ #define OT_LOOKUP_TYPE_SUBST_SINGLE 1u -#define OT_LOOKUP_TYPE_SUBST_MULTIPLE 2u #define OT_LOOKUP_TYPE_SUBST_LIGATURE 4u #define OT_SUBLOOKUP_SINGLE_SUBST_FORMAT2(Name, FromGlyphs, ToGlyphs) \ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-arabic.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-arabic.cc index ae908641271..ae908641271 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-arabic.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-arabic.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-default.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-default.cc index f7f097eedaa..f7f097eedaa 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-default.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-default.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-hangul.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-hangul.cc index 6ac18b08bff..6ac18b08bff 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-hangul.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-hangul.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-hebrew.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-hebrew.cc index c7b7a5eba6a..c7b7a5eba6a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-hebrew.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-hebrew.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-indic-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-indic-machine.hh index f652d4fda73..f652d4fda73 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-indic-machine.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-indic-machine.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-indic-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-indic-machine.rl index 694b235d1d1..694b235d1d1 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-indic-machine.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-indic-machine.rl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-indic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-indic-private.hh index d8dfc6507d9..d8dfc6507d9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-indic-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-indic-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-indic-table.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-indic-table.cc index 2e159a12b00..2e159a12b00 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-indic-table.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-indic-table.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-indic.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-indic.cc index 7723600410a..7723600410a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-indic.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-indic.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-myanmar-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-myanmar-machine.hh index 29fdf9a1aef..29fdf9a1aef 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-myanmar-machine.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-myanmar-machine.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-myanmar-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-myanmar-machine.rl index 9649a916f02..9649a916f02 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-myanmar-machine.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-myanmar-machine.rl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-myanmar.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-myanmar.cc index d016380cc63..d016380cc63 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-myanmar.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-myanmar.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-private.hh index e268933ce4c..e268933ce4c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-sea-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-sea-machine.hh index 15b862f5a13..15b862f5a13 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-sea-machine.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-sea-machine.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-sea-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-sea-machine.rl index 46140fc4d5f..46140fc4d5f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-sea-machine.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-sea-machine.rl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-sea.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-sea.cc index f08b7ccb9f4..f08b7ccb9f4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-sea.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-sea.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-thai.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-thai.cc index feb7fc7a148..feb7fc7a148 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-thai.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-thai.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-tibetan.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-tibetan.cc index 01465a426f8..01465a426f8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-complex-tibetan.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-complex-tibetan.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-fallback-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-fallback-private.hh index ec653513f1b..ec653513f1b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-fallback-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-fallback-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-fallback.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-fallback.cc index 80d7da82f38..53274b502a5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-fallback.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-fallback.cc @@ -441,13 +441,15 @@ _hb_ot_shape_fallback_kern (const hb_ot_shape_plan_t *plan, OT::hb_apply_context_t c (1, font, buffer); c.set_lookup_mask (plan->kern_mask); c.set_lookup_props (OT::LookupFlag::IgnoreMarks); + OT::hb_apply_context_t::skipping_iterator_t &skippy_iter = c.iter_input; + skippy_iter.init (&c); unsigned int count = buffer->len; hb_glyph_info_t *info = buffer->info; hb_glyph_position_t *pos = buffer->pos; for (unsigned int idx = 0; idx < count;) { - OT::hb_apply_context_t::skipping_forward_iterator_t skippy_iter (&c, idx, 1); + skippy_iter.reset (idx, 1); if (!skippy_iter.next ()) { idx++; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-normalize-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-normalize-private.hh index c744e26451d..c744e26451d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-normalize-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-normalize-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-normalize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-normalize.cc index 4287253aed1..8cc64af0144 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-normalize.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-normalize.cc @@ -197,16 +197,17 @@ static inline void decompose_current_character (const hb_ot_shape_normalize_context_t *c, bool shortest) { hb_buffer_t * const buffer = c->buffer; + hb_codepoint_t u = buffer->cur().codepoint; hb_codepoint_t glyph; /* Kind of a cute waterfall here... */ - if (shortest && c->font->get_glyph (buffer->cur().codepoint, 0, &glyph)) + if (shortest && c->font->get_glyph (u, 0, &glyph)) next_char (buffer, glyph); - else if (decompose (c, shortest, buffer->cur().codepoint)) + else if (decompose (c, shortest, u)) skip_char (buffer); - else if (!shortest && c->font->get_glyph (buffer->cur().codepoint, 0, &glyph)) + else if (!shortest && c->font->get_glyph (u, 0, &glyph)) next_char (buffer, glyph); - else if (decompose_compatibility (c, buffer->cur().codepoint)) + else if (decompose_compatibility (c, u)) skip_char (buffer); else next_char (buffer, glyph); /* glyph is initialized in earlier branches. */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-private.hh index 54ac2c3cf7c..54ac2c3cf7c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape.cc index a0b503ab0f2..07adb04f678 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape.cc @@ -676,7 +676,7 @@ hb_ot_hide_default_ignorables (hb_ot_shape_context_t *c) pos[i].y_advance = 0; } else - continue; /* Delete it. */ + continue; /* Delete it. XXX Merge clusters? */ } if (j != i) { diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape.h index 1402f54acc5..1402f54acc5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-shape.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-shape.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-tag.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-tag.cc index 878dd79b62c..878dd79b62c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-tag.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-tag.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-tag.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-tag.h index 1bf12ab3c09..1bf12ab3c09 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot-tag.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot-tag.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot.h index 47c92a58e4b..47c92a58e4b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ot.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ot.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-private.hh index c92cdec5164..06b24a80f8d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-private.hh @@ -94,22 +94,6 @@ # endif #endif -#if (defined(__WIN32__) && !defined(__WINE__)) || defined(_MSC_VER) -#define snprintf _snprintf -/* Windows CE only has _strdup, while rest of Windows has both. */ -#define strdup _strdup -#endif - -#ifdef _MSC_VER -#undef inline -#define inline __inline -#endif - -#ifdef __STRICT_ANSI__ -#undef inline -#define inline __inline__ -#endif - #if __GNUC__ >= 3 #define HB_FUNC __PRETTY_FUNCTION__ #elif defined(_MSC_VER) @@ -134,14 +118,20 @@ # ifndef STRICT # define STRICT 1 # endif -#endif -#ifdef _WIN32_WCE -/* Some things not defined on Windows CE. */ -#define MemoryBarrier() -#define getenv(Name) NULL -#define setlocale(Category, Locale) "C" +# if defined(_WIN32_WCE) + /* Some things not defined on Windows CE. */ +# define getenv(Name) NULL +# define setlocale(Category, Locale) "C" static int errno = 0; /* Use something better? */ +# elif defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP) +# define getenv(Name) NULL +# endif +# if (defined(__WIN32__) && !defined(__WINE__)) || defined(_MSC_VER) +# define snprintf _snprintf + /* Windows CE only has _strdup, while rest of Windows has both. */ +# define strdup _strdup +# endif #endif #if HAVE_ATEXIT @@ -583,6 +573,30 @@ _hb_debug (unsigned int level, #define DEBUG_LEVEL_ENABLED(WHAT, LEVEL) (_hb_debug ((LEVEL), HB_DEBUG_##WHAT)) #define DEBUG_ENABLED(WHAT) (DEBUG_LEVEL_ENABLED (WHAT, 0)) +static inline void +_hb_print_func (const char *func) +{ + if (func) + { + unsigned int func_len = strlen (func); + /* Skip "static" */ + if (0 == strncmp (func, "static ", 7)) + func += 7; + /* Skip "typename" */ + if (0 == strncmp (func, "typename ", 9)) + func += 9; + /* Skip return type */ + const char *space = strchr (func, ' '); + if (space) + func = space + 1; + /* Skip parameter list */ + const char *paren = strchr (func, '('); + if (paren) + func_len = paren - func; + fprintf (stderr, "%.*s", func_len, func); + } +} + template <int max_level> static inline void _hb_debug_msg_va (const char *what, const void *obj, @@ -628,27 +642,13 @@ _hb_debug_msg_va (const char *what, } else fprintf (stderr, " " VRBAR LBAR); - if (func) - { - unsigned int func_len = strlen (func); -#ifndef HB_DEBUG_VERBOSE - /* Skip "typename" */ - if (0 == strncmp (func, "typename ", 9)) - func += 9; - /* Skip return type */ - const char *space = strchr (func, ' '); - if (space) - func = space + 1; - /* Skip parameter list */ - const char *paren = strchr (func, '('); - if (paren) - func_len = paren - func; -#endif - fprintf (stderr, "%.*s: ", func_len, func); - } + _hb_print_func (func); if (message) + { + fprintf (stderr, ": "); vfprintf (stderr, message, ap); + } fprintf (stderr, "\n"); } @@ -820,7 +820,7 @@ hb_in_range (T u, T lo, T hi) /* The sizeof() is here to force template instantiation. * I'm sure there are better ways to do this but can't think of * one right now. Declaring a variable won't work as HB_UNUSED - * is unsable on some platforms and unused types are less likely + * is unusable on some platforms and unused types are less likely * to generate a warning than unused variables. */ ASSERT_STATIC (sizeof (hb_assert_unsigned_t<T>) >= 0); diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-set-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-set-private.hh index 59e8f4559f5..acba4e946b6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-set-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-set-private.hh @@ -145,6 +145,8 @@ typedef hb_set_digest_combiner_t struct hb_set_t { + friend struct hb_frozen_set_t; + hb_object_header_t header; ASSERT_POD (); bool in_error; @@ -326,7 +328,7 @@ struct hb_set_t static const hb_codepoint_t INVALID = HB_SET_VALUE_INVALID; elt_t &elt (hb_codepoint_t g) { return elts[g >> SHIFT]; } - elt_t elt (hb_codepoint_t g) const { return elts[g >> SHIFT]; } + elt_t const &elt (hb_codepoint_t g) const { return elts[g >> SHIFT]; } elt_t mask (hb_codepoint_t g) const { return elt_t (1) << (g & MASK); } elt_t elts[ELTS]; /* XXX 8kb */ @@ -335,6 +337,59 @@ struct hb_set_t ASSERT_STATIC (sizeof (elt_t) * 8 * ELTS > MAX_G); }; +struct hb_frozen_set_t +{ + static const unsigned int SHIFT = hb_set_t::SHIFT; + static const unsigned int BITS = hb_set_t::BITS; + static const unsigned int MASK = hb_set_t::MASK; + typedef hb_set_t::elt_t elt_t; + + inline void init (const hb_set_t &set) + { + start = count = 0; + elts = NULL; + + unsigned int max = set.get_max (); + if (max == set.INVALID) + return; + unsigned int min = set.get_min (); + const elt_t &min_elt = set.elt (min); + const elt_t &max_elt = set.elt (max); + + start = min & ~MASK; + count = max - start + 1; + unsigned int num_elts = (count + BITS - 1) / BITS; + unsigned int elts_size = num_elts * sizeof (elt_t); + elts = (elt_t *) malloc (elts_size); + if (unlikely (!elts)) + { + start = count = 0; + return; + } + memcpy (elts, &min_elt, elts_size); + } + + inline void fini (void) + { + if (elts) + free (elts); + } + + inline bool has (hb_codepoint_t g) const + { + /* hb_codepoint_t is unsigned. */ + g -= start; + if (unlikely (g > count)) return false; + return !!(elt (g) & mask (g)); + } + + elt_t const &elt (hb_codepoint_t g) const { return elts[g >> SHIFT]; } + elt_t mask (hb_codepoint_t g) const { return elt_t (1) << (g & MASK); } + + private: + hb_codepoint_t start, count; + elt_t *elts; +}; #endif /* HB_SET_PRIVATE_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-set.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-set.cc index 59a0af46ed4..59a0af46ed4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-set.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-set.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-set.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-set.h index bafdae96333..bafdae96333 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-set.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-set.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shape-plan-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shape-plan-private.hh index 607da5e7791..607da5e7791 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shape-plan-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shape-plan-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shape-plan.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shape-plan.cc index 2166173f9e5..2166173f9e5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shape-plan.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shape-plan.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shape-plan.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shape-plan.h index 8f54552f90b..8f54552f90b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shape-plan.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shape-plan.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shape.cc index 9a59c085568..9a59c085568 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shape.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shape.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shape.h index 10a35cb517e..10a35cb517e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shape.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shape.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shaper-impl-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shaper-impl-private.hh index 7844081e95b..7844081e95b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shaper-impl-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shaper-impl-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shaper-list.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shaper-list.hh index 6c537d49215..6c537d49215 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shaper-list.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shaper-list.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shaper-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shaper-private.hh index 29c4493943d..d1d1146dad2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shaper-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shaper-private.hh @@ -79,10 +79,9 @@ struct hb_shaper_data_t { HB_SHAPER_DATA_DESTROY_FUNC (shaper, object) (HB_SHAPER_DATA_TYPE (shaper, object) *data) #define HB_SHAPER_DATA_DESTROY(shaper, object) \ - if (object->shaper_data.shaper && \ - object->shaper_data.shaper != HB_SHAPER_DATA_INVALID && \ - object->shaper_data.shaper != HB_SHAPER_DATA_SUCCEEDED) \ - HB_SHAPER_DATA_DESTROY_FUNC (shaper, object) (HB_SHAPER_DATA (shaper, object)); + if (HB_SHAPER_DATA_TYPE (shaper, object) *data = HB_SHAPER_DATA (shaper, object)) \ + if (data != HB_SHAPER_DATA_INVALID && data != HB_SHAPER_DATA_SUCCEEDED) \ + HB_SHAPER_DATA_DESTROY_FUNC (shaper, object) (data); #define HB_SHAPER_DATA_ENSURE_DECLARE(shaper, object) \ static inline bool \ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shaper.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shaper.cc index 580b95c84b4..580b95c84b4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-shaper.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-shaper.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ucdn.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ucdn.cc index 5b53821f923..5b53821f923 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-ucdn.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-ucdn.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-unicode-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-unicode-private.hh index a2c59da274a..a2c59da274a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-unicode-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-unicode-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-unicode.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-unicode.cc index fc19006d3eb..fc19006d3eb 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-unicode.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-unicode.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-unicode.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-unicode.h index 1c4e097b92d..1c4e097b92d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-unicode.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-unicode.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-uniscribe.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-uniscribe.cc index e7bcad2ea86..e7bcad2ea86 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-uniscribe.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-uniscribe.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-uniscribe.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-uniscribe.h index 001ab38ea87..001ab38ea87 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-uniscribe.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-uniscribe.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-utf-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-utf-private.hh index 0b798a05c30..14d3c2e369b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-utf-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-utf-private.hh @@ -29,14 +29,11 @@ #include "hb-private.hh" -template <typename T, bool validate=true> struct hb_utf_t; - -/* UTF-8 */ - -template <> -struct hb_utf_t<uint8_t, true> +struct hb_utf8_t { + typedef uint8_t codepoint_t; + static inline const uint8_t * next (const uint8_t *text, const uint8_t *end, @@ -131,11 +128,10 @@ struct hb_utf_t<uint8_t, true> }; -/* UTF-16 */ - -template <> -struct hb_utf_t<uint16_t, true> +struct hb_utf16_t { + typedef uint16_t codepoint_t; + static inline const uint16_t * next (const uint16_t *text, const uint16_t *end, @@ -204,11 +200,11 @@ struct hb_utf_t<uint16_t, true> }; -/* UTF-32 */ - -template <bool validate> -struct hb_utf_t<uint32_t, validate> +template <bool validate=true> +struct hb_utf32_t { + typedef uint32_t codepoint_t; + static inline const uint32_t * next (const uint32_t *text, const uint32_t *end HB_UNUSED, @@ -246,4 +242,37 @@ struct hb_utf_t<uint32_t, validate> }; +struct hb_latin1_t +{ + typedef uint8_t codepoint_t; + + static inline const uint8_t * + next (const uint8_t *text, + const uint8_t *end HB_UNUSED, + hb_codepoint_t *unicode, + hb_codepoint_t replacement HB_UNUSED) + { + *unicode = *text++; + return text; + } + + static inline const uint8_t * + prev (const uint8_t *text, + const uint8_t *start HB_UNUSED, + hb_codepoint_t *unicode, + hb_codepoint_t replacement) + { + *unicode = *--text; + return text; + } + + static inline unsigned int + strlen (const uint8_t *text) + { + unsigned int l = 0; + while (*text++) l++; + return l; + } +}; + #endif /* HB_UTF_PRIVATE_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-version.h.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-version.h.in index 2517160d18b..2517160d18b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-version.h.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-version.h.in diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-warning.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-warning.cc index e0f88e2d4ad..e0f88e2d4ad 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb-warning.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb-warning.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb.h index c5a938a3818..c5a938a3818 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/hb.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/hb.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/main.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/main.cc index f9708cc948e..f9708cc948e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/main.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/main.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/test-buffer-serialize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/test-buffer-serialize.cc index 18c46e9524b..18c46e9524b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/test-buffer-serialize.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/test-buffer-serialize.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/test-size-params.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/test-size-params.cc index 35d9e3c8e25..35d9e3c8e25 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/test-size-params.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/test-size-params.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/test-would-substitute.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/test-would-substitute.cc index 8ea87cdf397..8ea87cdf397 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/test-would-substitute.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/test-would-substitute.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/test.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/test.cc index a8fe046f34c..a8fe046f34c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.38/src/test.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.39/src/test.cc diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac index c4c27f9ba56..fca9da7ebb9 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.38]) +m4_define([harfbuzz_version], [0.9.39]) |