diff options
author | Khaled Hosny <khaledhosny@eglug.org> | 2013-03-21 22:55:27 +0000 |
---|---|---|
committer | Khaled Hosny <khaledhosny@eglug.org> | 2013-03-21 22:55:27 +0000 |
commit | e8cc56a59f892d97cd100d0c0b5099d66ab69e94 (patch) | |
tree | 5bb95ee7052722667af86e106c4408ab3ad4d8fb /Build/source/libs | |
parent | beef34c2a32f00110da451933cf75ca0ac9a86f2 (diff) |
harfbuzz 0.9.14
git-svn-id: svn://tug.org/texlive/trunk@29461 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs')
-rw-r--r-- | Build/source/libs/harfbuzz/Makefile.am | 3 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14-PATCHES/ChangeLog (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13-PATCHES/ChangeLog) | 5 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14-PATCHES/TL-Changes (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13-PATCHES/TL-Changes) | 1 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/AUTHORS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/AUTHORS) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/Android.mk (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/Android.mk) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/ChangeLog (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/ChangeLog) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/Makefile.am (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/Makefile.am) | 17 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/NEWS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/NEWS) | 14 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/README (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/README) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/THANKS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/THANKS) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/TODO (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/TODO) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.14/autogen.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/autogen.sh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/config.h.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/config.h.in) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/configure.ac (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/configure.ac) | 40 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/harfbuzz.doap (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/harfbuzz.doap) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/harfbuzz.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/harfbuzz.pc.in) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/Makefile.am (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/Makefile.am) | 19 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-c-linkage-decls.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-c-linkage-decls.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-header-guards.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-header-guards.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-includes.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-includes.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-libstdc++.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-libstdc++.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-static-inits.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-static-inits.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-symbols.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-symbols.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/gen-arabic-table.py (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/gen-arabic-table.py) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/gen-indic-table.py (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/gen-indic-table.py) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-atomic-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-atomic-private.hh) | 14 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-blob.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-blob.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-blob.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-blob.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-json.hh | 643 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-json.rl | 132 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-text.hh | 571 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-text.rl | 126 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-buffer-private.hh) | 3 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-serialize.cc | 336 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-buffer.cc) | 241 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-buffer.h) | 6 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-cache-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-cache-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-common.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-common.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-common.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-common.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-coretext.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-coretext.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-coretext.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-coretext.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-fallback-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-fallback-shape.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-font-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-font-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-font.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-font.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-font.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-font.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ft.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ft.cc) | 13 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ft.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ft.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-glib.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-glib.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-glib.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-glib.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-gobject-enums.cc.tmpl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-gobject-enums.cc.tmpl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-gobject-structs.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-gobject-structs.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-gobject.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-gobject.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-graphite2.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-graphite2.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-graphite2.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-graphite2.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-icu-le.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-icu-le.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-icu.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-icu.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-icu.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-icu.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-mutex-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-mutex-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-object-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-object-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-old.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-old.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-open-file-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-open-file-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-open-type-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-open-type-private.hh) | 11 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-head-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-head-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-hhea-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-hhea-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-hmtx-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-hmtx-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-common-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-common-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-gdef-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-gdef-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-gpos-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-gpos-table.hh) | 105 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-gsub-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-gsub-table.hh) | 159 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-gsubgpos-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-gsubgpos-private.hh) | 66 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-private.hh) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout.cc) | 8 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-map-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-map-private.hh) | 10 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-map.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-map.cc) | 18 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-maxp-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-maxp-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-name-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-name-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-arabic-fallback.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-arabic-fallback.hh) | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-arabic-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-arabic-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-arabic.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-arabic.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-default.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-default.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-indic-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-indic-machine.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-indic-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-indic-machine.rl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-indic-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-indic-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-indic-table.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-indic-table.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-indic.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-indic.cc) | 74 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-myanmar-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-myanmar-machine.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-myanmar-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-myanmar-machine.rl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-myanmar.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-myanmar.cc) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-sea-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-sea-machine.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-sea-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-sea-machine.rl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-sea.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-sea.cc) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-thai.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-thai.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-fallback-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-fallback-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-fallback.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-fallback.cc) | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-normalize-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-normalize-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-normalize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-normalize.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-tag.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-tag.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-tag.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-tag.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-private.hh) | 25 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-set-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-set-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-set.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-set.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-set.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-set.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shape-plan-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shape-plan-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shape-plan.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shape-plan.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shape-plan.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shape-plan.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shape.cc) | 13 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shape.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shape.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shaper-impl-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shaper-impl-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shaper-list.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shaper-list.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shaper-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shaper-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shaper.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shaper.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-tt-font.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-tt-font.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ucdn.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ucdn.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-unicode-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-unicode-private.hh) | 10 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-unicode.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-unicode.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-unicode.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-unicode.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-uniscribe.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-uniscribe.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-uniscribe.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-uniscribe.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-utf-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-utf-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-version.h.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-version.h.in) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-warning.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-warning.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/main.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/main.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/test-buffer-serialize.cc | 126 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/test-size-params.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/test-size-params.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/test-would-substitute.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/test-would-substitute.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/test.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/test.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/version.ac | 2 |
133 files changed, 2321 insertions, 510 deletions
diff --git a/Build/source/libs/harfbuzz/Makefile.am b/Build/source/libs/harfbuzz/Makefile.am index 734aafc4f8a..8b3036da85b 100644 --- a/Build/source/libs/harfbuzz/Makefile.am +++ b/Build/source/libs/harfbuzz/Makefile.am @@ -37,7 +37,10 @@ libharfbuzz_dependencies = libharfbuzz_a_SOURCES = \ @HARFBUZZ_TREE@/src/hb-atomic-private.hh \ @HARFBUZZ_TREE@/src/hb-blob.cc \ + @HARFBUZZ_TREE@/src/hb-buffer-deserialize-json.hh \ + @HARFBUZZ_TREE@/src/hb-buffer-deserialize-text.hh \ @HARFBUZZ_TREE@/src/hb-buffer-private.hh \ + @HARFBUZZ_TREE@/src/hb-buffer-serialize.cc \ @HARFBUZZ_TREE@/src/hb-buffer.cc \ @HARFBUZZ_TREE@/src/hb-cache-private.hh \ @HARFBUZZ_TREE@/src/hb-common.cc \ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13-PATCHES/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-0.9.14-PATCHES/ChangeLog index cd9d27b1036..bb62aac75d1 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13-PATCHES/ChangeLog +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14-PATCHES/ChangeLog @@ -1,3 +1,8 @@ +2013-03-22 Khaled Hosny <khaledhosny@eglug.org> + + Imported harfbuzz-0.9.14 source tree from: + http://www.freedesktop.org/software/harfbuzz/release/ + 2013-02-27 Peter Breitenlohner <peb@mppmu.mpg.de> Imported harfbuzz-0.9.13 source tree from: diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13-PATCHES/TL-Changes b/Build/source/libs/harfbuzz/harfbuzz-0.9.14-PATCHES/TL-Changes index b2c13fdd688..1475a1e94c7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13-PATCHES/TL-Changes +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14-PATCHES/TL-Changes @@ -13,6 +13,7 @@ Removed: missing Makefile.in aclocal.m4 + ar-lib configure src/Makefile.in diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/AUTHORS b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/AUTHORS index c611d7d4769..c611d7d4769 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/AUTHORS +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/AUTHORS diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/Android.mk b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/Android.mk index 832d55e475a..3ada5f2e884 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/Android.mk +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/Android.mk @@ -28,6 +28,7 @@ LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES:= \ src/hb-blob.cc \ + src/hb-buffer-serialize.cc \ src/hb-buffer.cc \ src/hb-common.cc \ src/hb-fallback-shape.cc \ @@ -46,6 +47,9 @@ LOCAL_SRC_FILES:= \ src/hb-ot-shape-complex-arabic.cc \ src/hb-ot-shape-complex-default.cc \ src/hb-ot-shape-complex-indic.cc \ + src/hb-ot-shape-complex-indic-table.cc \ + src/hb-ot-shape-complex-myanmar.cc \ + src/hb-ot-shape-complex-sea.cc \ src/hb-ot-shape-complex-thai.cc \ src/hb-ot-shape-normalize.cc \ src/hb-ot-shape-fallback.cc \ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/ChangeLog index 014604b9691..014604b9691 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/ChangeLog +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/ChangeLog diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/Makefile.am index 0d9b17144ed..19c209579a4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/Makefile.am +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/Makefile.am @@ -16,21 +16,12 @@ EXTRA_DIST = \ $(NULL) MAINTAINERCLEANFILES = \ + $(GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL) \ + $(GITIGNORE_MAINTAINERCLEANFILES_M4_LIBTOOL) \ + $(GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN) \ $(srcdir)/INSTALL \ - $(srcdir)/aclocal.m4 \ - $(srcdir)/autoscan.log \ - $(srcdir)/compile \ - $(srcdir)/config.guess \ - $(srcdir)/config.h.in \ - $(srcdir)/config.sub \ - $(srcdir)/configure.scan \ - $(srcdir)/depcomp \ - $(srcdir)/install-sh \ - $(srcdir)/ltmain.sh \ - $(srcdir)/missing \ - $(srcdir)/mkinstalldirs \ $(srcdir)/ChangeLog \ - `find "$(srcdir)" -type f -name Makefile.in -print` + $(NULL) # diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/NEWS b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/NEWS index 7e8d5bdada8..858a916433c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/NEWS +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/NEWS @@ -1,3 +1,17 @@ +Overview of changes leading to 0.9.14 +Thursday, March 21, 2013 +===================================== + +- Build fixes. +- Fix time-consuming sanitize with malicious fonts. +- Implement hb_buffer_deserialize_glyphs() for both json and text. +- Do not ignore Hangul filler characters. +- Indic fixes: + * Fix Malayalam pre-base reordering interaction with post-forms. + * Further adjust ZWJ handling. Should fix known regressions from + 0.9.13. + + Overview of changes leading to 0.9.13 Thursday, February 25, 2013 ===================================== diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/README b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/README index 74e739da52a..74e739da52a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/README +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/README diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/THANKS b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/THANKS index 940cfde5c39..940cfde5c39 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/THANKS +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/THANKS diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/TODO b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/TODO index 31b44b84234..31b44b84234 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/TODO +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/TODO diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/autogen.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/autogen.sh index 833a6219c86..833a6219c86 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/autogen.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/autogen.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/config.h.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/config.h.in index bba8fa30ac2..bba8fa30ac2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/config.h.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/config.h.in diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/configure.ac index b4249cd5429..f05ca653228 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/configure.ac +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ([2.64]) AC_INIT([HarfBuzz], - [0.9.13], + [0.9.14], [http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz], [harfbuzz], [http://harfbuzz.org/]) @@ -13,6 +13,7 @@ AM_INIT_AUTOMAKE([1.11.1 gnits dist-bzip2 no-dist-gzip -Wall no-define color-tes AM_SILENT_RULES([yes]) # Initialize libtool +AM_PROG_AR LT_PREREQ([2.2]) LT_INIT([disable-static]) @@ -172,6 +173,25 @@ AM_CONDITIONAL(HAVE_CAIRO_FT, $have_cairo_ft) dnl ========================================================================== PKG_CHECK_MODULES(ICU, icu-uc, have_icu=true, have_icu=false) +dnl Fallback to icu-config if ICU pkg-config files could not be found +if test "$have_icu" != "true"; then + AC_PATH_PROG(icu_config, icu-config, no) + AC_MSG_CHECKING([for ICU by using icu-config fallback]) + if test "$icu_config" != "no" && "$icu_config" --version >/dev/null; then + have_icu=true + # We don't use --cflags as this gives us a lot of things that we don't + # necessarily want, like debugging and optimization flags + # See man (1) icu-config for more info. + ICU_CFLAGS=`$icu_config --cppflags` + ICU_LIBS=`$icu_config --ldflags-libsonly` + AC_SUBST(ICU_CFLAGS) + AC_SUBST(ICU_LIBS) + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi +fi + if $have_icu; then CXXFLAGS="$CXXFLAGS `$PKG_CONFIG --variable=CXXFLAGS icu-uc`" AC_DEFINE(HAVE_ICU, 1, [Have ICU library]) @@ -181,6 +201,24 @@ AM_CONDITIONAL(HAVE_ICU, $have_icu) dnl ========================================================================== PKG_CHECK_MODULES(ICU_LE, icu-le icu-uc, have_icu_le=true, have_icu_le=false) +dnl Fallback to icu-config if ICU pkg-config files could not be found +if test "$have_icu_le" != "true"; then + AC_PATH_PROG(icu_config, icu-config, no) + AC_MSG_CHECKING([for ICU_LE by using icu-config fallback]) + if test "$icu_config" != "no" && "$icu_config" --version >/dev/null; then + have_icu_le=true + # We don't use --cflags as this gives us a lot of things that we don't + # necessarily want, like debugging and optimization flags + # See man (1) icu-config for more info. + ICU_LE_CFLAGS=`$icu_config --cppflags` + ICU_LE_LIBS=`$icu_config --ldflags-libsonly --ldflags-layout` + AC_SUBST(ICU_LE_CFLAGS) + AC_SUBST(ICU_LE_LIBS) + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi +fi if $have_icu_le; then AC_DEFINE(HAVE_ICU_LE, 1, [Have ICU Layout Engine library]) fi diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/harfbuzz.doap b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/harfbuzz.doap index d2896ebefa8..d2896ebefa8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/harfbuzz.doap +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/harfbuzz.doap diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/harfbuzz.pc.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/harfbuzz.pc.in index e92319e156c..e92319e156c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/harfbuzz.pc.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/harfbuzz.pc.in diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/Makefile.am index 3b0444e046c..342a3fb388c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/Makefile.am +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/Makefile.am @@ -20,7 +20,10 @@ HBLIBS = HBSOURCES = \ hb-atomic-private.hh \ hb-blob.cc \ + hb-buffer-deserialize-json.hh \ + hb-buffer-deserialize-text.hh \ hb-buffer-private.hh \ + hb-buffer-serialize.cc \ hb-buffer.cc \ hb-cache-private.hh \ hb-common.cc \ @@ -257,11 +260,15 @@ arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt .PHONY: unicode-tables arabic-table indic-table BUILT_SOURCES += \ + hb-buffer-deserialize-json.hh \ + hb-buffer-deserialize-text.hh \ hb-ot-shape-complex-indic-machine.hh \ hb-ot-shape-complex-myanmar-machine.hh \ hb-ot-shape-complex-sea-machine.hh \ $(NULL) EXTRA_DIST += \ + hb-buffer-deserialize-json.rl \ + hb-buffer-deserialize-text.rl \ hb-ot-shape-complex-indic-machine.rl \ hb-ot-shape-complex-myanmar-machine.rl \ hb-ot-shape-complex-sea-machine.rl \ @@ -270,7 +277,13 @@ EXTRA_DIST += \ $(AM_V_GEN)$(top_srcdir)/missing --run ragel -e -F1 -o "$@.tmp" "$<" && \ mv "$@.tmp" "$@" || ( $(RM) "$@.tmp" && false ) -noinst_PROGRAMS = main test test-would-substitute test-size-params +noinst_PROGRAMS = \ + main \ + test \ + test-buffer-serialize \ + test-size-params \ + test-would-substitute \ + $(NULL) bin_PROGRAMS = main_SOURCES = main.cc @@ -289,6 +302,10 @@ test_size_params_SOURCES = test-size-params.cc test_size_params_CPPFLAGS = $(HBCFLAGS) test_size_params_LDADD = libharfbuzz.la $(HBLIBS) +test_buffer_serialize_SOURCES = test-buffer-serialize.cc +test_buffer_serialize_CPPFLAGS = $(HBCFLAGS) +test_buffer_serialize_LDADD = libharfbuzz.la $(HBLIBS) + dist_check_SCRIPTS = \ check-c-linkage-decls.sh \ check-header-guards.sh \ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-c-linkage-decls.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-c-linkage-decls.sh index 44cdfa0f23c..44cdfa0f23c 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-c-linkage-decls.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-c-linkage-decls.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-header-guards.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-header-guards.sh index af9fa7fc24e..af9fa7fc24e 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-header-guards.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-header-guards.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-includes.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-includes.sh index 79323a74fb2..79323a74fb2 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-includes.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-includes.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-libstdc++.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-libstdc++.sh index e7e0e295e1a..e7e0e295e1a 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-libstdc++.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-libstdc++.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-static-inits.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-static-inits.sh index bb0a7ff630d..bb0a7ff630d 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-static-inits.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-static-inits.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-symbols.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-symbols.sh index 4c03c137406..4c03c137406 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/check-symbols.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/check-symbols.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/gen-arabic-table.py b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/gen-arabic-table.py index da5a4fcbf5c..da5a4fcbf5c 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/gen-arabic-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/gen-arabic-table.py diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/gen-indic-table.py b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/gen-indic-table.py index 9ed3fd6d34d..9ed3fd6d34d 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/gen-indic-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/gen-indic-table.py diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-atomic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-atomic-private.hh index bb10fe1d577..7047e216cff 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-atomic-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-atomic-private.hh @@ -47,22 +47,10 @@ #define WIN32_LEAN_AND_MEAN #include <windows.h> -/* mingw32 does not have MemoryBarrier. - * MemoryBarrier may be defined as a macro or a function. - * Just make a failsafe version for ourselves. */ -#ifdef MemoryBarrier -#define HBMemoryBarrier MemoryBarrier -#else -static inline void HBMemoryBarrier (void) { - long dummy = 0; - InterlockedExchange (&dummy, 1); -} -#endif - typedef LONG hb_atomic_int_t; #define hb_atomic_int_add(AI, V) InterlockedExchangeAdd (&(AI), (V)) -#define hb_atomic_ptr_get(P) (HBMemoryBarrier (), (void *) *(P)) +#define hb_atomic_ptr_get(P) (MemoryBarrier (), (void *) *(P)) #define hb_atomic_ptr_cmpexch(P,O,N) (InterlockedCompareExchangePointer ((void **) (P), (void *) (N), (void *) (O)) == (void *) (O)) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-blob.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-blob.cc index dfd134b7762..dfd134b7762 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-blob.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-blob.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-blob.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-blob.h index d3d0f41b11c..d3d0f41b11c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-blob.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-blob.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-json.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-json.hh new file mode 100644 index 00000000000..dead700db82 --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-json.hh @@ -0,0 +1,643 @@ + +#line 1 "../../src/hb-buffer-deserialize-json.rl" +/* + * Copyright © 2013 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#ifndef HB_BUFFER_DESERIALIZE_JSON_HH +#define HB_BUFFER_DESERIALIZE_JSON_HH + +#include "hb-private.hh" + + +#line 36 "hb-buffer-deserialize-json.hh.tmp" +static const unsigned char _deserialize_json_trans_keys[] = { + 0u, 0u, 9u, 123u, 9u, 34u, 97u, 103u, 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, + 48u, 57u, 9u, 125u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, + 9u, 125u, 9u, 125u, 108u, 108u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 9u, 125u, + 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, + 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, + 65u, 122u, 34u, 122u, 9u, 125u, 9u, 125u, 9u, 93u, 9u, 123u, 0u, 0u, 0 +}; + +static const char _deserialize_json_key_spans[] = { + 0, 115, 26, 7, 2, 1, 50, 49, + 10, 117, 117, 117, 1, 50, 49, 10, + 117, 117, 1, 1, 50, 49, 117, 117, + 2, 1, 50, 49, 10, 117, 117, 1, + 50, 49, 10, 117, 117, 1, 50, 49, + 58, 89, 117, 117, 85, 115, 0 +}; + +static const short _deserialize_json_index_offsets[] = { + 0, 0, 116, 143, 151, 154, 156, 207, + 257, 268, 386, 504, 622, 624, 675, 725, + 736, 854, 972, 974, 976, 1027, 1077, 1195, + 1313, 1316, 1318, 1369, 1419, 1430, 1548, 1666, + 1668, 1719, 1769, 1780, 1898, 2016, 2018, 2069, + 2119, 2178, 2268, 2386, 2504, 2590, 2706 +}; + +static const char _deserialize_json_indicies[] = { + 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 1, 3, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 1, 4, 1, + 5, 1, 6, 7, 1, 1, 8, 1, + 9, 10, 1, 11, 1, 11, 11, 11, + 11, 11, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 11, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 12, 1, + 12, 12, 12, 12, 12, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 12, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 13, 1, 1, 14, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 1, 16, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 1, 18, 18, 18, + 18, 18, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 18, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 19, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 20, 1, 21, 21, 21, 21, 21, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 21, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 22, + 1, 18, 18, 18, 18, 18, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 18, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 19, 1, 1, 1, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 20, 1, 23, + 1, 23, 23, 23, 23, 23, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 23, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 24, 1, 24, 24, 24, 24, + 24, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 24, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 25, 1, 1, 26, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 1, 28, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 1, 30, 30, 30, 30, 30, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 30, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 31, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 32, 1, 30, + 30, 30, 30, 30, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 30, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 31, 1, 1, 1, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 32, 1, 33, 1, 34, + 1, 34, 34, 34, 34, 34, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 34, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 35, 1, 35, 35, 35, 35, + 35, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 35, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 36, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 1, 38, 38, + 38, 38, 38, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 38, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 39, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 40, 1, 38, 38, 38, 38, + 38, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 38, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 39, + 1, 1, 1, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 40, 1, 42, 43, 1, 44, 1, 44, + 44, 44, 44, 44, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 44, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 45, 1, 45, 45, 45, 45, 45, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 45, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 46, 1, + 1, 47, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 1, 49, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 1, 51, + 51, 51, 51, 51, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 51, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 52, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 53, 1, 51, 51, 51, + 51, 51, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 51, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 52, 1, 1, 1, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 53, 1, 54, 1, 54, 54, 54, + 54, 54, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 54, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 55, 1, + 55, 55, 55, 55, 55, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 55, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 56, 1, 1, 57, + 58, 58, 58, 58, 58, 58, 58, 58, + 58, 1, 59, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 1, 61, 61, 61, + 61, 61, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 61, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 62, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 63, 1, 61, 61, 61, 61, 61, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 61, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 62, 1, + 1, 1, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 63, + 1, 64, 1, 64, 64, 64, 64, 64, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 64, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 65, 1, 65, 65, + 65, 65, 65, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 65, 1, 66, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 67, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 1, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 1, 1, 1, 1, 1, 1, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 1, 70, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 71, 71, + 1, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 1, 1, 1, 1, 1, + 1, 1, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 1, 1, 1, 1, + 71, 1, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 1, 72, 72, 72, + 72, 72, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 72, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 73, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 74, 1, 72, 72, 72, 72, 72, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 72, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 73, 1, + 1, 1, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 74, + 1, 76, 76, 76, 76, 76, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 76, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 77, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 78, 1, 0, + 0, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 0 +}; + +static const char _deserialize_json_trans_targs[] = { + 1, 0, 2, 2, 3, 4, 18, 24, + 37, 5, 12, 6, 7, 8, 9, 11, + 9, 11, 10, 2, 44, 10, 44, 13, + 14, 15, 16, 17, 16, 17, 10, 2, + 44, 19, 20, 21, 22, 23, 10, 2, + 44, 23, 25, 31, 26, 27, 28, 29, + 30, 29, 30, 10, 2, 44, 32, 33, + 34, 35, 36, 35, 36, 10, 2, 44, + 38, 39, 40, 42, 43, 41, 10, 41, + 10, 2, 44, 43, 44, 45, 46 +}; + +static const char _deserialize_json_trans_actions[] = { + 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 2, + 0, 0, 3, 3, 4, 0, 5, 0, + 0, 2, 2, 2, 0, 0, 6, 6, + 7, 0, 0, 0, 2, 2, 8, 8, + 9, 0, 0, 0, 0, 0, 2, 2, + 2, 0, 0, 10, 10, 11, 0, 0, + 2, 2, 2, 0, 0, 12, 12, 13, + 0, 0, 0, 2, 2, 2, 14, 0, + 15, 15, 16, 0, 0, 0, 0 +}; + +static const int deserialize_json_start = 1; +static const int deserialize_json_first_final = 44; +static const int deserialize_json_error = 0; + +static const int deserialize_json_en_main = 1; + + +#line 97 "../../src/hb-buffer-deserialize-json.rl" + + +static hb_bool_t +_hb_buffer_deserialize_glyphs_json (hb_buffer_t *buffer, + const char *buf, + unsigned int buf_len, + const char **end_ptr, + hb_font_t *font) +{ + const char *p = buf, *pe = buf + buf_len; + + /* Ensure we have positions. */ + (void) hb_buffer_get_glyph_positions (buffer, NULL); + + while (p < pe && ISSPACE (*p)) + p++; + if (p < pe && *p == (buffer->len ? ',' : '[')) + { + *end_ptr = ++p; + } + + const char *tok = NULL; + int cs; + hb_glyph_info_t info; + hb_glyph_position_t pos; + +#line 466 "hb-buffer-deserialize-json.hh.tmp" + { + cs = deserialize_json_start; + } + +#line 471 "hb-buffer-deserialize-json.hh.tmp" + { + int _slen; + int _trans; + const unsigned char *_keys; + const char *_inds; + if ( p == pe ) + goto _test_eof; + if ( cs == 0 ) + goto _out; +_resume: + _keys = _deserialize_json_trans_keys + (cs<<1); + _inds = _deserialize_json_indicies + _deserialize_json_index_offsets[cs]; + + _slen = _deserialize_json_key_spans[cs]; + _trans = _inds[ _slen > 0 && _keys[0] <=(*p) && + (*p) <= _keys[1] ? + (*p) - _keys[0] : _slen ]; + + cs = _deserialize_json_trans_targs[_trans]; + + if ( _deserialize_json_trans_actions[_trans] == 0 ) + goto _again; + + switch ( _deserialize_json_trans_actions[_trans] ) { + case 1: +#line 38 "../../src/hb-buffer-deserialize-json.rl" + { + memset (&info, 0, sizeof (info)); + memset (&pos , 0, sizeof (pos )); +} + break; + case 5: +#line 43 "../../src/hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 2: +#line 51 "../../src/hb-buffer-deserialize-json.rl" + { + tok = p; +} + break; + case 14: +#line 55 "../../src/hb-buffer-deserialize-json.rl" + { + if (!hb_font_glyph_from_string (font, + tok, p - tok, + &info.codepoint)) + return false; +} + break; + case 15: +#line 62 "../../src/hb-buffer-deserialize-json.rl" + { if (!parse_uint (tok, p, &info.codepoint)) return false; } + break; + case 8: +#line 63 "../../src/hb-buffer-deserialize-json.rl" + { if (!parse_uint (tok, p, &info.cluster )) return false; } + break; + case 10: +#line 64 "../../src/hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.x_offset )) return false; } + break; + case 12: +#line 65 "../../src/hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.y_offset )) return false; } + break; + case 3: +#line 66 "../../src/hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.x_advance)) return false; } + break; + case 6: +#line 67 "../../src/hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.y_advance)) return false; } + break; + case 16: +#line 62 "../../src/hb-buffer-deserialize-json.rl" + { if (!parse_uint (tok, p, &info.codepoint)) return false; } +#line 43 "../../src/hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 9: +#line 63 "../../src/hb-buffer-deserialize-json.rl" + { if (!parse_uint (tok, p, &info.cluster )) return false; } +#line 43 "../../src/hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 11: +#line 64 "../../src/hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.x_offset )) return false; } +#line 43 "../../src/hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 13: +#line 65 "../../src/hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.y_offset )) return false; } +#line 43 "../../src/hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 4: +#line 66 "../../src/hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.x_advance)) return false; } +#line 43 "../../src/hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 7: +#line 67 "../../src/hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.y_advance)) return false; } +#line 43 "../../src/hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; +#line 624 "hb-buffer-deserialize-json.hh.tmp" + } + +_again: + if ( cs == 0 ) + goto _out; + if ( ++p != pe ) + goto _resume; + _test_eof: {} + _out: {} + } + +#line 125 "../../src/hb-buffer-deserialize-json.rl" + + + *end_ptr = p; + + return p == pe && *(p-1) != ']'; +} + +#endif /* HB_BUFFER_DESERIALIZE_JSON_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-json.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-json.rl new file mode 100644 index 00000000000..7351b2ab47c --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-json.rl @@ -0,0 +1,132 @@ +/* + * Copyright © 2013 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#ifndef HB_BUFFER_DESERIALIZE_JSON_HH +#define HB_BUFFER_DESERIALIZE_JSON_HH + +#include "hb-private.hh" + +%%{ + +machine deserialize_json; +alphtype unsigned char; +write data; + +action clear_item { + memset (&info, 0, sizeof (info)); + memset (&pos , 0, sizeof (pos )); +} + +action add_item { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + +action tok { + tok = p; +} + +action parse_glyph { + if (!hb_font_glyph_from_string (font, + tok, p - tok, + &info.codepoint)) + return false; +} + +action parse_gid { if (!parse_uint (tok, p, &info.codepoint)) return false; } +action parse_cluster { if (!parse_uint (tok, p, &info.cluster )) return false; } +action parse_x_offset { if (!parse_int (tok, p, &pos.x_offset )) return false; } +action parse_y_offset { if (!parse_int (tok, p, &pos.y_offset )) return false; } +action parse_x_advance { if (!parse_int (tok, p, &pos.x_advance)) return false; } +action parse_y_advance { if (!parse_int (tok, p, &pos.y_advance)) return false; } + +unum = '0' | [1-9] digit*; +num = '-'? unum; + +comma = space* ',' space*; +colon = space* ':' space*; + +glyph_id = unum; +glyph_name = alpha (alnum|'_'|'.'|'-')*; + +glyph_string = '"' (glyph_name >tok %parse_glyph) '"'; +glyph_number = (glyph_id >tok %parse_gid); + +glyph = "\"g\"" colon (glyph_string | glyph_number); +cluster = "\"cl\"" colon (unum >tok %parse_cluster); +xoffset = "\"dx\"" colon (num >tok %parse_x_offset); +yoffset = "\"dy\"" colon (num >tok %parse_y_offset); +xadvance= "\"ax\"" colon (num >tok %parse_x_advance); +yadvance= "\"ay\"" colon (num >tok %parse_y_advance); + +element = glyph | cluster | xoffset | yoffset | xadvance | yadvance; +item = + ( '{' space* element (comma element)* space* '}') + >clear_item + @add_item + ; + +main := space* item (comma item)* space* (','|']')?; + +}%% + +static hb_bool_t +_hb_buffer_deserialize_glyphs_json (hb_buffer_t *buffer, + const char *buf, + unsigned int buf_len, + const char **end_ptr, + hb_font_t *font) +{ + const char *p = buf, *pe = buf + buf_len; + + /* Ensure we have positions. */ + (void) hb_buffer_get_glyph_positions (buffer, NULL); + + while (p < pe && ISSPACE (*p)) + p++; + if (p < pe && *p == (buffer->len ? ',' : '[')) + { + *end_ptr = ++p; + } + + const char *tok = NULL; + int cs; + hb_glyph_info_t info; + hb_glyph_position_t pos; + %%{ + write init; + write exec; + }%% + + *end_ptr = p; + + return p == pe && *(p-1) != ']'; +} + +#endif /* HB_BUFFER_DESERIALIZE_JSON_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-text.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-text.hh new file mode 100644 index 00000000000..a38efe3a415 --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-text.hh @@ -0,0 +1,571 @@ + +#line 1 "../../src/hb-buffer-deserialize-text.rl" +/* + * Copyright © 2013 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#ifndef HB_BUFFER_DESERIALIZE_TEXT_HH +#define HB_BUFFER_DESERIALIZE_TEXT_HH + +#include "hb-private.hh" + + +#line 36 "hb-buffer-deserialize-text.hh.tmp" +static const unsigned char _deserialize_text_trans_keys[] = { + 0u, 0u, 9u, 122u, 45u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 48u, 57u, 45u, 57u, + 48u, 57u, 44u, 44u, 45u, 57u, 48u, 57u, 44u, 57u, 9u, 124u, 9u, 124u, 0u, 0u, + 9u, 122u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, + 9u, 124u, 9u, 124u, 9u, 124u, 0 +}; + +static const char _deserialize_text_key_spans[] = { + 0, 114, 13, 10, 13, 10, 10, 13, + 10, 1, 13, 10, 14, 116, 116, 0, + 114, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116 +}; + +static const short _deserialize_text_index_offsets[] = { + 0, 0, 115, 129, 140, 154, 165, 176, + 190, 201, 203, 217, 228, 243, 360, 477, + 478, 593, 710, 827, 944, 1061, 1178, 1295, + 1412, 1529, 1646 +}; + +static const char _deserialize_text_indicies[] = { + 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 1, 1, 1, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 1, 5, 1, 1, 6, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 1, 8, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 1, 10, 1, 1, + 11, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 1, 13, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 1, 15, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 1, 17, 1, 1, 18, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 1, 20, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 1, 22, 1, 23, 1, 1, 24, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 1, 26, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 1, 22, 1, 1, + 1, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 1, 28, 28, 28, 28, + 28, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 28, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 29, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 30, 1, 1, 31, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 32, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 33, + 1, 34, 34, 34, 34, 34, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 34, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 35, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 36, 1, 1, 0, + 0, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 1, 1, 1, 1, 1, 1, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 1, 28, 28, 28, 28, 28, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 28, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 29, 1, 1, 1, + 1, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 1, 1, 1, 30, 1, + 1, 31, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 32, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 33, 1, 38, + 38, 38, 38, 38, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 38, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 39, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 40, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 41, 1, 42, 42, 42, 42, + 42, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 42, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 43, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 44, + 1, 42, 42, 42, 42, 42, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 42, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 43, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 44, 1, 38, 38, + 38, 38, 38, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 38, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 39, 1, 1, 1, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 40, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 41, 1, 45, 45, 45, 45, 45, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 45, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 46, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 47, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 48, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 49, 1, + 50, 50, 50, 50, 50, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 50, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 51, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 52, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 53, 1, 50, 50, 50, + 50, 50, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 50, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 51, + 1, 1, 1, 1, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 52, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 53, 1, 45, 45, 45, 45, 45, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 45, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 46, 1, 1, 1, + 1, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 1, 1, 1, 1, 1, + 1, 47, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 48, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 49, 1, 28, + 28, 28, 28, 28, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 28, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 29, 1, 55, 55, 1, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 1, 1, 1, 30, 1, 1, 31, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 1, 1, 32, 1, 55, 1, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 1, 33, 1, 0 +}; + +static const char _deserialize_text_trans_targs[] = { + 1, 0, 13, 17, 26, 3, 18, 21, + 18, 21, 5, 19, 20, 19, 20, 22, + 25, 8, 9, 12, 9, 12, 10, 11, + 23, 24, 23, 24, 14, 2, 6, 7, + 15, 16, 14, 15, 16, 17, 14, 4, + 15, 16, 14, 15, 16, 14, 2, 7, + 15, 16, 14, 2, 15, 16, 25, 26 +}; + +static const char _deserialize_text_trans_actions[] = { + 0, 0, 1, 1, 1, 2, 2, 2, + 0, 0, 2, 2, 2, 0, 0, 2, + 2, 2, 2, 2, 0, 0, 3, 2, + 2, 2, 0, 0, 4, 5, 5, 5, + 4, 4, 0, 0, 0, 0, 6, 7, + 6, 6, 8, 8, 8, 9, 10, 10, + 9, 9, 11, 12, 11, 11, 0, 0 +}; + +static const char _deserialize_text_eof_actions[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 0, 0, + 0, 4, 6, 8, 8, 6, 9, 11, + 11, 9, 4 +}; + +static const int deserialize_text_start = 1; +static const int deserialize_text_first_final = 13; +static const int deserialize_text_error = 0; + +static const int deserialize_text_en_main = 1; + + +#line 91 "../../src/hb-buffer-deserialize-text.rl" + + +static hb_bool_t +_hb_buffer_deserialize_glyphs_text (hb_buffer_t *buffer, + const char *buf, + unsigned int buf_len, + const char **end_ptr, + hb_font_t *font) +{ + const char *p = buf, *pe = buf + buf_len; + + /* Ensure we have positions. */ + (void) hb_buffer_get_glyph_positions (buffer, NULL); + + while (p < pe && ISSPACE (*p)) + p++; + if (p < pe && *p == (buffer->len ? '|' : '[')) + { + *end_ptr = ++p; + } + + const char *eof = pe, *tok = NULL; + int cs; + hb_glyph_info_t info; + hb_glyph_position_t pos; + +#line 343 "hb-buffer-deserialize-text.hh.tmp" + { + cs = deserialize_text_start; + } + +#line 348 "hb-buffer-deserialize-text.hh.tmp" + { + int _slen; + int _trans; + const unsigned char *_keys; + const char *_inds; + if ( p == pe ) + goto _test_eof; + if ( cs == 0 ) + goto _out; +_resume: + _keys = _deserialize_text_trans_keys + (cs<<1); + _inds = _deserialize_text_indicies + _deserialize_text_index_offsets[cs]; + + _slen = _deserialize_text_key_spans[cs]; + _trans = _inds[ _slen > 0 && _keys[0] <=(*p) && + (*p) <= _keys[1] ? + (*p) - _keys[0] : _slen ]; + + cs = _deserialize_text_trans_targs[_trans]; + + if ( _deserialize_text_trans_actions[_trans] == 0 ) + goto _again; + + switch ( _deserialize_text_trans_actions[_trans] ) { + case 2: +#line 51 "../../src/hb-buffer-deserialize-text.rl" + { + tok = p; +} + break; + case 5: +#line 55 "../../src/hb-buffer-deserialize-text.rl" + { + if (!hb_font_glyph_from_string (font, + tok, p - tok, + &info.codepoint)) + return false; +} + break; + case 10: +#line 62 "../../src/hb-buffer-deserialize-text.rl" + { if (!parse_uint (tok, p, &info.cluster )) return false; } + break; + case 3: +#line 63 "../../src/hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.x_offset )) return false; } + break; + case 12: +#line 64 "../../src/hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.y_offset )) return false; } + break; + case 7: +#line 65 "../../src/hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.x_advance)) return false; } + break; + case 1: +#line 38 "../../src/hb-buffer-deserialize-text.rl" + { + memset (&info, 0, sizeof (info)); + memset (&pos , 0, sizeof (pos )); +} +#line 51 "../../src/hb-buffer-deserialize-text.rl" + { + tok = p; +} + break; + case 4: +#line 55 "../../src/hb-buffer-deserialize-text.rl" + { + if (!hb_font_glyph_from_string (font, + tok, p - tok, + &info.codepoint)) + return false; +} +#line 43 "../../src/hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 9: +#line 62 "../../src/hb-buffer-deserialize-text.rl" + { if (!parse_uint (tok, p, &info.cluster )) return false; } +#line 43 "../../src/hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 11: +#line 64 "../../src/hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.y_offset )) return false; } +#line 43 "../../src/hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 6: +#line 65 "../../src/hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.x_advance)) return false; } +#line 43 "../../src/hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 8: +#line 66 "../../src/hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.y_advance)) return false; } +#line 43 "../../src/hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; +#line 480 "hb-buffer-deserialize-text.hh.tmp" + } + +_again: + if ( cs == 0 ) + goto _out; + if ( ++p != pe ) + goto _resume; + _test_eof: {} + if ( p == eof ) + { + switch ( _deserialize_text_eof_actions[cs] ) { + case 4: +#line 55 "../../src/hb-buffer-deserialize-text.rl" + { + if (!hb_font_glyph_from_string (font, + tok, p - tok, + &info.codepoint)) + return false; +} +#line 43 "../../src/hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 9: +#line 62 "../../src/hb-buffer-deserialize-text.rl" + { if (!parse_uint (tok, p, &info.cluster )) return false; } +#line 43 "../../src/hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 11: +#line 64 "../../src/hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.y_offset )) return false; } +#line 43 "../../src/hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 6: +#line 65 "../../src/hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.x_advance)) return false; } +#line 43 "../../src/hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 8: +#line 66 "../../src/hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.y_advance)) return false; } +#line 43 "../../src/hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; +#line 557 "hb-buffer-deserialize-text.hh.tmp" + } + } + + _out: {} + } + +#line 119 "../../src/hb-buffer-deserialize-text.rl" + + + *end_ptr = p; + + return p == pe && *(p-1) != ']'; +} + +#endif /* HB_BUFFER_DESERIALIZE_TEXT_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-text.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-text.rl new file mode 100644 index 00000000000..8856580fbe3 --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-deserialize-text.rl @@ -0,0 +1,126 @@ +/* + * Copyright © 2013 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#ifndef HB_BUFFER_DESERIALIZE_TEXT_HH +#define HB_BUFFER_DESERIALIZE_TEXT_HH + +#include "hb-private.hh" + +%%{ + +machine deserialize_text; +alphtype unsigned char; +write data; + +action clear_item { + memset (&info, 0, sizeof (info)); + memset (&pos , 0, sizeof (pos )); +} + +action add_item { + buffer->add_info (info); + if (buffer->in_error) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + +action tok { + tok = p; +} + +action parse_glyph { + if (!hb_font_glyph_from_string (font, + tok, p - tok, + &info.codepoint)) + return false; +} + +action parse_cluster { if (!parse_uint (tok, p, &info.cluster )) return false; } +action parse_x_offset { if (!parse_int (tok, p, &pos.x_offset )) return false; } +action parse_y_offset { if (!parse_int (tok, p, &pos.y_offset )) return false; } +action parse_x_advance { if (!parse_int (tok, p, &pos.x_advance)) return false; } +action parse_y_advance { if (!parse_int (tok, p, &pos.y_advance)) return false; } + +unum = '0' | [1-9] digit*; +num = '-'? unum; + +glyph_id = unum; +glyph_name = alpha (alnum|'_'|'.'|'-')*; + +glyph = (glyph_id | glyph_name) >tok %parse_glyph; +cluster = '=' (unum >tok %parse_cluster); +offsets = '@' (num >tok %parse_x_offset) ',' (num >tok %parse_y_offset ); +advances= '+' (num >tok %parse_x_advance) (',' (num >tok %parse_y_advance))?; +item = + ( + glyph + cluster? + offsets? + advances? + ) + >clear_item + %add_item + ; + +main := space* item (space* '|' space* item)* space* ('|'|']')?; + +}%% + +static hb_bool_t +_hb_buffer_deserialize_glyphs_text (hb_buffer_t *buffer, + const char *buf, + unsigned int buf_len, + const char **end_ptr, + hb_font_t *font) +{ + const char *p = buf, *pe = buf + buf_len; + + /* Ensure we have positions. */ + (void) hb_buffer_get_glyph_positions (buffer, NULL); + + while (p < pe && ISSPACE (*p)) + p++; + if (p < pe && *p == (buffer->len ? '|' : '[')) + { + *end_ptr = ++p; + } + + const char *eof = pe, *tok = NULL; + int cs; + hb_glyph_info_t info; + hb_glyph_position_t pos; + %%{ + write init; + write exec; + }%% + + *end_ptr = p; + + return p == pe && *(p-1) != ']'; +} + +#endif /* HB_BUFFER_DESERIALIZE_TEXT_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-buffer-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-private.hh index 13cf4bb0e9b..387ebd9a84c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-buffer-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-private.hh @@ -110,6 +110,7 @@ struct hb_buffer_t { HB_INTERNAL void add (hb_codepoint_t codepoint, unsigned int cluster); + HB_INTERNAL void add_info (const hb_glyph_info_t &glyph_info); HB_INTERNAL void reverse_range (unsigned int start, unsigned int end); HB_INTERNAL void reverse (void); @@ -128,7 +129,7 @@ struct hb_buffer_t { HB_INTERNAL void replace_glyph (hb_codepoint_t glyph_index); /* Makes a copy of the glyph at idx to output and replace glyph_index */ HB_INTERNAL void output_glyph (hb_codepoint_t glyph_index); - HB_INTERNAL void output_info (hb_glyph_info_t &glyph_info); + HB_INTERNAL void output_info (const hb_glyph_info_t &glyph_info); /* Copies glyph at idx to output but doesn't advance idx */ HB_INTERNAL void copy_glyph (void); /* Copies glyph at idx to output and advance idx. diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-serialize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-serialize.cc new file mode 100644 index 00000000000..dc47ba73e08 --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer-serialize.cc @@ -0,0 +1,336 @@ +/* + * Copyright © 2012,2013 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#include "hb-buffer-private.hh" + + +static const char *serialize_formats[] = { + "text", + "json", + NULL +}; + +const char ** +hb_buffer_serialize_list_formats (void) +{ + return serialize_formats; +} + +hb_buffer_serialize_format_t +hb_buffer_serialize_format_from_string (const char *str, int len) +{ + /* Upper-case it. */ + return (hb_buffer_serialize_format_t) (hb_tag_from_string (str, len) & ~0x20202020); +} + +const char * +hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format) +{ + switch (format) + { + case HB_BUFFER_SERIALIZE_FORMAT_TEXT: return serialize_formats[0]; + case HB_BUFFER_SERIALIZE_FORMAT_JSON: return serialize_formats[1]; + default: + case HB_BUFFER_SERIALIZE_FORMAT_INVALID: return NULL; + } +} + +static unsigned int +_hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer, + unsigned int start, + unsigned int end, + char *buf, + unsigned int buf_size, + unsigned int *buf_consumed, + hb_font_t *font, + hb_buffer_serialize_flags_t flags) +{ + hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, NULL); + hb_glyph_position_t *pos = hb_buffer_get_glyph_positions (buffer, NULL); + + *buf_consumed = 0; + for (unsigned int i = start; i < end; i++) + { + char b[1024]; + char *p = b; + + /* In the following code, we know b is large enough that no overflow can happen. */ + +#define APPEND(s) HB_STMT_START { strcpy (p, s); p += strlen (s); } HB_STMT_END + + if (i) + *p++ = ','; + + *p++ = '{'; + + APPEND ("\"g\":"); + if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES)) + { + char g[128]; + hb_font_glyph_to_string (font, info[i].codepoint, g, sizeof (g)); + *p++ = '"'; + for (char *q = g; *q; q++) { + if (*q == '"') + *p++ = '\\'; + *p++ = *q; + } + *p++ = '"'; + } + else + p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "%u", info[i].codepoint); + + if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS)) { + p += snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"cl\":%u", info[i].cluster); + } + + if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS)) + { + p += snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"dx\":%d,\"dy\":%d", + pos[i].x_offset, pos[i].y_offset); + p += snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"ax\":%d,\"ay\":%d", + pos[i].x_advance, pos[i].y_advance); + } + + *p++ = '}'; + + if (buf_size > (p - b)) + { + unsigned int l = p - b; + memcpy (buf, b, l); + buf += l; + buf_size -= l; + *buf_consumed += l; + *buf = '\0'; + } else + return i - start; + } + + return end - start; +} + +static unsigned int +_hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer, + unsigned int start, + unsigned int end, + char *buf, + unsigned int buf_size, + unsigned int *buf_consumed, + hb_font_t *font, + hb_buffer_serialize_flags_t flags) +{ + hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, NULL); + hb_glyph_position_t *pos = hb_buffer_get_glyph_positions (buffer, NULL); + + *buf_consumed = 0; + for (unsigned int i = start; i < end; i++) + { + char b[1024]; + char *p = b; + + /* In the following code, we know b is large enough that no overflow can happen. */ + + if (i) + *p++ = '|'; + + if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES)) + { + hb_font_glyph_to_string (font, info[i].codepoint, p, 128); + p += strlen (p); + } + else + p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "%u", info[i].codepoint); + + if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS)) { + p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "=%u", info[i].cluster); + } + + if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS)) + { + if (pos[i].x_offset || pos[i].y_offset) + p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "@%d,%d", pos[i].x_offset, pos[i].y_offset); + + *p++ = '+'; + p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "%d", pos[i].x_advance); + if (pos->y_advance) + p += snprintf (p, ARRAY_LENGTH (b) - (p - b), ",%d", pos[i].y_advance); + } + + if (buf_size > (p - b)) + { + unsigned int l = p - b; + memcpy (buf, b, l); + buf += l; + buf_size -= l; + *buf_consumed += l; + *buf = '\0'; + } else + return i - start; + } + + return end - start; +} + +/* Returns number of items, starting at start, that were serialized. */ +unsigned int +hb_buffer_serialize_glyphs (hb_buffer_t *buffer, + unsigned int start, + unsigned int end, + char *buf, + unsigned int buf_size, + unsigned int *buf_consumed, /* May be NULL */ + hb_font_t *font, /* May be NULL */ + hb_buffer_serialize_format_t format, + hb_buffer_serialize_flags_t flags) +{ + assert (start <= end && end <= buffer->len); + + unsigned int sconsumed; + if (!buf_consumed) + buf_consumed = &sconsumed; + *buf_consumed = 0; + + assert ((!buffer->len && buffer->content_type == HB_BUFFER_CONTENT_TYPE_INVALID) || + buffer->content_type == HB_BUFFER_CONTENT_TYPE_GLYPHS); + + if (unlikely (start == end)) + return 0; + + if (!font) + font = hb_font_get_empty (); + + switch (format) + { + case HB_BUFFER_SERIALIZE_FORMAT_TEXT: + return _hb_buffer_serialize_glyphs_text (buffer, start, end, + buf, buf_size, buf_consumed, + font, flags); + + case HB_BUFFER_SERIALIZE_FORMAT_JSON: + return _hb_buffer_serialize_glyphs_json (buffer, start, end, + buf, buf_size, buf_consumed, + font, flags); + + default: + case HB_BUFFER_SERIALIZE_FORMAT_INVALID: + return 0; + + } +} + + +static hb_bool_t +parse_uint (const char *pp, const char *end, uint32_t *pv) +{ + char buf[32]; + unsigned int len = MIN (ARRAY_LENGTH (buf) - 1, (unsigned int) (end - pp)); + strncpy (buf, pp, len); + buf[len] = '\0'; + + char *p = buf; + char *pend = p; + uint32_t v; + + errno = 0; + v = strtol (p, &pend, 10); + if (errno || p == pend || pend - p != end - pp) + return false; + + *pv = v; + return true; +} + +static hb_bool_t +parse_int (const char *pp, const char *end, int32_t *pv) +{ + char buf[32]; + unsigned int len = MIN (ARRAY_LENGTH (buf) - 1, (unsigned int) (end - pp)); + strncpy (buf, pp, len); + buf[len] = '\0'; + + char *p = buf; + char *pend = p; + int32_t v; + + errno = 0; + v = strtol (p, &pend, 10); + if (errno || p == pend || pend - p != end - pp) + return false; + + *pv = v; + return true; +} + +#include "hb-buffer-deserialize-json.hh" +#include "hb-buffer-deserialize-text.hh" + +hb_bool_t +hb_buffer_deserialize_glyphs (hb_buffer_t *buffer, + const char *buf, + int buf_len, /* -1 means nul-terminated */ + const char **end_ptr, /* May be NULL */ + hb_font_t *font, /* May be NULL */ + hb_buffer_serialize_format_t format) +{ + const char *end; + if (!end_ptr) + end_ptr = &end; + *end_ptr = buf; + + assert ((!buffer->len && buffer->content_type == HB_BUFFER_CONTENT_TYPE_INVALID) || + buffer->content_type == HB_BUFFER_CONTENT_TYPE_GLYPHS); + + if (buf_len == -1) + buf_len = strlen (buf); + + if (!buf_len) + { + *end_ptr = buf; + return false; + } + + hb_buffer_set_content_type (buffer, HB_BUFFER_CONTENT_TYPE_GLYPHS); + + if (!font) + font = hb_font_get_empty (); + + switch (format) + { + case HB_BUFFER_SERIALIZE_FORMAT_TEXT: + return _hb_buffer_deserialize_glyphs_text (buffer, + buf, buf_len, end_ptr, + font); + + case HB_BUFFER_SERIALIZE_FORMAT_JSON: + return _hb_buffer_deserialize_glyphs_json (buffer, + buf, buf_len, end_ptr, + font); + + default: + case HB_BUFFER_SERIALIZE_FORMAT_INVALID: + return false; + + } +} diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-buffer.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer.cc index c7860e9bc30..4e26250c963 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-buffer.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer.cc @@ -215,6 +215,17 @@ hb_buffer_t::add (hb_codepoint_t codepoint, } void +hb_buffer_t::add_info (const hb_glyph_info_t &glyph_info) +{ + if (unlikely (!ensure (len + 1))) return; + + info[len] = glyph_info; + + len++; +} + + +void hb_buffer_t::remove_output (void) { if (unlikely (hb_object_is_inert (this))) @@ -315,7 +326,7 @@ hb_buffer_t::output_glyph (hb_codepoint_t glyph_index) } void -hb_buffer_t::output_info (hb_glyph_info_t &glyph_info) +hb_buffer_t::output_info (const hb_glyph_info_t &glyph_info) { if (unlikely (!make_room_for (0, 1))) return; @@ -1064,231 +1075,3 @@ hb_buffer_normalize_glyphs (hb_buffer_t *buffer) } normalize_glyphs_cluster (buffer, start, end, backward); } - - -/* - * Serialize - */ - -static const char *serialize_formats[] = { - "text", - "json", - NULL -}; - -const char ** -hb_buffer_serialize_list_formats (void) -{ - return serialize_formats; -} - -hb_buffer_serialize_format_t -hb_buffer_serialize_format_from_string (const char *str, int len) -{ - /* Upper-case it. */ - return (hb_buffer_serialize_format_t) (hb_tag_from_string (str, len) & ~0x20202020); -} - -const char * -hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format) -{ - switch (format) - { - case HB_BUFFER_SERIALIZE_FORMAT_TEXT: return serialize_formats[0]; - case HB_BUFFER_SERIALIZE_FORMAT_JSON: return serialize_formats[1]; - default: - case HB_BUFFER_SERIALIZE_FORMAT_INVALID: return NULL; - } -} - -static unsigned int -_hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer, - unsigned int start, - unsigned int end, - char *buf, - unsigned int buf_size, - unsigned int *buf_consumed, - hb_font_t *font, - hb_buffer_serialize_flags_t flags) -{ - hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, NULL); - hb_glyph_position_t *pos = hb_buffer_get_glyph_positions (buffer, NULL); - - *buf_consumed = 0; - for (unsigned int i = start; i < end; i++) - { - char b[1024]; - char *p = b; - - /* In the following code, we know b is large enough that no overflow can happen. */ - -#define APPEND(s) HB_STMT_START { strcpy (p, s); p += strlen (s); } HB_STMT_END - - if (i) - *p++ = ','; - - *p++ = '{'; - - APPEND ("\"g\":"); - if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES)) - { - char g[128]; - hb_font_glyph_to_string (font, info[i].codepoint, g, sizeof (g)); - *p++ = '"'; - for (char *q = g; *q; q++) { - if (*q == '"') - *p++ = '\\'; - *p++ = *q; - } - *p++ = '"'; - } - else - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "%u", info[i].codepoint); - - if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS)) { - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"cl\":%u", info[i].cluster); - } - - if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS)) - { - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"dx\":%d,\"dy\":%d", - pos[i].x_offset, pos[i].y_offset); - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"ax\":%d,\"ay\":%d", - pos[i].x_advance, pos[i].y_advance); - } - - *p++ = '}'; - - if (buf_size > (p - b)) - { - unsigned int l = p - b; - memcpy (buf, b, l); - buf += l; - buf_size -= l; - *buf_consumed += l; - *buf = '\0'; - } else - return i - start; - } - - return end - start; -} - -static unsigned int -_hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer, - unsigned int start, - unsigned int end, - char *buf, - unsigned int buf_size, - unsigned int *buf_consumed, - hb_font_t *font, - hb_buffer_serialize_flags_t flags) -{ - hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, NULL); - hb_glyph_position_t *pos = hb_buffer_get_glyph_positions (buffer, NULL); - hb_direction_t direction = hb_buffer_get_direction (buffer); - - *buf_consumed = 0; - for (unsigned int i = start; i < end; i++) - { - char b[1024]; - char *p = b; - - /* In the following code, we know b is large enough that no overflow can happen. */ - - if (i) - *p++ = '|'; - - if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES)) - { - hb_font_glyph_to_string (font, info[i].codepoint, p, 128); - p += strlen (p); - } - else - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "%u", info[i].codepoint); - - if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS)) { - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "=%u", info[i].cluster); - } - - if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS)) - { - if (pos[i].x_offset || pos[i].y_offset) - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "@%d,%d", pos[i].x_offset, pos[i].y_offset); - - *p++ = '+'; - if (HB_DIRECTION_IS_HORIZONTAL (direction) || pos[i].x_advance) - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "%d", pos[i].x_advance); - if (HB_DIRECTION_IS_VERTICAL (direction) || pos->y_advance) - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), ",%d", pos[i].y_advance); - } - - if (buf_size > (p - b)) - { - unsigned int l = p - b; - memcpy (buf, b, l); - buf += l; - buf_size -= l; - *buf_consumed += l; - *buf = '\0'; - } else - return i - start; - } - - return end - start; -} - -/* Returns number of items, starting at start, that were serialized. */ -unsigned int -hb_buffer_serialize_glyphs (hb_buffer_t *buffer, - unsigned int start, - unsigned int end, - char *buf, - unsigned int buf_size, - unsigned int *buf_consumed, - hb_font_t *font, /* May be NULL */ - hb_buffer_serialize_format_t format, - hb_buffer_serialize_flags_t flags) -{ - assert (start <= end && end <= buffer->len); - - *buf_consumed = 0; - - assert ((!buffer->len && buffer->content_type == HB_BUFFER_CONTENT_TYPE_INVALID) || - buffer->content_type == HB_BUFFER_CONTENT_TYPE_GLYPHS); - - if (unlikely (start == end)) - return 0; - - if (!font) - font = hb_font_get_empty (); - - switch (format) - { - case HB_BUFFER_SERIALIZE_FORMAT_TEXT: - return _hb_buffer_serialize_glyphs_text (buffer, start, end, - buf, buf_size, buf_consumed, - font, flags); - - case HB_BUFFER_SERIALIZE_FORMAT_JSON: - return _hb_buffer_serialize_glyphs_json (buffer, start, end, - buf, buf_size, buf_consumed, - font, flags); - - default: - case HB_BUFFER_SERIALIZE_FORMAT_INVALID: - return 0; - - } -} - -hb_bool_t -hb_buffer_deserialize_glyphs (hb_buffer_t *buffer, - const char *buf, - unsigned int buf_len, - unsigned int *buf_consumed, - hb_font_t *font, /* May be NULL */ - hb_buffer_serialize_format_t format) -{ - return false; -} diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-buffer.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer.h index 5386e360add..55a40457193 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-buffer.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-buffer.h @@ -304,7 +304,7 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer, unsigned int end, char *buf, unsigned int buf_size, - unsigned int *buf_consumed, + unsigned int *buf_consumed, /* May be NULL */ hb_font_t *font, /* May be NULL */ hb_buffer_serialize_format_t format, hb_buffer_serialize_flags_t flags); @@ -312,8 +312,8 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer, hb_bool_t hb_buffer_deserialize_glyphs (hb_buffer_t *buffer, const char *buf, - unsigned int buf_len, - unsigned int *buf_consumed, + int buf_len, /* -1 means nul-terminated */ + const char **end_ptr, /* May be NULL */ hb_font_t *font, /* May be NULL */ hb_buffer_serialize_format_t format); diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-cache-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-cache-private.hh index 19b70b7e395..19b70b7e395 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-cache-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-cache-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-common.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-common.cc index 540d252cd73..540d252cd73 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-common.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-common.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-common.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-common.h index cc221d33be9..cc221d33be9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-common.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-common.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-coretext.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-coretext.cc index 8f94795928c..8f94795928c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-coretext.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-coretext.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-coretext.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-coretext.h index c4954fa1b2c..c4954fa1b2c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-coretext.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-coretext.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-fallback-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-fallback-shape.cc index 1a1fcfbda1e..1a1fcfbda1e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-fallback-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-fallback-shape.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-font-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-font-private.hh index 48fbb0ee549..48fbb0ee549 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-font-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-font-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-font.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-font.cc index b59fdebaea7..b59fdebaea7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-font.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-font.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-font.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-font.h index 88d489551e8..88d489551e8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-font.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-font.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ft.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ft.cc index 1e87c1cb324..978230cd655 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ft.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ft.cc @@ -53,14 +53,7 @@ * * - We don't handle / allow for emboldening / obliqueing. * - * - Rounding, etc? - * - * - In the future, we should add constructors to create fonts in font space. - * - * - I believe transforms are not correctly implemented. FreeType does not - * provide any API to get to the transform/delta set on the face. :( - * - * - Always use FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH? + * - In the future, we should add constructors to create fonts in font space? * * - FT_Load_Glyph() is exteremely costly. Do something about it? */ @@ -242,8 +235,8 @@ hb_ft_get_glyph_name (hb_font_t *font HB_UNUSED, FT_Face ft_face = (FT_Face) font_data; hb_bool_t ret = !FT_Get_Glyph_Name (ft_face, glyph, name, size); - if (!ret || (size && !*name)) - snprintf (name, size, "gid%u", glyph); + if (ret && (size && !*name)) + ret = false; return ret; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ft.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ft.h index 696251e143f..696251e143f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ft.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ft.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-glib.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-glib.cc index 676e6601628..676e6601628 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-glib.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-glib.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-glib.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-glib.h index 63a9d3366c5..63a9d3366c5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-glib.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-glib.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-gobject-enums.cc.tmpl b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-gobject-enums.cc.tmpl index 05abd898d4f..05abd898d4f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-gobject-enums.cc.tmpl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-gobject-enums.cc.tmpl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-gobject-structs.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-gobject-structs.cc index cec48542275..cec48542275 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-gobject-structs.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-gobject-structs.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-gobject.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-gobject.h index 4f23fdd385d..4f23fdd385d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-gobject.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-gobject.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-graphite2.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-graphite2.cc index 16ef9a4dabe..16ef9a4dabe 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-graphite2.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-graphite2.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-graphite2.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-graphite2.h index bea68f939b4..bea68f939b4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-graphite2.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-graphite2.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-icu-le.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-icu-le.cc index c05d330b957..c05d330b957 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-icu-le.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-icu-le.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-icu.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-icu.cc index c177be2c4b2..c177be2c4b2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-icu.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-icu.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-icu.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-icu.h index f2f35f0f2ce..f2f35f0f2ce 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-icu.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-icu.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-mutex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-mutex-private.hh index 0fb21c2e86e..0fb21c2e86e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-mutex-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-mutex-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-object-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-object-private.hh index 8a9ae34dbee..8a9ae34dbee 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-object-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-object-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-old.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-old.cc index a7ea8ed9bbe..a7ea8ed9bbe 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-old.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-old.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-open-file-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-open-file-private.hh index 250504ae20b..250504ae20b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-open-file-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-open-file-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-open-type-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-open-type-private.hh index 090f3fc4786..cd1163e4f78 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-open-type-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-open-type-private.hh @@ -171,6 +171,10 @@ ASSERT_STATIC (Type::min_size + 1 <= sizeof (_Null##Type)) (&c->debug_depth, c->get_name (), this, HB_FUNC, \ ""); +/* This limits sanitizing time on really broken fonts. */ +#ifndef HB_SANITIZE_MAX_EDITS +#define HB_SANITIZE_MAX_EDITS 100 +#endif struct hb_sanitize_context_t { @@ -178,7 +182,7 @@ struct hb_sanitize_context_t static const unsigned int max_debug_depth = HB_DEBUG_SANITIZE; typedef bool return_t; template <typename T> - inline return_t process (const T &obj) { return obj.sanitize (this); } + 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; } @@ -247,6 +251,9 @@ struct hb_sanitize_context_t inline bool may_edit (const void *base HB_UNUSED, unsigned int len HB_UNUSED) { + if (this->edit_count >= HB_SANITIZE_MAX_EDITS) + return false; + const char *p = (const char *) base; this->edit_count++; @@ -404,7 +411,7 @@ struct hb_serialize_context_t template <typename Type> inline Type *allocate_size (unsigned int size) { - if (unlikely (this->ran_out_of_room || this->end - this->head < size)) { + if (unlikely (this->ran_out_of_room || this->end - this->head < ptrdiff_t (size))) { this->ran_out_of_room = true; return NULL; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-head-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-head-table.hh index 3a9451295de..3a9451295de 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-head-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-head-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-hhea-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-hhea-table.hh index 2b89c4e0208..2b89c4e0208 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-hhea-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-hhea-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-hmtx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-hmtx-table.hh index b94337d0be7..b94337d0be7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-hmtx-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-hmtx-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-common-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-common-private.hh index e6018db1243..e6018db1243 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-common-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-common-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-gdef-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-gdef-table.hh index ff2d09c51f0..ff2d09c51f0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-gdef-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-gdef-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-gpos-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-gpos-table.hh index 44f1c641d16..44139277c68 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-gpos-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-gpos-table.hh @@ -519,12 +519,12 @@ struct SinglePosFormat2 struct SinglePos { template <typename context_t> - inline typename context_t::return_t process (context_t *c) const + inline typename context_t::return_t dispatch (context_t *c) const { - TRACE_PROCESS (this); + TRACE_DISPATCH (this); switch (u.format) { - case 1: return TRACE_RETURN (c->process (u.format1)); - case 2: return TRACE_RETURN (c->process (u.format2)); + case 1: return TRACE_RETURN (c->dispatch (u.format1)); + case 2: return TRACE_RETURN (c->dispatch (u.format2)); default:return TRACE_RETURN (c->default_return_value ()); } } @@ -810,12 +810,12 @@ struct PairPosFormat2 struct PairPos { template <typename context_t> - inline typename context_t::return_t process (context_t *c) const + inline typename context_t::return_t dispatch (context_t *c) const { - TRACE_PROCESS (this); + TRACE_DISPATCH (this); switch (u.format) { - case 1: return TRACE_RETURN (c->process (u.format1)); - case 2: return TRACE_RETURN (c->process (u.format2)); + case 1: return TRACE_RETURN (c->dispatch (u.format1)); + case 2: return TRACE_RETURN (c->dispatch (u.format2)); default:return TRACE_RETURN (c->default_return_value ()); } } @@ -976,11 +976,11 @@ struct CursivePosFormat1 struct CursivePos { template <typename context_t> - inline typename context_t::return_t process (context_t *c) const + inline typename context_t::return_t dispatch (context_t *c) const { - TRACE_PROCESS (this); + TRACE_DISPATCH (this); switch (u.format) { - case 1: return TRACE_RETURN (c->process (u.format1)); + case 1: return TRACE_RETURN (c->dispatch (u.format1)); default:return TRACE_RETURN (c->default_return_value ()); } } @@ -1075,11 +1075,11 @@ struct MarkBasePosFormat1 struct MarkBasePos { template <typename context_t> - inline typename context_t::return_t process (context_t *c) const + inline typename context_t::return_t dispatch (context_t *c) const { - TRACE_PROCESS (this); + TRACE_DISPATCH (this); switch (u.format) { - case 1: return TRACE_RETURN (c->process (u.format1)); + case 1: return TRACE_RETURN (c->dispatch (u.format1)); default:return TRACE_RETURN (c->default_return_value ()); } } @@ -1196,11 +1196,11 @@ struct MarkLigPosFormat1 struct MarkLigPos { template <typename context_t> - inline typename context_t::return_t process (context_t *c) const + inline typename context_t::return_t dispatch (context_t *c) const { - TRACE_PROCESS (this); + TRACE_DISPATCH (this); switch (u.format) { - case 1: return TRACE_RETURN (c->process (u.format1)); + case 1: return TRACE_RETURN (c->dispatch (u.format1)); default:return TRACE_RETURN (c->default_return_value ()); } } @@ -1315,11 +1315,11 @@ struct MarkMarkPosFormat1 struct MarkMarkPos { template <typename context_t> - inline typename context_t::return_t process (context_t *c) const + inline typename context_t::return_t dispatch (context_t *c) const { - TRACE_PROCESS (this); + TRACE_DISPATCH (this); switch (u.format) { - case 1: return TRACE_RETURN (c->process (u.format1)); + case 1: return TRACE_RETURN (c->dispatch (u.format1)); default:return TRACE_RETURN (c->default_return_value ()); } } @@ -1374,19 +1374,19 @@ struct PosLookupSubTable }; template <typename context_t> - inline typename context_t::return_t process (context_t *c, unsigned int lookup_type) const + inline typename context_t::return_t dispatch (context_t *c, unsigned int lookup_type) const { - TRACE_PROCESS (this); + TRACE_DISPATCH (this); switch (lookup_type) { - case Single: return TRACE_RETURN (u.single.process (c)); - case Pair: return TRACE_RETURN (u.pair.process (c)); - case Cursive: return TRACE_RETURN (u.cursive.process (c)); - case MarkBase: return TRACE_RETURN (u.markBase.process (c)); - case MarkLig: return TRACE_RETURN (u.markLig.process (c)); - case MarkMark: return TRACE_RETURN (u.markMark.process (c)); - case Context: return TRACE_RETURN (u.context.process (c)); - case ChainContext: return TRACE_RETURN (u.chainContext.process (c)); - case Extension: return TRACE_RETURN (u.extension.process (c)); + case Single: return TRACE_RETURN (u.single.dispatch (c)); + case Pair: return TRACE_RETURN (u.pair.dispatch (c)); + case Cursive: return TRACE_RETURN (u.cursive.dispatch (c)); + case MarkBase: return TRACE_RETURN (u.markBase.dispatch (c)); + case MarkLig: return TRACE_RETURN (u.markLig.dispatch (c)); + case MarkMark: return TRACE_RETURN (u.markMark.dispatch (c)); + case Context: return TRACE_RETURN (u.context.dispatch (c)); + case ChainContext: return TRACE_RETURN (u.chainContext.dispatch (c)); + case Extension: return TRACE_RETURN (u.extension.dispatch (c)); default: return TRACE_RETURN (c->default_return_value ()); } } @@ -1434,27 +1434,11 @@ struct PosLookup : Lookup inline const PosLookupSubTable& get_subtable (unsigned int i) const { return this+CastR<OffsetArrayOf<PosLookupSubTable> > (subTable)[i]; } - template <typename context_t> - inline typename context_t::return_t process (context_t *c) const - { - TRACE_PROCESS (this); - unsigned int lookup_type = get_type (); - unsigned int count = get_subtable_count (); - for (unsigned int i = 0; i < count; i++) { - typename context_t::return_t r = get_subtable (i).process (c, lookup_type); - if (c->stop_sublookup_iteration (r)) - return TRACE_RETURN (r); - } - return TRACE_RETURN (c->default_return_value ()); - } - template <typename context_t> - static inline typename context_t::return_t process_recurse_func (context_t *c, unsigned int lookup_index); - inline hb_collect_glyphs_context_t::return_t collect_glyphs_lookup (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); c->set_recurse_func (NULL); - return TRACE_RETURN (process (c)); + return TRACE_RETURN (dispatch (c)); } template <typename set_t> @@ -1464,7 +1448,7 @@ struct PosLookup : Lookup const Coverage *last = NULL; unsigned int count = get_subtable_count (); for (unsigned int i = 0; i < count; i++) { - const Coverage *coverage = &get_subtable (i).process (&c, get_type ()); + const Coverage *coverage = &get_subtable (i).dispatch (&c, get_type ()); if (coverage != last) { coverage->add_coverage (glyphs); last = coverage; @@ -1477,7 +1461,7 @@ struct PosLookup : Lookup TRACE_APPLY (this); if (!c->check_glyph_property (&c->buffer->cur(), c->lookup_props)) return TRACE_RETURN (false); - return TRACE_RETURN (process (c)); + return TRACE_RETURN (dispatch (c)); } static bool apply_recurse_func (hb_apply_context_t *c, unsigned int lookup_index); @@ -1507,6 +1491,23 @@ struct PosLookup : Lookup return ret; } + template <typename context_t> + static inline typename context_t::return_t dispatch_recurse_func (context_t *c, unsigned int lookup_index); + + template <typename context_t> + inline typename context_t::return_t dispatch (context_t *c) const + { + TRACE_DISPATCH (this); + unsigned int lookup_type = get_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 ()); + } + inline bool sanitize (hb_sanitize_context_t *c) { TRACE_SANITIZE (this); if (unlikely (!Lookup::sanitize (c))) return TRACE_RETURN (false); @@ -1618,11 +1619,11 @@ GPOS::position_finish (hb_font_t *font HB_UNUSED, hb_buffer_t *buffer) /* Out-of-class implementation for methods recursing */ template <typename context_t> -inline typename context_t::return_t PosLookup::process_recurse_func (context_t *c, unsigned int lookup_index) +inline typename context_t::return_t PosLookup::dispatch_recurse_func (context_t *c, unsigned int lookup_index) { const GPOS &gpos = *(hb_ot_layout_from_face (c->face)->gpos); const PosLookup &l = gpos.get_lookup (lookup_index); - return l.process (c); + return l.dispatch (c); } inline bool PosLookup::apply_recurse_func (hb_apply_context_t *c, unsigned int lookup_index) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-gsub-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-gsub-table.hh index 065d0f17f70..35d07298d30 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-gsub-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-gsub-table.hh @@ -192,17 +192,6 @@ struct SingleSubstFormat2 struct SingleSubst { - template <typename context_t> - inline typename context_t::return_t process (context_t *c) const - { - TRACE_PROCESS (this); - switch (u.format) { - case 1: return TRACE_RETURN (c->process (u.format1)); - case 2: return TRACE_RETURN (c->process (u.format2)); - default:return TRACE_RETURN (c->default_return_value ()); - } - } - inline bool serialize (hb_serialize_context_t *c, Supplier<GlyphID> &glyphs, Supplier<GlyphID> &substitutes, @@ -230,6 +219,17 @@ struct SingleSubst } } + template <typename context_t> + inline typename context_t::return_t dispatch (context_t *c) const + { + TRACE_DISPATCH (this); + switch (u.format) { + case 1: return TRACE_RETURN (c->dispatch (u.format1)); + case 2: return TRACE_RETURN (c->dispatch (u.format2)); + 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); @@ -385,16 +385,6 @@ struct MultipleSubstFormat1 struct MultipleSubst { - template <typename context_t> - inline typename context_t::return_t process (context_t *c) const - { - TRACE_PROCESS (this); - switch (u.format) { - case 1: return TRACE_RETURN (c->process (u.format1)); - default:return TRACE_RETURN (c->default_return_value ()); - } - } - inline bool serialize (hb_serialize_context_t *c, Supplier<GlyphID> &glyphs, Supplier<unsigned int> &substitute_len_list, @@ -411,6 +401,16 @@ struct MultipleSubst } } + template <typename context_t> + inline typename context_t::return_t dispatch (context_t *c) const + { + TRACE_DISPATCH (this); + 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); @@ -536,16 +536,6 @@ struct AlternateSubstFormat1 struct AlternateSubst { - template <typename context_t> - inline typename context_t::return_t process (context_t *c) const - { - TRACE_PROCESS (this); - switch (u.format) { - case 1: return TRACE_RETURN (c->process (u.format1)); - default:return TRACE_RETURN (c->default_return_value ()); - } - } - inline bool serialize (hb_serialize_context_t *c, Supplier<GlyphID> &glyphs, Supplier<unsigned int> &alternate_len_list, @@ -562,6 +552,16 @@ struct AlternateSubst } } + template <typename context_t> + inline typename context_t::return_t dispatch (context_t *c) const + { + TRACE_DISPATCH (this); + 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); @@ -841,16 +841,6 @@ struct LigatureSubstFormat1 struct LigatureSubst { - template <typename context_t> - inline typename context_t::return_t process (context_t *c) const - { - TRACE_PROCESS (this); - switch (u.format) { - case 1: return TRACE_RETURN (c->process (u.format1)); - default:return TRACE_RETURN (c->default_return_value ()); - } - } - inline bool serialize (hb_serialize_context_t *c, Supplier<GlyphID> &first_glyphs, Supplier<unsigned int> &ligature_per_first_glyph_count_list, @@ -870,6 +860,16 @@ struct LigatureSubst } } + template <typename context_t> + inline typename context_t::return_t dispatch (context_t *c) const + { + TRACE_DISPATCH (this); + 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); @@ -1023,11 +1023,11 @@ struct ReverseChainSingleSubstFormat1 struct ReverseChainSingleSubst { template <typename context_t> - inline typename context_t::return_t process (context_t *c) const + inline typename context_t::return_t dispatch (context_t *c) const { - TRACE_PROCESS (this); + TRACE_DISPATCH (this); switch (u.format) { - case 1: return TRACE_RETURN (c->process (u.format1)); + case 1: return TRACE_RETURN (c->dispatch (u.format1)); default:return TRACE_RETURN (c->default_return_value ()); } } @@ -1070,18 +1070,18 @@ struct SubstLookupSubTable }; template <typename context_t> - inline typename context_t::return_t process (context_t *c, unsigned int lookup_type) const + inline typename context_t::return_t dispatch (context_t *c, unsigned int lookup_type) const { - TRACE_PROCESS (this); + TRACE_DISPATCH (this); switch (lookup_type) { - case Single: return TRACE_RETURN (u.single.process (c)); - case Multiple: return TRACE_RETURN (u.multiple.process (c)); - case Alternate: return TRACE_RETURN (u.alternate.process (c)); - case Ligature: return TRACE_RETURN (u.ligature.process (c)); - case Context: return TRACE_RETURN (u.context.process (c)); - case ChainContext: return TRACE_RETURN (u.chainContext.process (c)); - case Extension: return TRACE_RETURN (u.extension.process (c)); - case ReverseChainSingle: return TRACE_RETURN (u.reverseChainContextSingle.process (c)); + case Single: return TRACE_RETURN (u.single.dispatch (c)); + case Multiple: return TRACE_RETURN (u.multiple.dispatch (c)); + case Alternate: return TRACE_RETURN (u.alternate.dispatch (c)); + case Ligature: return TRACE_RETURN (u.ligature.dispatch (c)); + case Context: return TRACE_RETURN (u.context.dispatch (c)); + case ChainContext: return TRACE_RETURN (u.chainContext.dispatch (c)); + case Extension: return TRACE_RETURN (u.extension.dispatch (c)); + case ReverseChainSingle: return TRACE_RETURN (u.reverseChainContextSingle.dispatch (c)); default: return TRACE_RETURN (c->default_return_value ()); } } @@ -1138,34 +1138,18 @@ struct SubstLookup : Lookup return lookup_type_is_reverse (type); } - template <typename context_t> - inline typename context_t::return_t process (context_t *c) const - { - TRACE_PROCESS (this); - unsigned int lookup_type = get_type (); - unsigned int count = get_subtable_count (); - for (unsigned int i = 0; i < count; i++) { - typename context_t::return_t r = get_subtable (i).process (c, lookup_type); - if (c->stop_sublookup_iteration (r)) - return TRACE_RETURN (r); - } - return TRACE_RETURN (c->default_return_value ()); - } - template <typename context_t> - static inline typename context_t::return_t process_recurse_func (context_t *c, unsigned int lookup_index); - inline hb_closure_context_t::return_t closure (hb_closure_context_t *c) const { TRACE_CLOSURE (this); - c->set_recurse_func (process_recurse_func<hb_closure_context_t>); - return TRACE_RETURN (process (c)); + c->set_recurse_func (dispatch_recurse_func<hb_closure_context_t>); + return TRACE_RETURN (dispatch (c)); } inline hb_collect_glyphs_context_t::return_t collect_glyphs_lookup (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - c->set_recurse_func (process_recurse_func<hb_collect_glyphs_context_t>); - return TRACE_RETURN (process (c)); + c->set_recurse_func (dispatch_recurse_func<hb_collect_glyphs_context_t>); + return TRACE_RETURN (dispatch (c)); } template <typename set_t> @@ -1175,7 +1159,7 @@ struct SubstLookup : Lookup const Coverage *last = NULL; unsigned int count = get_subtable_count (); for (unsigned int i = 0; i < count; i++) { - const Coverage *coverage = &get_subtable (i).process (&c, get_type ()); + const Coverage *coverage = &get_subtable (i).dispatch (&c, get_type ()); if (coverage != last) { coverage->add_coverage (glyphs); last = coverage; @@ -1188,7 +1172,7 @@ struct SubstLookup : Lookup TRACE_WOULD_APPLY (this); if (unlikely (!c->len)) return TRACE_RETURN (false); if (!digest->may_have (c->glyphs[0])) return TRACE_RETURN (false); - return TRACE_RETURN (process (c)); + return TRACE_RETURN (dispatch (c)); } inline bool apply_once (hb_apply_context_t *c) const @@ -1196,7 +1180,7 @@ struct SubstLookup : Lookup TRACE_APPLY (this); if (!c->check_glyph_property (&c->buffer->cur(), c->lookup_props)) return TRACE_RETURN (false); - return TRACE_RETURN (process (c)); + return TRACE_RETURN (dispatch (c)); } static bool apply_recurse_func (hb_apply_context_t *c, unsigned int lookup_index); @@ -1305,6 +1289,23 @@ struct SubstLookup : Lookup ligatures_list, component_count_list, component_list)); } + template <typename context_t> + static inline typename context_t::return_t dispatch_recurse_func (context_t *c, unsigned int lookup_index); + + template <typename context_t> + inline typename context_t::return_t dispatch (context_t *c) const + { + TRACE_DISPATCH (this); + unsigned int lookup_type = get_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 ()); + } + inline bool sanitize (hb_sanitize_context_t *c) { TRACE_SANITIZE (this); @@ -1386,11 +1387,11 @@ inline bool ExtensionSubst::is_reverse (void) const } template <typename context_t> -inline typename context_t::return_t SubstLookup::process_recurse_func (context_t *c, unsigned int lookup_index) +inline typename context_t::return_t SubstLookup::dispatch_recurse_func (context_t *c, unsigned int lookup_index) { const GSUB &gsub = *(hb_ot_layout_from_face (c->face)->gsub); const SubstLookup &l = gsub.get_lookup (lookup_index); - return l.process (c); + return l.dispatch (c); } inline bool SubstLookup::apply_recurse_func (hb_apply_context_t *c, unsigned int lookup_index) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-gsubgpos-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-gsubgpos-private.hh index 23fbdf48932..f46b3782ec7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-gsubgpos-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-gsubgpos-private.hh @@ -38,7 +38,7 @@ namespace OT { -#define TRACE_PROCESS(this) \ +#define TRACE_DISPATCH(this) \ hb_auto_trace_t<context_t::max_debug_depth, typename context_t::return_t> trace \ (&c->debug_depth, c->get_name (), this, HB_FUNC, \ ""); @@ -60,7 +60,7 @@ struct hb_closure_context_t typedef hb_void_t return_t; typedef return_t (*recurse_func_t) (hb_closure_context_t *c, unsigned int lookup_index); template <typename T> - inline return_t process (const T &obj) { obj.closure (this); return HB_VOID; } + inline return_t dispatch (const T &obj) { obj.closure (this); return HB_VOID; } static return_t default_return_value (void) { return HB_VOID; } bool stop_sublookup_iteration (return_t r HB_UNUSED) const { return false; } return_t recurse (unsigned int lookup_index) @@ -109,7 +109,7 @@ struct hb_would_apply_context_t static const unsigned int max_debug_depth = HB_DEBUG_WOULD_APPLY; typedef bool return_t; template <typename T> - inline return_t process (const T &obj) { return obj.would_apply (this); } + inline return_t dispatch (const T &obj) { return obj.would_apply (this); } static return_t default_return_value (void) { return false; } bool stop_sublookup_iteration (return_t r) const { return r; } @@ -148,7 +148,7 @@ struct hb_collect_glyphs_context_t typedef hb_void_t return_t; typedef return_t (*recurse_func_t) (hb_collect_glyphs_context_t *c, unsigned int lookup_index); template <typename T> - inline return_t process (const T &obj) { obj.collect_glyphs (this); return HB_VOID; } + inline return_t dispatch (const T &obj) { obj.collect_glyphs (this); return HB_VOID; } static return_t default_return_value (void) { return HB_VOID; } bool stop_sublookup_iteration (return_t r HB_UNUSED) const { return false; } return_t recurse (unsigned int lookup_index) @@ -214,7 +214,7 @@ struct hb_get_coverage_context_t static const unsigned int max_debug_depth = 0; typedef const Coverage &return_t; template <typename T> - inline return_t process (const T &obj) { return obj.get_coverage (); } + inline return_t dispatch (const T &obj) { return obj.get_coverage (); } static return_t default_return_value (void) { return Null(Coverage); } hb_get_coverage_context_t (void) : @@ -241,7 +241,7 @@ struct hb_apply_context_t 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 process (const T &obj) { return obj.apply (this); } + 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) @@ -261,7 +261,7 @@ struct hb_apply_context_t hb_buffer_t *buffer; hb_direction_t direction; hb_mask_t lookup_mask; - bool auto_joiners; + bool auto_zwj; recurse_func_t recurse_func; unsigned int nesting_level_left; unsigned int lookup_props; @@ -274,12 +274,12 @@ struct hb_apply_context_t hb_font_t *font_, hb_buffer_t *buffer_, hb_mask_t lookup_mask_, - bool auto_joiners_) : + bool auto_zwj_) : table_index (table_index_), font (font_), face (font->face), buffer (buffer_), direction (buffer_->props.direction), lookup_mask (lookup_mask_), - auto_joiners (auto_joiners_), + auto_zwj (auto_zwj_), recurse_func (NULL), nesting_level_left (MAX_NESTING_LEVEL), lookup_props (0), @@ -383,16 +383,12 @@ struct hb_apply_context_t end (c->buffer->len) { matcher.set_lookup_props (c->lookup_props); - if (c->auto_joiners) - { - /* Ignore ZWNJ if we are matching GSUB context, or matching GPOS. */ - matcher.set_ignore_zwnj (context_match || c->table_index == 1); - matcher.set_ignore_zwj (true); - } + /* 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); } @@ -457,16 +453,12 @@ struct hb_apply_context_t num_items (num_items_) { matcher.set_lookup_props (c->lookup_props); - if (c->auto_joiners) - { - /* Ignore ZWNJ if we are matching GSUB context, or matching GPOS. */ - matcher.set_ignore_zwnj (context_match || c->table_index == 1); - matcher.set_ignore_zwj (true); - } + /* 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); } @@ -1493,13 +1485,13 @@ struct ContextFormat3 struct Context { template <typename context_t> - inline typename context_t::return_t process (context_t *c) const + inline typename context_t::return_t dispatch (context_t *c) const { - TRACE_PROCESS (this); + TRACE_DISPATCH (this); switch (u.format) { - case 1: return TRACE_RETURN (c->process (u.format1)); - case 2: return TRACE_RETURN (c->process (u.format2)); - case 3: return TRACE_RETURN (c->process (u.format3)); + case 1: return TRACE_RETURN (c->dispatch (u.format1)); + case 2: return TRACE_RETURN (c->dispatch (u.format2)); + case 3: return TRACE_RETURN (c->dispatch (u.format3)); default:return TRACE_RETURN (c->default_return_value ()); } } @@ -2109,13 +2101,13 @@ struct ChainContextFormat3 struct ChainContext { template <typename context_t> - inline typename context_t::return_t process (context_t *c) const + inline typename context_t::return_t dispatch (context_t *c) const { - TRACE_PROCESS (this); + TRACE_DISPATCH (this); switch (u.format) { - case 1: return TRACE_RETURN (c->process (u.format1)); - case 2: return TRACE_RETURN (c->process (u.format2)); - case 3: return TRACE_RETURN (c->process (u.format3)); + case 1: return TRACE_RETURN (c->dispatch (u.format1)); + case 2: return TRACE_RETURN (c->dispatch (u.format2)); + case 3: return TRACE_RETURN (c->dispatch (u.format3)); default:return TRACE_RETURN (c->default_return_value ()); } } @@ -2189,9 +2181,9 @@ struct Extension } template <typename context_t> - inline typename context_t::return_t process (context_t *c) const + inline typename context_t::return_t dispatch (context_t *c) const { - return get_subtable<typename T::LookupSubTable> ().process (c, get_type ()); + return get_subtable<typename T::LookupSubTable> ().dispatch (c, get_type ()); } inline bool sanitize_self (hb_sanitize_context_t *c) { diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-private.hh index d826108c11b..4866c419125 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout-private.hh @@ -207,7 +207,7 @@ hb_ot_layout_substitute_lookup (hb_font_t *font, hb_buffer_t *buffer, unsigned int lookup_index, hb_mask_t mask, - hb_bool_t auto_joiners); + hb_bool_t auto_zwj); /* Should be called after all the substitute_lookup's are done */ HB_INTERNAL void @@ -225,7 +225,7 @@ hb_ot_layout_position_lookup (hb_font_t *font, hb_buffer_t *buffer, unsigned int lookup_index, hb_mask_t mask, - hb_bool_t auto_joiners); + hb_bool_t auto_zwj); /* Should be called after all the position_lookup's are done */ HB_INTERNAL void diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout.cc index 0349b328d26..8161ce3d9e2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout.cc @@ -667,11 +667,11 @@ hb_ot_layout_substitute_lookup (hb_font_t *font, hb_buffer_t *buffer, unsigned int lookup_index, hb_mask_t mask, - hb_bool_t auto_joiners) + hb_bool_t auto_zwj) { if (unlikely (lookup_index >= hb_ot_layout_from_face (font->face)->gsub_lookup_count)) return false; - OT::hb_apply_context_t c (0, font, buffer, mask, auto_joiners); + OT::hb_apply_context_t c (0, font, buffer, mask, auto_zwj); const OT::SubstLookup& l = hb_ot_layout_from_face (font->face)->gsub->get_lookup (lookup_index); @@ -717,11 +717,11 @@ hb_ot_layout_position_lookup (hb_font_t *font, hb_buffer_t *buffer, unsigned int lookup_index, hb_mask_t mask, - hb_bool_t auto_joiners) + hb_bool_t auto_zwj) { if (unlikely (lookup_index >= hb_ot_layout_from_face (font->face)->gpos_lookup_count)) return false; - OT::hb_apply_context_t c (1, font, buffer, mask, auto_joiners); + OT::hb_apply_context_t c (1, font, buffer, mask, auto_zwj); const OT::PosLookup& l = hb_ot_layout_from_face (font->face)->gpos->get_lookup (lookup_index); diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout.h index 134f1a6c164..134f1a6c164 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-layout.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-layout.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-map-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-map-private.hh index 942e9f4aa6f..a679fb5990e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-map-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-map-private.hh @@ -50,7 +50,7 @@ struct hb_ot_map_t hb_mask_t mask; hb_mask_t _1_mask; /* mask for value=1, for quick access */ unsigned int needs_fallback : 1; - unsigned int auto_joiners : 1; + unsigned int auto_zwj : 1; static int cmp (const feature_map_t *a, const feature_map_t *b) { return a->tag < b->tag ? -1 : a->tag > b->tag ? 1 : 0; } @@ -58,7 +58,7 @@ struct hb_ot_map_t struct lookup_map_t { unsigned short index; - unsigned short auto_joiners : 1; + unsigned short auto_zwj : 1; hb_mask_t mask; static int cmp (const lookup_map_t *a, const lookup_map_t *b) @@ -139,7 +139,7 @@ struct hb_ot_map_t unsigned int table_index, unsigned int feature_index, hb_mask_t mask, - bool auto_joiners); + bool auto_zwj); hb_mask_t global_mask; @@ -152,8 +152,10 @@ enum hb_ot_map_feature_flags_t { F_NONE = 0x0000, F_GLOBAL = 0x0001, F_HAS_FALLBACK = 0x0002, - F_MANUAL_JOINERS = 0x0004 + F_MANUAL_ZWJ = 0x0004 }; +/* Macro version for where const is desired. */ +#define F_COMBINE(l,r) (hb_ot_map_feature_flags_t ((unsigned int) (l) | (unsigned int) (r))) inline hb_ot_map_feature_flags_t operator | (hb_ot_map_feature_flags_t l, hb_ot_map_feature_flags_t r) { return hb_ot_map_feature_flags_t ((unsigned int) l | (unsigned int) r); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-map.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-map.cc index 28a43a4dd2f..85e6e16375a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-map.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-map.cc @@ -34,7 +34,7 @@ hb_ot_map_t::add_lookups (hb_face_t *face, unsigned int table_index, unsigned int feature_index, hb_mask_t mask, - bool auto_joiners) + bool auto_zwj) { unsigned int lookup_indices[32]; unsigned int offset, len; @@ -54,7 +54,7 @@ hb_ot_map_t::add_lookups (hb_face_t *face, return; lookup->mask = mask; lookup->index = lookup_indices[i]; - lookup->auto_joiners = auto_joiners; + lookup->auto_zwj = auto_zwj; } offset += len; @@ -113,7 +113,7 @@ void hb_ot_map_t::substitute (const hb_ot_shape_plan_t *plan, hb_font_t *font, h hb_ot_layout_substitute_lookup (font, buffer, lookups[table_index][i].index, lookups[table_index][i].mask, - lookups[table_index][i].auto_joiners); + lookups[table_index][i].auto_zwj); buffer->clear_output (); @@ -124,7 +124,7 @@ void hb_ot_map_t::substitute (const hb_ot_shape_plan_t *plan, hb_font_t *font, h for (; i < lookups[table_index].len; i++) hb_ot_layout_substitute_lookup (font, buffer, lookups[table_index][i].index, lookups[table_index][i].mask, - lookups[table_index][i].auto_joiners); + lookups[table_index][i].auto_zwj); } void hb_ot_map_t::position (const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer) const @@ -137,7 +137,7 @@ void hb_ot_map_t::position (const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_ for (; i < pause->num_lookups; i++) hb_ot_layout_position_lookup (font, buffer, lookups[table_index][i].index, lookups[table_index][i].mask, - lookups[table_index][i].auto_joiners); + lookups[table_index][i].auto_zwj); if (pause->callback) pause->callback (plan, font, buffer); @@ -146,7 +146,7 @@ void hb_ot_map_t::position (const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_ for (; i < lookups[table_index].len; i++) hb_ot_layout_position_lookup (font, buffer, lookups[table_index][i].index, lookups[table_index][i].mask, - lookups[table_index][i].auto_joiners); + lookups[table_index][i].auto_zwj); } void hb_ot_map_t::collect_lookups (unsigned int table_index, hb_set_t *lookups_out) const @@ -243,7 +243,7 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m) map->index[1] = feature_index[1]; map->stage[0] = info->stage[0]; map->stage[1] = info->stage[1]; - map->auto_joiners = !(info->flags & F_MANUAL_JOINERS); + map->auto_zwj = !(info->flags & F_MANUAL_ZWJ); if ((info->flags & F_GLOBAL) && info->max_value == 1) { /* Uses the global bit */ map->shift = 0; @@ -286,7 +286,7 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m) m.add_lookups (face, table_index, m.features[i].index[table_index], m.features[i].mask, - m.features[i].auto_joiners); + m.features[i].auto_zwj); /* Sort lookups and merge duplicates */ if (last_num_lookups < m.lookups[table_index].len) @@ -300,7 +300,7 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m) else { m.lookups[table_index][j].mask |= m.lookups[table_index][i].mask; - m.lookups[table_index][j].auto_joiners &= m.lookups[table_index][i].auto_joiners; + m.lookups[table_index][j].auto_zwj &= m.lookups[table_index][i].auto_zwj; } m.lookups[table_index].shrink (j + 1); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-maxp-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-maxp-table.hh index 0ce3ebcc2a6..0ce3ebcc2a6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-maxp-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-maxp-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-name-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-name-table.hh index 75a1b94ea31..75a1b94ea31 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-name-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-name-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-arabic-fallback.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-arabic-fallback.hh index 6f8e9510fe3..5e151f75704 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-arabic-fallback.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-arabic-fallback.hh @@ -244,7 +244,7 @@ arabic_fallback_plan_shape (arabic_fallback_plan_t *fallback_plan, { for (unsigned int i = 0; i < ARABIC_NUM_FALLBACK_FEATURES; i++) if (fallback_plan->lookup_array[i]) { - OT::hb_apply_context_t c (0, font, buffer, fallback_plan->mask_array[i], true/*auto_joiners*/); + OT::hb_apply_context_t c (0, font, buffer, fallback_plan->mask_array[i], true/*auto_zwj*/); fallback_plan->lookup_array[i]->apply_string (&c, &fallback_plan->digest_array[i]); } } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-arabic-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-arabic-table.hh index 730a275bf0a..730a275bf0a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-arabic-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-arabic-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-arabic.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-arabic.cc index 18b3d02dc00..18b3d02dc00 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-arabic.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-arabic.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-default.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-default.cc index fad57f65e4a..fad57f65e4a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-default.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-default.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-indic-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-indic-machine.hh index 9bae3a3b8c3..9bae3a3b8c3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-indic-machine.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-indic-machine.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-indic-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-indic-machine.rl index f9f07d801d9..f9f07d801d9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-indic-machine.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-indic-machine.rl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-indic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-indic-private.hh index 39268b14533..39268b14533 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-indic-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-indic-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-indic-table.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-indic-table.cc index 18a022bc507..18a022bc507 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-indic-table.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-indic-table.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-indic.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-indic.cc index 0beddc81989..eb1e0be9def 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-indic.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-indic.cc @@ -339,18 +339,18 @@ indic_features[] = * Basic features. * These features are applied in order, one at a time, after initial_reordering. */ - {HB_TAG('n','u','k','t'), F_MANUAL_JOINERS | F_GLOBAL}, - {HB_TAG('a','k','h','n'), F_MANUAL_JOINERS | F_GLOBAL}, - {HB_TAG('r','p','h','f'), F_MANUAL_JOINERS}, - {HB_TAG('r','k','r','f'), F_MANUAL_JOINERS | F_GLOBAL}, - {HB_TAG('p','r','e','f'), F_MANUAL_JOINERS}, - {HB_TAG('b','l','w','f'), F_MANUAL_JOINERS}, - {HB_TAG('h','a','l','f'), F_MANUAL_JOINERS}, - {HB_TAG('a','b','v','f'), F_MANUAL_JOINERS}, - {HB_TAG('p','s','t','f'), F_MANUAL_JOINERS}, - {HB_TAG('c','f','a','r'), F_MANUAL_JOINERS}, - {HB_TAG('v','a','t','u'), F_MANUAL_JOINERS | F_GLOBAL}, - {HB_TAG('c','j','c','t'), F_MANUAL_JOINERS | F_GLOBAL}, + {HB_TAG('n','u','k','t'), F_GLOBAL}, + {HB_TAG('a','k','h','n'), F_GLOBAL}, + {HB_TAG('r','p','h','f'), F_NONE}, + {HB_TAG('r','k','r','f'), F_GLOBAL}, + {HB_TAG('p','r','e','f'), F_NONE}, + {HB_TAG('b','l','w','f'), F_NONE}, + {HB_TAG('h','a','l','f'), F_NONE}, + {HB_TAG('a','b','v','f'), F_NONE}, + {HB_TAG('p','s','t','f'), F_NONE}, + {HB_TAG('c','f','a','r'), F_NONE}, + {HB_TAG('v','a','t','u'), F_GLOBAL}, + {HB_TAG('c','j','c','t'), F_GLOBAL}, /* * Other features. * These features are applied all at once, after final_reordering. @@ -428,12 +428,12 @@ collect_features_indic (hb_ot_shape_planner_t *plan) unsigned int i = 0; map->add_gsub_pause (initial_reordering); for (; i < INDIC_BASIC_FEATURES; i++) { - map->add_feature (indic_features[i].tag, 1, indic_features[i].flags); + map->add_feature (indic_features[i].tag, 1, indic_features[i].flags | F_MANUAL_ZWJ); map->add_gsub_pause (NULL); } map->add_gsub_pause (final_reordering); for (; i < INDIC_NUM_FEATURES; i++) { - map->add_feature (indic_features[i].tag, 1, indic_features[i].flags); + map->add_feature (indic_features[i].tag, 1, indic_features[i].flags | F_MANUAL_ZWJ); } } @@ -457,10 +457,10 @@ struct would_substitute_feature_t &lookups, &count); } - inline bool would_substitute (hb_codepoint_t *glyphs, - unsigned int glyphs_count, - bool zero_context, - hb_face_t *face) const + inline bool would_substitute (const hb_codepoint_t *glyphs, + unsigned int glyphs_count, + bool zero_context, + hb_face_t *face) const { for (unsigned int i = 0; i < count; i++) if (hb_ot_layout_lookup_would_substitute_fast (face, lookups[i].index, glyphs, glyphs_count, zero_context)) @@ -546,13 +546,30 @@ data_destroy_indic (void *data) static indic_position_t consonant_position_from_face (const indic_shape_plan_t *indic_plan, - hb_codepoint_t *glyphs, unsigned int glyphs_len, - hb_face_t *face) + const hb_codepoint_t glyphs[2], + hb_face_t *face) { + /* For old-spec, the order of glyphs is Consonant,Virama, + * whereas for new-spec, it's Virama,Consonant. However, + * some broken fonts (like Free Sans) simply copied lookups + * from old-spec to new-spec without modification. + * And oddly enough, Uniscribe seems to respect those lookups. + * Eg. in the sequence U+0924,U+094D,U+0930, Uniscribe finds + * base at 0. The font however, only has lookups matching + * 930,94D in 'blwf', not the expected 94D,930 (with new-spec + * table). As such, we simply match both sequences. Seems + * to work. */ bool zero_context = indic_plan->is_old_spec ? false : true; - if (indic_plan->pref.would_substitute (glyphs, glyphs_len, zero_context, face)) return POS_BELOW_C; - if (indic_plan->blwf.would_substitute (glyphs, glyphs_len, zero_context, face)) return POS_BELOW_C; - if (indic_plan->pstf.would_substitute (glyphs, glyphs_len, zero_context, face)) return POS_POST_C; + hb_codepoint_t glyphs_r[2] = {glyphs[1], glyphs[0]}; + if (indic_plan->pref.would_substitute (glyphs , 2, zero_context, face) || + indic_plan->pref.would_substitute (glyphs_r, 2, zero_context, face)) + return POS_POST_C; + if (indic_plan->blwf.would_substitute (glyphs , 2, zero_context, face) || + indic_plan->blwf.would_substitute (glyphs_r, 2, zero_context, face)) + return POS_BELOW_C; + if (indic_plan->pstf.would_substitute (glyphs , 2, zero_context, face) || + indic_plan->pstf.would_substitute (glyphs_r, 2, zero_context, face)) + return POS_POST_C; return POS_BASE_C; } @@ -610,16 +627,15 @@ update_consonant_positions (const hb_ot_shape_plan_t *plan, { const indic_shape_plan_t *indic_plan = (const indic_shape_plan_t *) plan->data; - unsigned int consonant_pos = indic_plan->is_old_spec ? 0 : 1; hb_codepoint_t glyphs[2]; - if (indic_plan->get_virama_glyph (font, &glyphs[1 - consonant_pos])) + if (indic_plan->get_virama_glyph (font, &glyphs[0])) { hb_face_t *face = font->face; unsigned int count = buffer->len; for (unsigned int i = 0; i < count; i++) if (buffer->info[i].indic_position() == POS_BASE_C) { - glyphs[consonant_pos] = buffer->info[i].codepoint; - buffer->info[i].indic_position() = consonant_position_from_face (indic_plan, glyphs, 2, face); + glyphs[1] = buffer->info[i].codepoint; + buffer->info[i].indic_position() = consonant_position_from_face (indic_plan, glyphs, face); } } } @@ -717,7 +733,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan, * * IMPLEMENTATION NOTES: * - * Our pre-base reordering Ra's are marked POS_BELOW, so will be skipped + * Our pre-base reordering Ra's are marked POS_POST_C, so will be skipped * by the logic above already. */ @@ -1005,7 +1021,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan, /* ZWJ/ZWNJ should disable CJCT. They do that by simply * being there, since we don't skip them for the CJCT - * feature (ie. F_MANUAL_JOINERS) */ + * feature (ie. F_MANUAL_ZWJ) */ /* A ZWNJ disables HALF. */ if (non_joiner) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-myanmar-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-myanmar-machine.hh index 797bfc5bea0..797bfc5bea0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-myanmar-machine.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-myanmar-machine.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-myanmar-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-myanmar-machine.rl index 51d42dd64ab..51d42dd64ab 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-myanmar-machine.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-myanmar-machine.rl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-myanmar.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-myanmar.cc index 8491047b712..ff13bdd1ebe 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-myanmar.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-myanmar.cc @@ -92,12 +92,12 @@ collect_features_myanmar (hb_ot_shape_planner_t *plan) map->add_gsub_pause (initial_reordering); for (unsigned int i = 0; i < ARRAY_LENGTH (basic_features); i++) { - map->add_feature (basic_features[i], 1, F_GLOBAL | F_MANUAL_JOINERS); + map->add_feature (basic_features[i], 1, F_GLOBAL | F_MANUAL_ZWJ); map->add_gsub_pause (NULL); } map->add_gsub_pause (final_reordering); for (unsigned int i = 0; i < ARRAY_LENGTH (other_features); i++) - map->add_feature (other_features[i], 1, F_GLOBAL); + map->add_feature (other_features[i], 1, F_GLOBAL | F_MANUAL_ZWJ); } static void diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-private.hh index 3c9922dc905..3c9922dc905 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-sea-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-sea-machine.hh index 86b7ae7d5ca..86b7ae7d5ca 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-sea-machine.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-sea-machine.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-sea-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-sea-machine.rl index 46140fc4d5f..46140fc4d5f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-sea-machine.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-sea-machine.rl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-sea.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-sea.cc index 94386588f70..9c0c303e3df 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-sea.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-sea.cc @@ -93,12 +93,12 @@ collect_features_sea (hb_ot_shape_planner_t *plan) map->add_gsub_pause (initial_reordering); for (unsigned int i = 0; i < ARRAY_LENGTH (basic_features); i++) { - map->add_feature (basic_features[i], 1, F_GLOBAL | F_MANUAL_JOINERS); + map->add_feature (basic_features[i], 1, F_GLOBAL | F_MANUAL_ZWJ); map->add_gsub_pause (NULL); } map->add_gsub_pause (final_reordering); for (unsigned int i = 0; i < ARRAY_LENGTH (other_features); i++) - map->add_feature (other_features[i], 1, F_GLOBAL); + map->add_feature (other_features[i], 1, F_GLOBAL | F_MANUAL_ZWJ); } static void diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-thai.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-thai.cc index 5cbb6e391c2..5cbb6e391c2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-complex-thai.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-complex-thai.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-fallback-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-fallback-private.hh index ec653513f1b..ec653513f1b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-fallback-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-fallback-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-fallback.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-fallback.cc index afe0f392cc7..3341825449b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-fallback.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-fallback.cc @@ -420,7 +420,7 @@ _hb_ot_shape_fallback_kern (const hb_ot_shape_plan_t *plan, hb_mask_t kern_mask = plan->map.get_1_mask (HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction) ? HB_TAG ('k','e','r','n') : HB_TAG ('v','k','r','n')); - OT::hb_apply_context_t c (1, font, buffer, kern_mask, true/*auto_joiners*/); + OT::hb_apply_context_t c (1, font, buffer, kern_mask, true/*auto_zwj*/); c.set_lookup_props (OT::LookupFlag::IgnoreMarks); for (buffer->idx = 0; buffer->idx < count;) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-normalize-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-normalize-private.hh index 8112f03aee9..8112f03aee9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-normalize-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-normalize-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-normalize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-normalize.cc index 344c0ff8497..344c0ff8497 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-normalize.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-normalize.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-private.hh index 9599f8e722c..9599f8e722c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape.cc index f65861f959f..f65861f959f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-shape.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-tag.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-tag.cc index 91ebec76ee3..91ebec76ee3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-tag.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-tag.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-tag.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-tag.h index 1bf12ab3c09..1bf12ab3c09 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot-tag.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot-tag.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot.h index 80739063991..80739063991 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ot.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ot.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-private.hh index 15e4f5f6920..ff1e85d8d0f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-private.hh @@ -376,6 +376,14 @@ struct hb_prealloced_array_t } }; +#define HB_AUTO_ARRAY_PREALLOCED 64 +template <typename Type> +struct hb_auto_array_t : hb_prealloced_array_t <Type, HB_AUTO_ARRAY_PREALLOCED> +{ + hb_auto_array_t (void) { hb_prealloced_array_t<Type, HB_AUTO_ARRAY_PREALLOCED>::init (); } + ~hb_auto_array_t (void) { hb_prealloced_array_t<Type, HB_AUTO_ARRAY_PREALLOCED>::finish (); } +}; + #define HB_LOCKABLE_SET_INIT {HB_PREALLOCED_ARRAY_INIT} template <typename item_t, typename lock_t> @@ -516,10 +524,12 @@ static inline uint32_t hb_uint32_swap (const uint32_t v) /* ASCII tag/character handling */ -static inline unsigned char ISALPHA (unsigned char c) +static inline bool ISALPHA (unsigned char c) { return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); } -static inline unsigned char ISALNUM (unsigned char c) +static inline bool ISALNUM (unsigned char c) { return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9'); } +static inline bool ISSPACE (unsigned char c) +{ return c == ' ' || c =='\f'|| c =='\n'|| c =='\r'|| c =='\t'|| c =='\v'; } static inline unsigned char TOUPPER (unsigned char c) { return (c >= 'a' && c <= 'z') ? c - 'a' + 'A' : c; } static inline unsigned char TOLOWER (unsigned char c) @@ -594,6 +604,8 @@ _hb_debug_msg_va (const char *what, if (func) { + unsigned int func_len = strlen (func); +#ifndef HB_DEBUG_VERBOSE /* Skip "typename" */ if (0 == strncmp (func, "typename ", 9)) func += 9; @@ -603,7 +615,9 @@ _hb_debug_msg_va (const char *what, func = space + 1; /* Skip parameter list */ const char *paren = strchr (func, '('); - unsigned int func_len = paren ? paren - func : strlen (func); + if (paren) + func_len = paren - func; +#endif fprintf (stderr, "%.*s: ", func_len, func); } @@ -841,8 +855,9 @@ hb_codepoint_parse (const char *s, unsigned int len, int base, hb_codepoint_t *o { /* Pain because we don't know whether s is nul-terminated. */ char buf[64]; - strncpy (buf, s, MIN (ARRAY_LENGTH (buf) - 1, len)); - buf[MIN (ARRAY_LENGTH (buf) - 1, len)] = '\0'; + len = MIN (ARRAY_LENGTH (buf) - 1, len); + strncpy (buf, s, len); + buf[len] = '\0'; char *end; errno = 0; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-set-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-set-private.hh index 5e30a7e3616..5e30a7e3616 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-set-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-set-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-set.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-set.cc index 5f427a5d8e0..5f427a5d8e0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-set.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-set.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-set.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-set.h index 291e24974e6..291e24974e6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-set.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-set.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shape-plan-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shape-plan-private.hh index dd014e38d01..dd014e38d01 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shape-plan-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shape-plan-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shape-plan.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shape-plan.cc index a6d2d262100..a6d2d262100 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shape-plan.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shape-plan.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shape-plan.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shape-plan.h index 8f54552f90b..8f54552f90b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shape-plan.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shape-plan.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shape.cc index 7d748d7d3c8..67ef7e6a8f5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shape.cc @@ -38,10 +38,8 @@ static void parse_space (const char **pp, const char *end) { char c; -#define ISSPACE(c) ((c)==' '||(c)=='\f'||(c)=='\n'||(c)=='\r'||(c)=='\t'||(c)=='\v') while (*pp < end && (c = **pp, ISSPACE (c))) (*pp)++; -#undef ISSPACE } static hb_bool_t @@ -60,16 +58,19 @@ static hb_bool_t parse_uint (const char **pp, const char *end, unsigned int *pv) { char buf[32]; - strncpy (buf, *pp, end - *pp); - buf[ARRAY_LENGTH (buf) - 1] = '\0'; + unsigned int len = MIN (ARRAY_LENGTH (buf) - 1, (unsigned int) (end - *pp)); + strncpy (buf, *pp, len); + buf[len] = '\0'; char *p = buf; char *pend = p; unsigned int v; + /* Intentionally use strtol instead of strtoul, such that + * -1 turns into "big number"... */ + errno = 0; v = strtol (p, &pend, 0); - - if (p == pend) + if (errno || p == pend) return false; *pv = v; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shape.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shape.h index 10a35cb517e..10a35cb517e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shape.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shape.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shaper-impl-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shaper-impl-private.hh index 7844081e95b..7844081e95b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shaper-impl-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shaper-impl-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shaper-list.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shaper-list.hh index b9c029e58f1..b9c029e58f1 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shaper-list.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shaper-list.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shaper-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shaper-private.hh index 29c4493943d..29c4493943d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shaper-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shaper-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shaper.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shaper.cc index 44f718aa702..44f718aa702 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-shaper.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-shaper.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-tt-font.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-tt-font.cc index c503a404380..c503a404380 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-tt-font.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-tt-font.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ucdn.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ucdn.cc index 61e6ad36229..61e6ad36229 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-ucdn.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-ucdn.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-unicode-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-unicode-private.hh index 724c6f94ed9..155a8a350b7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-unicode-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-unicode-private.hh @@ -129,6 +129,11 @@ HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS_SIMPLE * be. That has been reported to the Unicode Technical Committee for * consideration. As such, we include it here, since Uniscribe removes it. * + * Note: While U+115F and U+1160 are Default_Ignorable, we do NOT want to + * hide them, as the way Uniscribe has implemented them is with regular + * spacing glyphs, and that's the way fonts are made to work. As such, + * we make exceptions for those two. + * * Gathered from: * http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:DI:]&abb=on&ucd=on&esc=on * @@ -141,8 +146,8 @@ HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS_SIMPLE * * 00AD ;SOFT HYPHEN * 034F ;COMBINING GRAPHEME JOINER - * 115F ;HANGUL CHOSEONG FILLER - * 1160 ;HANGUL JUNGSEONG FILLER + * #115F ;HANGUL CHOSEONG FILLER + * #1160 ;HANGUL JUNGSEONG FILLER * 17B4 ;KHMER VOWEL INHERENT AQ * 17B5 ;KHMER VOWEL INHERENT AA * 180B..180D ;MONGOLIAN FREE VARIATION SELECTOR THREE @@ -168,7 +173,6 @@ HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS_SIMPLE switch (page) { case 0x00: return unlikely (ch == 0x00AD); case 0x03: return unlikely (ch == 0x034F); - case 0x11: return hb_in_range<hb_codepoint_t> (ch, 0x115F, 0x1160); case 0x17: return hb_in_range<hb_codepoint_t> (ch, 0x17B4, 0x17B5); case 0x18: return hb_in_range<hb_codepoint_t> (ch, 0x180B, 0x180E); case 0x20: return hb_in_ranges<hb_codepoint_t> (ch, 0x200B, 0x200F, diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-unicode.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-unicode.cc index 0a3907eec8c..0a3907eec8c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-unicode.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-unicode.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-unicode.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-unicode.h index 2e10d98a3b3..2e10d98a3b3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-unicode.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-unicode.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-uniscribe.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-uniscribe.cc index 2f01c28778f..2f01c28778f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-uniscribe.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-uniscribe.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-uniscribe.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-uniscribe.h index 51887c8794b..51887c8794b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-uniscribe.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-uniscribe.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-utf-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-utf-private.hh index b9a6519d28e..b9a6519d28e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-utf-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-utf-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-version.h.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-version.h.in index 43634f91ce8..43634f91ce8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-version.h.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-version.h.in diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-warning.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-warning.cc index 4f1f65f5a21..4f1f65f5a21 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb-warning.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb-warning.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb.h index 52c479cc2e5..52c479cc2e5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/hb.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/hb.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/main.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/main.cc index b362744e213..b362744e213 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/main.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/main.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/test-buffer-serialize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/test-buffer-serialize.cc new file mode 100644 index 00000000000..3577dbf688e --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/test-buffer-serialize.cc @@ -0,0 +1,126 @@ +/* + * Copyright © 2010,2011,2013 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "hb.h" +#ifdef HAVE_FREETYPE +#include "hb-ft.h" +#endif + +#ifdef HAVE_GLIB +#include <glib.h> +#endif +#include <stdlib.h> +#include <stdio.h> + +int +main (int argc, char **argv) +{ + hb_blob_t *blob = NULL; + + if (argc != 2) { + fprintf (stderr, "usage: %s font-file\n", argv[0]); + exit (1); + } + + /* Create the blob */ + { + const char *font_data; + unsigned int len; + hb_destroy_func_t destroy; + void *user_data; + hb_memory_mode_t mm; + +#ifdef HAVE_GLIB + GMappedFile *mf = g_mapped_file_new (argv[1], false, NULL); + font_data = g_mapped_file_get_contents (mf); + len = g_mapped_file_get_length (mf); + destroy = (hb_destroy_func_t) g_mapped_file_unref; + user_data = (void *) mf; + mm = HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE; +#else + FILE *f = fopen (argv[1], "rb"); + fseek (f, 0, SEEK_END); + len = ftell (f); + fseek (f, 0, SEEK_SET); + font_data = (const char *) malloc (len); + if (!font_data) len = 0; + len = fread ((char *) font_data, 1, len, f); + destroy = free; + user_data = (void *) font_data; + fclose (f); + mm = HB_MEMORY_MODE_WRITABLE; +#endif + + blob = hb_blob_create (font_data, len, mm, user_data, destroy); + } + + hb_face_t *face = hb_face_create (blob, 0 /* first face */); + hb_blob_destroy (blob); + blob = NULL; + + unsigned int upem = hb_face_get_upem (face); + hb_font_t *font = hb_font_create (face); + hb_face_destroy (face); + hb_font_set_scale (font, upem, upem); +#ifdef HAVE_FREETYPE + hb_ft_font_set_funcs (font); +#endif + + hb_buffer_t *buf; + buf = hb_buffer_create (); + + bool ret = true; + char line[BUFSIZ], out[BUFSIZ]; + while (fgets (line, sizeof(line), stdin) != 0) + { + hb_buffer_clear_contents (buf); + + const char *p = line; + while (hb_buffer_deserialize_glyphs (buf, + p, -1, &p, + font, + HB_BUFFER_SERIALIZE_FORMAT_JSON)) + ; + if (*p && *p != '\n') + ret = false; + + hb_buffer_serialize_glyphs (buf, 0, hb_buffer_get_length (buf), + out, sizeof (out), NULL, + font, HB_BUFFER_SERIALIZE_FORMAT_JSON, + HB_BUFFER_SERIALIZE_FLAGS_DEFAULT); + puts (out); + } + + hb_buffer_destroy (buf); + + hb_font_destroy (font); + + return !ret; +} diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/test-size-params.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/test-size-params.cc index 947b5669a14..947b5669a14 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/test-size-params.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/test-size-params.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/test-would-substitute.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/test-would-substitute.cc index 4731e265607..4731e265607 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/test-would-substitute.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/test-would-substitute.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/test.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/test.cc index 22108b86b7a..22108b86b7a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.13/src/test.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.14/src/test.cc diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac index 72db834324a..0a42008254c 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.13]) +m4_define([harfbuzz_version], [0.9.14]) |