summaryrefslogtreecommitdiff
path: root/Build/source
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2013-09-10 07:50:23 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2013-09-10 07:50:23 +0000
commit860a5056b2825e4aaaab68c050ada97bf9ef1058 (patch)
treefa9cb9c57fd23a33b6efa6266d517c39d7d45522 /Build/source
parent0ab95e7fbceec8d2523a6c8f60de39cfb1a67294 (diff)
harfbuzz 0.9.20
git-svn-id: svn://tug.org/texlive/trunk@31616 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source')
-rw-r--r--Build/source/libs/harfbuzz/ChangeLog5
-rw-r--r--Build/source/libs/harfbuzz/Makefile.am2
-rw-r--r--Build/source/libs/harfbuzz/Makefile.in11
-rwxr-xr-xBuild/source/libs/harfbuzz/configure32
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-common.h317
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-coretext.cc352
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20-PATCHES/ChangeLog (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19-PATCHES/ChangeLog)5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20-PATCHES/TL-Changes (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19-PATCHES/TL-Changes)5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/AUTHORS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/AUTHORS)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/Android.mk (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/Android.mk)1
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/ChangeLog (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/ChangeLog)672
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/Makefile.am (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/Makefile.am)9
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/NEWS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/NEWS)48
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/README (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/README)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/THANKS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/THANKS)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/TODO (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/TODO)8
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.20/autogen.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/autogen.sh)7
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/config.h.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/config.h.in)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/configure.ac (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/configure.ac)55
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/gtk-doc.make302
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/harfbuzz.doap (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/harfbuzz.doap)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/Makefile.am (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/Makefile.am)114
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-c-linkage-decls.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-c-linkage-decls.sh)4
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-header-guards.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-header-guards.sh)4
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-includes.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-includes.sh)14
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-libstdc++.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-libstdc++.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-static-inits.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-static-inits.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-symbols.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-symbols.sh)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.20/src/gen-arabic-table.py (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/gen-arabic-table.py)0
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-0.9.20/src/gen-indic-table.py (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/gen-indic-table.py)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/harfbuzz-gobject.pc.in12
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/harfbuzz-icu.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/harfbuzz-icu.pc.in)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/harfbuzz.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/harfbuzz.pc.in)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-atomic-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-atomic-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-blob.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-blob.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-blob.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-blob.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-deserialize-json.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-deserialize-json.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-deserialize-json.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-deserialize-json.rl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-deserialize-text.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-deserialize-text.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-deserialize-text.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-deserialize-text.rl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-serialize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-serialize.cc)14
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer.cc)4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer.h)8
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-cache-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-cache-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-common.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-common.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-common.h333
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-coretext.cc757
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-coretext.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-coretext.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-deprecated.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-gobject-structs.cc)56
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-face-private.hh108
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-face.cc311
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-face.h117
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-fallback-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-fallback-shape.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-font-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-font-private.hh)76
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-font.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-font.cc)269
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-font.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-font.h)75
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ft.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ft.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ft.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ft.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-glib.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-glib.cc)2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-glib.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-glib.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-enums.cc.tmpl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-gobject-enums.cc.tmpl)11
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-enums.h.tmpl55
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-structs.cc113
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-structs.h87
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-gobject.h)37
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-graphite2.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-graphite2.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-graphite2.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-graphite2.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-icu-le.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-icu-le.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-icu.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-icu.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-icu.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-icu.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-mutex-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-mutex-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-object-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-object-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-old.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-old.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-open-file-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-open-file-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-open-type-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-open-type-private.hh)10
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-head-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-head-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-hhea-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-hhea-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-hmtx-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-hmtx-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-common-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-common-private.hh)41
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-gdef-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-gdef-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-gpos-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-gpos-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-gsub-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-gsub-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-gsubgpos-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-gsubgpos-private.hh)12
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-map-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-map-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-map.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-map.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-maxp-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-maxp-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-name-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-name-table.hh)4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-arabic-fallback.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-arabic-fallback.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-arabic-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-arabic-table.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-arabic.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-arabic.cc)1
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-default.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-default.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-indic-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-indic-machine.hh)12
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-indic-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-indic-machine.rl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-indic-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-indic-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-indic-table.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-indic-table.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-indic.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-indic.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-myanmar-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-myanmar-machine.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-myanmar-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-myanmar-machine.rl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-myanmar.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-myanmar.cc)11
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-private.hh)2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-sea-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-sea-machine.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-sea-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-sea-machine.rl)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-sea.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-sea.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-thai.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-thai.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-fallback-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-fallback-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-fallback.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-fallback.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-normalize-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-normalize-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-normalize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-normalize.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape.cc)9
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-tag.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-tag.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-tag.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-tag.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-private.hh)14
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-set-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-set-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-set.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-set.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-set.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-set.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shape-plan-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shape-plan-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shape-plan.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shape-plan.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shape-plan.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shape-plan.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shape.cc)6
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shape.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shape.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shaper-impl-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shaper-impl-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shaper-list.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shaper-list.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shaper-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shaper-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shaper.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shaper.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-tt-font.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-tt-font.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ucdn.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ucdn.cc)2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-unicode-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-unicode-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-unicode.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-unicode.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-unicode.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-unicode.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-uniscribe.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-uniscribe.cc)430
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-uniscribe.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-uniscribe.h)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-utf-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-utf-private.hh)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-version.h.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-version.h.in)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-warning.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-warning.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb.h)2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/main.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/main.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/test-buffer-serialize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/test-buffer-serialize.cc)2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/test-size-params.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/test-size-params.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/test-would-substitute.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/test-would-substitute.cc)0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/test.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/test.cc)0
-rw-r--r--Build/source/libs/harfbuzz/include/Makefile.am2
-rw-r--r--Build/source/libs/harfbuzz/include/Makefile.in1
-rw-r--r--Build/source/libs/harfbuzz/version.ac2
149 files changed, 3627 insertions, 1348 deletions
diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog
index ce3e5fbc727..cccf9a0fe1f 100644
--- a/Build/source/libs/harfbuzz/ChangeLog
+++ b/Build/source/libs/harfbuzz/ChangeLog
@@ -1,3 +1,8 @@
+2013-09-10 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Import harfbuzz-0.9.20.
+ * version.ac, Makefile.am, include/Makefile.am: Adjust.
+
2013-09-01 Peter Breitenlohner <peb@mppmu.mpg.de>
* configure.ac: Drop LT_INIT, not using Libtool.
diff --git a/Build/source/libs/harfbuzz/Makefile.am b/Build/source/libs/harfbuzz/Makefile.am
index 5479ae821d5..cf753bdb8f4 100644
--- a/Build/source/libs/harfbuzz/Makefile.am
+++ b/Build/source/libs/harfbuzz/Makefile.am
@@ -40,6 +40,8 @@ libharfbuzz_a_SOURCES = \
@HARFBUZZ_TREE@/src/hb-buffer.cc \
@HARFBUZZ_TREE@/src/hb-cache-private.hh \
@HARFBUZZ_TREE@/src/hb-common.cc \
+ @HARFBUZZ_TREE@/src/hb-face-private.hh \
+ @HARFBUZZ_TREE@/src/hb-face.cc \
@HARFBUZZ_TREE@/src/hb-fallback-shape.cc \
@HARFBUZZ_TREE@/src/hb-font-private.hh \
@HARFBUZZ_TREE@/src/hb-font.cc \
diff --git a/Build/source/libs/harfbuzz/Makefile.in b/Build/source/libs/harfbuzz/Makefile.in
index 0299064e762..86e6cb3193e 100644
--- a/Build/source/libs/harfbuzz/Makefile.in
+++ b/Build/source/libs/harfbuzz/Makefile.in
@@ -83,7 +83,7 @@ DIST_COMMON = $(srcdir)/../../am/reconfig.am \
$(srcdir)/../../am/rebuild.am $(srcdir)/Makefile.in \
$(srcdir)/Makefile.am $(top_srcdir)/configure \
$(am__configure_deps) $(srcdir)/config.h.in \
- $(top_srcdir)/harfbuzz-0.9.19/src/hb-version.h.in \
+ $(top_srcdir)/harfbuzz-0.9.20/src/hb-version.h.in \
$(am__dist_check_SCRIPTS_DIST) \
$(top_srcdir)/../../build-aux/depcomp \
$(top_srcdir)/../../build-aux/test-driver ChangeLog \
@@ -129,6 +129,7 @@ am_libharfbuzz_a_OBJECTS = @HARFBUZZ_TREE@/src/hb-blob.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-buffer-serialize.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-buffer.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-common.$(OBJEXT) \
+ @HARFBUZZ_TREE@/src/hb-face.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-fallback-shape.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-font.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-ot-tag.$(OBJEXT) \
@@ -637,6 +638,8 @@ libharfbuzz_a_SOURCES = @HARFBUZZ_TREE@/src/hb-atomic-private.hh \
@HARFBUZZ_TREE@/src/hb-buffer.cc \
@HARFBUZZ_TREE@/src/hb-cache-private.hh \
@HARFBUZZ_TREE@/src/hb-common.cc \
+ @HARFBUZZ_TREE@/src/hb-face-private.hh \
+ @HARFBUZZ_TREE@/src/hb-face.cc \
@HARFBUZZ_TREE@/src/hb-fallback-shape.cc \
@HARFBUZZ_TREE@/src/hb-font-private.hh \
@HARFBUZZ_TREE@/src/hb-font.cc \
@@ -767,7 +770,7 @@ $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
distclean-hdr:
-rm -f config.h stamp-h1
-hb-version.h: $(top_builddir)/config.status $(top_srcdir)/harfbuzz-0.9.19/src/hb-version.h.in
+hb-version.h: $(top_builddir)/config.status $(top_srcdir)/harfbuzz-0.9.20/src/hb-version.h.in
cd $(top_builddir) && $(SHELL) ./config.status $@
clean-noinstLIBRARIES:
@@ -790,6 +793,9 @@ clean-noinstLIBRARIES:
@HARFBUZZ_TREE@/src/hb-common.$(OBJEXT): \
@HARFBUZZ_TREE@/src/$(am__dirstamp) \
@HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
+@HARFBUZZ_TREE@/src/hb-face.$(OBJEXT): \
+ @HARFBUZZ_TREE@/src/$(am__dirstamp) \
+ @HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
@HARFBUZZ_TREE@/src/hb-fallback-shape.$(OBJEXT): \
@HARFBUZZ_TREE@/src/$(am__dirstamp) \
@HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
@@ -888,6 +894,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-buffer-serialize.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-buffer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-common.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-face.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-fallback-shape.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-font.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-graphite2.Po@am__quote@
diff --git a/Build/source/libs/harfbuzz/configure b/Build/source/libs/harfbuzz/configure
index 1b8b4929cea..86937abfc60 100755
--- a/Build/source/libs/harfbuzz/configure
+++ b/Build/source/libs/harfbuzz/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 0.9.19.
+# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 0.9.20.
#
# Report bugs to <tex-k@tug.org>.
#
@@ -580,12 +580,12 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='harfbuzz (TeX Live)'
PACKAGE_TARNAME='harfbuzz--tex-live-'
-PACKAGE_VERSION='0.9.19'
-PACKAGE_STRING='harfbuzz (TeX Live) 0.9.19'
+PACKAGE_VERSION='0.9.20'
+PACKAGE_STRING='harfbuzz (TeX Live) 0.9.20'
PACKAGE_BUGREPORT='tex-k@tug.org'
PACKAGE_URL=''
-ac_unique_file="harfbuzz-0.9.19/src/harfbuzz.pc.in"
+ac_unique_file="harfbuzz-0.9.20/src/harfbuzz.pc.in"
# Factoring default headers for most tests.
ac_includes_default="\
#include <stdio.h>
@@ -1324,7 +1324,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures harfbuzz (TeX Live) 0.9.19 to adapt to many kinds of systems.
+\`configure' configures harfbuzz (TeX Live) 0.9.20 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1395,7 +1395,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of harfbuzz (TeX Live) 0.9.19:";;
+ short | recursive ) echo "Configuration of harfbuzz (TeX Live) 0.9.20:";;
esac
cat <<\_ACEOF
@@ -1508,7 +1508,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-harfbuzz (TeX Live) configure 0.9.19
+harfbuzz (TeX Live) configure 0.9.20
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1915,7 +1915,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by harfbuzz (TeX Live) $as_me 0.9.19, which was
+It was created by harfbuzz (TeX Live) $as_me 0.9.20, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3838,7 +3838,7 @@ fi
# Define the identity of the package.
PACKAGE='harfbuzz--tex-live-'
- VERSION='0.9.19'
+ VERSION='0.9.20'
cat >>confdefs.h <<_ACEOF
@@ -4040,8 +4040,8 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags
HB_VERSION_MAJOR=0
HB_VERSION_MINOR=9
-HB_VERSION_MICRO=19
-HB_VERSION=0.9.19
+HB_VERSION_MICRO=20
+HB_VERSION=0.9.20
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -6414,14 +6414,14 @@ $as_echo "#define HAVE_INTEL_ATOMIC_PRIMITIVES 1" >>confdefs.h
fi
-HARFBUZZ_TREE=harfbuzz-0.9.19
+HARFBUZZ_TREE=harfbuzz-0.9.20
if test -f $srcdir/$HARFBUZZ_TREE/src/hb-version.h; then
as_fn_error $? "Sorry, you must remove the file $HARFBUZZ_TREE/src/hb-version.h" "$LINENO" 5
fi
-ac_config_files="$ac_config_files Makefile include/Makefile hb-version.h:harfbuzz-0.9.19/src/hb-version.h.in"
+ac_config_files="$ac_config_files Makefile include/Makefile hb-version.h:harfbuzz-0.9.20/src/hb-version.h.in"
cat >confcache <<\_ACEOF
@@ -6970,7 +6970,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by harfbuzz (TeX Live) $as_me 0.9.19, which was
+This file was extended by harfbuzz (TeX Live) $as_me 0.9.20, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -7036,7 +7036,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-harfbuzz (TeX Live) config.status 0.9.19
+harfbuzz (TeX Live) config.status 0.9.20
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -7169,7 +7169,7 @@ do
"config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
- "hb-version.h") CONFIG_FILES="$CONFIG_FILES hb-version.h:harfbuzz-0.9.19/src/hb-version.h.in" ;;
+ "hb-version.h") CONFIG_FILES="$CONFIG_FILES hb-version.h:harfbuzz-0.9.20/src/hb-version.h.in" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-common.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-common.h
deleted file mode 100644
index cc221d33be9..00000000000
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-common.h
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- * Copyright © 2007,2008,2009 Red Hat, Inc.
- * Copyright © 2011,2012 Google, Inc.
- *
- * This is part of HarfBuzz, a text shaping library.
- *
- * Permission is hereby granted, without written agreement and without
- * license or royalty fees, to use, copy, modify, and distribute this
- * software and its documentation for any purpose, provided that the
- * above copyright notice and the following two paragraphs appear in
- * all copies of this software.
- *
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- *
- * Red Hat Author(s): Behdad Esfahbod
- * Google Author(s): Behdad Esfahbod
- */
-
-#ifndef HB_H_IN
-#error "Include <hb.h> instead."
-#endif
-
-#ifndef HB_COMMON_H
-#define HB_COMMON_H
-
-#ifndef HB_BEGIN_DECLS
-# ifdef __cplusplus
-# define HB_BEGIN_DECLS extern "C" {
-# define HB_END_DECLS }
-# else /* !__cplusplus */
-# define HB_BEGIN_DECLS
-# define HB_END_DECLS
-# endif /* !__cplusplus */
-#endif
-
-#if !defined (HB_DONT_DEFINE_STDINT)
-
-#if defined (_SVR4) || defined (SVR4) || defined (__OpenBSD__) || \
- defined (_sgi) || defined (__sun) || defined (sun) || \
- defined (__digital__) || defined (__HP_cc)
-# include <inttypes.h>
-#elif defined (_AIX)
-# include <sys/inttypes.h>
-/* VS 2010 (_MSC_VER 1600) has stdint.h */
-#elif defined (_MSC_VER) && _MSC_VER < 1600
-typedef __int8 int8_t;
-typedef unsigned __int8 uint8_t;
-typedef __int16 int16_t;
-typedef unsigned __int16 uint16_t;
-typedef __int32 int32_t;
-typedef unsigned __int32 uint32_t;
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-#else
-# include <stdint.h>
-#endif
-
-#endif
-
-HB_BEGIN_DECLS
-
-
-typedef int hb_bool_t;
-
-typedef uint32_t hb_codepoint_t;
-typedef int32_t hb_position_t;
-typedef uint32_t hb_mask_t;
-
-typedef union _hb_var_int_t {
- uint32_t u32;
- int32_t i32;
- uint16_t u16[2];
- int16_t i16[2];
- uint8_t u8[4];
- int8_t i8[4];
-} hb_var_int_t;
-
-
-/* hb_tag_t */
-
-typedef uint32_t hb_tag_t;
-
-#define HB_TAG(a,b,c,d) ((hb_tag_t)((((uint8_t)(a))<<24)|(((uint8_t)(b))<<16)|(((uint8_t)(c))<<8)|((uint8_t)(d))))
-#define HB_UNTAG(tag) ((uint8_t)((tag)>>24)), ((uint8_t)((tag)>>16)), ((uint8_t)((tag)>>8)), ((uint8_t)(tag))
-
-#define HB_TAG_NONE HB_TAG(0,0,0,0)
-
-/* len=-1 means str is NUL-terminated. */
-hb_tag_t
-hb_tag_from_string (const char *str, int len);
-
-/* buf should have 4 bytes. */
-void
-hb_tag_to_string (hb_tag_t tag, char *buf);
-
-
-/* hb_direction_t */
-
-typedef enum {
- HB_DIRECTION_INVALID = 0,
- HB_DIRECTION_LTR = 4,
- HB_DIRECTION_RTL,
- HB_DIRECTION_TTB,
- HB_DIRECTION_BTT
-} hb_direction_t;
-
-/* len=-1 means str is NUL-terminated */
-hb_direction_t
-hb_direction_from_string (const char *str, int len);
-
-const char *
-hb_direction_to_string (hb_direction_t direction);
-
-#define HB_DIRECTION_IS_HORIZONTAL(dir) ((((unsigned int) (dir)) & ~1U) == 4)
-#define HB_DIRECTION_IS_VERTICAL(dir) ((((unsigned int) (dir)) & ~1U) == 6)
-#define HB_DIRECTION_IS_FORWARD(dir) ((((unsigned int) (dir)) & ~2U) == 4)
-#define HB_DIRECTION_IS_BACKWARD(dir) ((((unsigned int) (dir)) & ~2U) == 5)
-#define HB_DIRECTION_IS_VALID(dir) ((((unsigned int) (dir)) & ~3U) == 4)
-#define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1)) /* Direction must be valid */
-
-
-/* hb_language_t */
-
-typedef struct hb_language_impl_t *hb_language_t;
-
-/* len=-1 means str is NUL-terminated */
-hb_language_t
-hb_language_from_string (const char *str, int len);
-
-const char *
-hb_language_to_string (hb_language_t language);
-
-#define HB_LANGUAGE_INVALID ((hb_language_t) NULL)
-
-hb_language_t
-hb_language_get_default (void);
-
-
-/* hb_script_t */
-
-/* http://unicode.org/iso15924/ */
-/* http://goo.gl/x9ilM */
-/* Unicode Character Database property: Script (sc) */
-typedef enum
-{
- /* Unicode-1.1 additions */
- HB_SCRIPT_COMMON = HB_TAG ('Z','y','y','y'),
- HB_SCRIPT_ARABIC = HB_TAG ('A','r','a','b'),
- HB_SCRIPT_ARMENIAN = HB_TAG ('A','r','m','n'),
- HB_SCRIPT_BENGALI = HB_TAG ('B','e','n','g'),
- HB_SCRIPT_BOPOMOFO = HB_TAG ('B','o','p','o'),
- HB_SCRIPT_CANADIAN_ABORIGINAL = HB_TAG ('C','a','n','s'),
- HB_SCRIPT_CHEROKEE = HB_TAG ('C','h','e','r'),
- HB_SCRIPT_COPTIC = HB_TAG ('C','o','p','t'),
- HB_SCRIPT_CYRILLIC = HB_TAG ('C','y','r','l'),
- HB_SCRIPT_DEVANAGARI = HB_TAG ('D','e','v','a'),
- HB_SCRIPT_GEORGIAN = HB_TAG ('G','e','o','r'),
- HB_SCRIPT_GREEK = HB_TAG ('G','r','e','k'),
- HB_SCRIPT_GUJARATI = HB_TAG ('G','u','j','r'),
- HB_SCRIPT_GURMUKHI = HB_TAG ('G','u','r','u'),
- HB_SCRIPT_HANGUL = HB_TAG ('H','a','n','g'),
- HB_SCRIPT_HAN = HB_TAG ('H','a','n','i'),
- HB_SCRIPT_HEBREW = HB_TAG ('H','e','b','r'),
- HB_SCRIPT_HIRAGANA = HB_TAG ('H','i','r','a'),
- HB_SCRIPT_INHERITED = HB_TAG ('Z','i','n','h'),
- HB_SCRIPT_KANNADA = HB_TAG ('K','n','d','a'),
- HB_SCRIPT_KATAKANA = HB_TAG ('K','a','n','a'),
- HB_SCRIPT_LAO = HB_TAG ('L','a','o','o'),
- HB_SCRIPT_LATIN = HB_TAG ('L','a','t','n'),
- HB_SCRIPT_MALAYALAM = HB_TAG ('M','l','y','m'),
- HB_SCRIPT_MONGOLIAN = HB_TAG ('M','o','n','g'),
- HB_SCRIPT_OGHAM = HB_TAG ('O','g','a','m'),
- HB_SCRIPT_ORIYA = HB_TAG ('O','r','y','a'),
- HB_SCRIPT_RUNIC = HB_TAG ('R','u','n','r'),
- HB_SCRIPT_SYRIAC = HB_TAG ('S','y','r','c'),
- HB_SCRIPT_TAMIL = HB_TAG ('T','a','m','l'),
- HB_SCRIPT_TELUGU = HB_TAG ('T','e','l','u'),
- HB_SCRIPT_THAI = HB_TAG ('T','h','a','i'),
- HB_SCRIPT_YI = HB_TAG ('Y','i','i','i'),
-
- /* Unicode-2.0 additions */
- HB_SCRIPT_TIBETAN = HB_TAG ('T','i','b','t'),
-
- /* Unicode-3.0 additions */
- HB_SCRIPT_ETHIOPIC = HB_TAG ('E','t','h','i'),
- HB_SCRIPT_KHMER = HB_TAG ('K','h','m','r'),
- HB_SCRIPT_MYANMAR = HB_TAG ('M','y','m','r'),
- HB_SCRIPT_SINHALA = HB_TAG ('S','i','n','h'),
- HB_SCRIPT_THAANA = HB_TAG ('T','h','a','a'),
-
- /* Unicode-3.1 additions */
- HB_SCRIPT_DESERET = HB_TAG ('D','s','r','t'),
- HB_SCRIPT_GOTHIC = HB_TAG ('G','o','t','h'),
- HB_SCRIPT_OLD_ITALIC = HB_TAG ('I','t','a','l'),
-
- /* Unicode-3.2 additions */
- HB_SCRIPT_BUHID = HB_TAG ('B','u','h','d'),
- HB_SCRIPT_HANUNOO = HB_TAG ('H','a','n','o'),
- HB_SCRIPT_TAGALOG = HB_TAG ('T','g','l','g'),
- HB_SCRIPT_TAGBANWA = HB_TAG ('T','a','g','b'),
-
- /* Unicode-4.0 additions */
- HB_SCRIPT_BRAILLE = HB_TAG ('B','r','a','i'),
- HB_SCRIPT_CYPRIOT = HB_TAG ('C','p','r','t'),
- HB_SCRIPT_LIMBU = HB_TAG ('L','i','m','b'),
- HB_SCRIPT_LINEAR_B = HB_TAG ('L','i','n','b'),
- HB_SCRIPT_OSMANYA = HB_TAG ('O','s','m','a'),
- HB_SCRIPT_SHAVIAN = HB_TAG ('S','h','a','w'),
- HB_SCRIPT_TAI_LE = HB_TAG ('T','a','l','e'),
- HB_SCRIPT_UGARITIC = HB_TAG ('U','g','a','r'),
-
- /* Unicode-4.1 additions */
- HB_SCRIPT_BUGINESE = HB_TAG ('B','u','g','i'),
- HB_SCRIPT_GLAGOLITIC = HB_TAG ('G','l','a','g'),
- HB_SCRIPT_KHAROSHTHI = HB_TAG ('K','h','a','r'),
- HB_SCRIPT_NEW_TAI_LUE = HB_TAG ('T','a','l','u'),
- HB_SCRIPT_OLD_PERSIAN = HB_TAG ('X','p','e','o'),
- HB_SCRIPT_SYLOTI_NAGRI = HB_TAG ('S','y','l','o'),
- HB_SCRIPT_TIFINAGH = HB_TAG ('T','f','n','g'),
-
- /* Unicode-5.0 additions */
- HB_SCRIPT_BALINESE = HB_TAG ('B','a','l','i'),
- HB_SCRIPT_CUNEIFORM = HB_TAG ('X','s','u','x'),
- HB_SCRIPT_NKO = HB_TAG ('N','k','o','o'),
- HB_SCRIPT_PHAGS_PA = HB_TAG ('P','h','a','g'),
- HB_SCRIPT_PHOENICIAN = HB_TAG ('P','h','n','x'),
- HB_SCRIPT_UNKNOWN = HB_TAG ('Z','z','z','z'),
-
- /* Unicode-5.1 additions */
- HB_SCRIPT_CARIAN = HB_TAG ('C','a','r','i'),
- HB_SCRIPT_CHAM = HB_TAG ('C','h','a','m'),
- HB_SCRIPT_KAYAH_LI = HB_TAG ('K','a','l','i'),
- HB_SCRIPT_LEPCHA = HB_TAG ('L','e','p','c'),
- HB_SCRIPT_LYCIAN = HB_TAG ('L','y','c','i'),
- HB_SCRIPT_LYDIAN = HB_TAG ('L','y','d','i'),
- HB_SCRIPT_OL_CHIKI = HB_TAG ('O','l','c','k'),
- HB_SCRIPT_REJANG = HB_TAG ('R','j','n','g'),
- HB_SCRIPT_SAURASHTRA = HB_TAG ('S','a','u','r'),
- HB_SCRIPT_SUNDANESE = HB_TAG ('S','u','n','d'),
- HB_SCRIPT_VAI = HB_TAG ('V','a','i','i'),
-
- /* Unicode-5.2 additions */
- HB_SCRIPT_AVESTAN = HB_TAG ('A','v','s','t'),
- HB_SCRIPT_BAMUM = HB_TAG ('B','a','m','u'),
- HB_SCRIPT_EGYPTIAN_HIEROGLYPHS = HB_TAG ('E','g','y','p'),
- HB_SCRIPT_IMPERIAL_ARAMAIC = HB_TAG ('A','r','m','i'),
- HB_SCRIPT_INSCRIPTIONAL_PAHLAVI = HB_TAG ('P','h','l','i'),
- HB_SCRIPT_INSCRIPTIONAL_PARTHIAN = HB_TAG ('P','r','t','i'),
- HB_SCRIPT_JAVANESE = HB_TAG ('J','a','v','a'),
- HB_SCRIPT_KAITHI = HB_TAG ('K','t','h','i'),
- HB_SCRIPT_LISU = HB_TAG ('L','i','s','u'),
- HB_SCRIPT_MEETEI_MAYEK = HB_TAG ('M','t','e','i'),
- HB_SCRIPT_OLD_SOUTH_ARABIAN = HB_TAG ('S','a','r','b'),
- HB_SCRIPT_OLD_TURKIC = HB_TAG ('O','r','k','h'),
- HB_SCRIPT_SAMARITAN = HB_TAG ('S','a','m','r'),
- HB_SCRIPT_TAI_THAM = HB_TAG ('L','a','n','a'),
- HB_SCRIPT_TAI_VIET = HB_TAG ('T','a','v','t'),
-
- /* Unicode-6.0 additions */
- HB_SCRIPT_BATAK = HB_TAG ('B','a','t','k'),
- HB_SCRIPT_BRAHMI = HB_TAG ('B','r','a','h'),
- HB_SCRIPT_MANDAIC = HB_TAG ('M','a','n','d'),
-
- /* Unicode-6.1 additions */
- HB_SCRIPT_CHAKMA = HB_TAG ('C','a','k','m'),
- HB_SCRIPT_MEROITIC_CURSIVE = HB_TAG ('M','e','r','c'),
- HB_SCRIPT_MEROITIC_HIEROGLYPHS = HB_TAG ('M','e','r','o'),
- HB_SCRIPT_MIAO = HB_TAG ('P','l','r','d'),
- HB_SCRIPT_SHARADA = HB_TAG ('S','h','r','d'),
- HB_SCRIPT_SORA_SOMPENG = HB_TAG ('S','o','r','a'),
- HB_SCRIPT_TAKRI = HB_TAG ('T','a','k','r'),
-
- /* No script set */
- HB_SCRIPT_INVALID = HB_TAG_NONE
-} hb_script_t;
-
-
-/* Script functions */
-
-hb_script_t
-hb_script_from_iso15924_tag (hb_tag_t tag);
-
-/* suger for tag_from_string() then script_from_iso15924_tag */
-/* len=-1 means s is NUL-terminated */
-hb_script_t
-hb_script_from_string (const char *s, int len);
-
-hb_tag_t
-hb_script_to_iso15924_tag (hb_script_t script);
-
-hb_direction_t
-hb_script_get_horizontal_direction (hb_script_t script);
-
-
-/* User data */
-
-typedef struct hb_user_data_key_t {
- /*< private >*/
- char unused;
-} hb_user_data_key_t;
-
-typedef void (*hb_destroy_func_t) (void *user_data);
-
-
-HB_END_DECLS
-
-#endif /* HB_COMMON_H */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-coretext.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-coretext.cc
deleted file mode 100644
index 66db97bfbd1..00000000000
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-coretext.cc
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * Copyright © 2012 Mozilla Foundation.
- * Copyright © 2012 Google, Inc.
- *
- * This is part of HarfBuzz, a text shaping library.
- *
- * Permission is hereby granted, without written agreement and without
- * license or royalty fees, to use, copy, modify, and distribute this
- * software and its documentation for any purpose, provided that the
- * above copyright notice and the following two paragraphs appear in
- * all copies of this software.
- *
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- *
- * Mozilla Author(s): Jonathan Kew
- * Google Author(s): Behdad Esfahbod
- */
-
-#define HB_SHAPER coretext
-#include "hb-shaper-impl-private.hh"
-
-#include "hb-coretext.h"
-
-
-#ifndef HB_DEBUG_CORETEXT
-#define HB_DEBUG_CORETEXT (HB_DEBUG+0)
-#endif
-
-
-HB_SHAPER_DATA_ENSURE_DECLARE(coretext, face)
-HB_SHAPER_DATA_ENSURE_DECLARE(coretext, font)
-
-
-/*
- * shaper face data
- */
-
-struct hb_coretext_shaper_face_data_t {
- CGFontRef cg_font;
-};
-
-static void
-release_data (void *info, const void *data, size_t size)
-{
- assert (hb_blob_get_length ((hb_blob_t *) info) == size &&
- hb_blob_get_data ((hb_blob_t *) info, NULL) == data);
-
- hb_blob_destroy ((hb_blob_t *) info);
-}
-
-hb_coretext_shaper_face_data_t *
-_hb_coretext_shaper_face_data_create (hb_face_t *face)
-{
- hb_coretext_shaper_face_data_t *data = (hb_coretext_shaper_face_data_t *) calloc (1, sizeof (hb_coretext_shaper_face_data_t));
- if (unlikely (!data))
- return NULL;
-
- hb_blob_t *blob = hb_face_reference_blob (face);
- unsigned int blob_length;
- const char *blob_data = hb_blob_get_data (blob, &blob_length);
- if (unlikely (!blob_length))
- DEBUG_MSG (CORETEXT, face, "Face has empty blob");
-
- CGDataProviderRef provider = CGDataProviderCreateWithData (blob, blob_data, blob_length, &release_data);
- data->cg_font = CGFontCreateWithDataProvider (provider);
- CGDataProviderRelease (provider);
-
- if (unlikely (!data->cg_font)) {
- DEBUG_MSG (CORETEXT, face, "Face CGFontCreateWithDataProvider() failed");
- free (data);
- return NULL;
- }
-
- return data;
-}
-
-void
-_hb_coretext_shaper_face_data_destroy (hb_coretext_shaper_face_data_t *data)
-{
- CFRelease (data->cg_font);
- free (data);
-}
-
-CGFontRef
-hb_coretext_face_get_cg_font (hb_face_t *face)
-{
- if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return NULL;
- hb_coretext_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face);
- return face_data->cg_font;
-}
-
-
-/*
- * shaper font data
- */
-
-struct hb_coretext_shaper_font_data_t {
- CTFontRef ct_font;
-};
-
-hb_coretext_shaper_font_data_t *
-_hb_coretext_shaper_font_data_create (hb_font_t *font)
-{
- if (unlikely (!hb_coretext_shaper_face_data_ensure (font->face))) return NULL;
-
- hb_coretext_shaper_font_data_t *data = (hb_coretext_shaper_font_data_t *) calloc (1, sizeof (hb_coretext_shaper_font_data_t));
- if (unlikely (!data))
- return NULL;
-
- hb_face_t *face = font->face;
- hb_coretext_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face);
-
- data->ct_font = CTFontCreateWithGraphicsFont (face_data->cg_font, font->y_scale, NULL, NULL);
- if (unlikely (!data->ct_font)) {
- DEBUG_MSG (CORETEXT, font, "Font CTFontCreateWithGraphicsFont() failed");
- free (data);
- return NULL;
- }
-
- return data;
-}
-
-void
-_hb_coretext_shaper_font_data_destroy (hb_coretext_shaper_font_data_t *data)
-{
- CFRelease (data->ct_font);
- free (data);
-}
-
-
-/*
- * shaper shape_plan data
- */
-
-struct hb_coretext_shaper_shape_plan_data_t {};
-
-hb_coretext_shaper_shape_plan_data_t *
-_hb_coretext_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan HB_UNUSED,
- const hb_feature_t *user_features HB_UNUSED,
- unsigned int num_user_features HB_UNUSED)
-{
- return (hb_coretext_shaper_shape_plan_data_t *) HB_SHAPER_DATA_SUCCEEDED;
-}
-
-void
-_hb_coretext_shaper_shape_plan_data_destroy (hb_coretext_shaper_shape_plan_data_t *data HB_UNUSED)
-{
-}
-
-CTFontRef
-hb_coretext_font_get_ct_font (hb_font_t *font)
-{
- if (unlikely (!hb_coretext_shaper_font_data_ensure (font))) return NULL;
- hb_coretext_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font);
- return font_data->ct_font;
-}
-
-
-/*
- * shaper
- */
-
-hb_bool_t
-_hb_coretext_shape (hb_shape_plan_t *shape_plan,
- hb_font_t *font,
- hb_buffer_t *buffer,
- const hb_feature_t *features,
- unsigned int num_features)
-{
- hb_face_t *face = font->face;
- hb_coretext_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font);
-
-#define FAIL(...) \
- HB_STMT_START { \
- DEBUG_MSG (CORETEXT, NULL, __VA_ARGS__); \
- return false; \
- } HB_STMT_END;
-
- unsigned int scratch_size;
- char *scratch = (char *) buffer->get_scratch_buffer (&scratch_size);
-
-#define utf16_index() var1.u32
-
- UniChar *pchars = (UniChar *) scratch;
- unsigned int chars_len = 0;
- for (unsigned int i = 0; i < buffer->len; i++) {
- hb_codepoint_t c = buffer->info[i].codepoint;
- buffer->info[i].utf16_index() = chars_len;
- if (likely (c < 0x10000))
- pchars[chars_len++] = c;
- else if (unlikely (c >= 0x110000))
- pchars[chars_len++] = 0xFFFD;
- else {
- pchars[chars_len++] = 0xD800 + ((c - 0x10000) >> 10);
- pchars[chars_len++] = 0xDC00 + ((c - 0x10000) & ((1 << 10) - 1));
- }
- }
-
-#undef utf16_index
-
- CFStringRef string_ref = CFStringCreateWithCharactersNoCopy (kCFAllocatorDefault,
- pchars, chars_len,
- kCFAllocatorNull);
-
- CFDictionaryRef attrs = CFDictionaryCreate (kCFAllocatorDefault,
- (const void**) &kCTFontAttributeName,
- (const void**) &font_data->ct_font,
- 1, /* count of attributes */
- &kCFTypeDictionaryKeyCallBacks,
- &kCFTypeDictionaryValueCallBacks);
-
- /* TODO: support features */
-
- CFAttributedStringRef attr_string = CFAttributedStringCreate (kCFAllocatorDefault, string_ref, attrs);
- CFRelease (string_ref);
- CFRelease (attrs);
-
- CTLineRef line = CTLineCreateWithAttributedString (attr_string);
- CFRelease (attr_string);
-
- CFArrayRef glyph_runs = CTLineGetGlyphRuns (line);
- unsigned int num_runs = CFArrayGetCount (glyph_runs);
-
- buffer->len = 0;
-
- const CFRange range_all = CFRangeMake (0, 0);
-
- for (unsigned int i = 0; i < num_runs; i++) {
- CTRunRef run = (CTRunRef) CFArrayGetValueAtIndex (glyph_runs, i);
-
- unsigned int num_glyphs = CTRunGetGlyphCount (run);
- if (num_glyphs == 0)
- continue;
-
- buffer->ensure (buffer->len + num_glyphs);
-
- /* Testing indicates that CTRunGetGlyphsPtr (almost?) always succeeds,
- * and so copying data to our own buffer with CTRunGetGlyphs will be
- * extremely rare. */
-
- unsigned int scratch_size;
- char *scratch = (char *) buffer->get_scratch_buffer (&scratch_size);
-
-#define ALLOCATE_ARRAY(Type, name, len) \
- Type *name = (Type *) scratch; \
- scratch += (len) * sizeof ((name)[0]); \
- scratch_size -= (len) * sizeof ((name)[0]);
-
- const CGGlyph* glyphs = CTRunGetGlyphsPtr (run);
- if (!glyphs) {
- ALLOCATE_ARRAY (CGGlyph, glyph_buf, num_glyphs);
- CTRunGetGlyphs (run, range_all, glyph_buf);
- glyphs = glyph_buf;
- }
-
- const CGPoint* positions = CTRunGetPositionsPtr (run);
- if (!positions) {
- ALLOCATE_ARRAY (CGPoint, position_buf, num_glyphs);
- CTRunGetPositions (run, range_all, position_buf);
- positions = position_buf;
- }
-
- const CFIndex* string_indices = CTRunGetStringIndicesPtr (run);
- if (!string_indices) {
- ALLOCATE_ARRAY (CFIndex, index_buf, num_glyphs);
- CTRunGetStringIndices (run, range_all, index_buf);
- string_indices = index_buf;
- }
-
-#undef ALLOCATE_ARRAY
-
- double run_width = CTRunGetTypographicBounds (run, range_all, NULL, NULL, NULL);
-
- for (unsigned int j = 0; j < num_glyphs; j++) {
- double advance = (j + 1 < num_glyphs ? positions[j + 1].x : positions[0].x + run_width) - positions[j].x;
-
- hb_glyph_info_t *info = &buffer->info[buffer->len];
-
- info->codepoint = glyphs[j];
- info->cluster = string_indices[j];
-
- /* Currently, we do all x-positioning by setting the advance, we never use x-offset. */
- info->mask = advance;
- info->var1.u32 = 0;
- info->var2.u32 = positions[j].y;
-
- buffer->len++;
- }
- }
-
- buffer->clear_positions ();
-
- unsigned int count = buffer->len;
- for (unsigned int i = 0; i < count; ++i) {
- hb_glyph_info_t *info = &buffer->info[i];
- hb_glyph_position_t *pos = &buffer->pos[i];
-
- /* TODO vertical */
- pos->x_advance = info->mask;
- pos->x_offset = info->var1.u32;
- pos->y_offset = info->var2.u32;
- }
-
- /* Fix up clusters so that we never return out-of-order indices;
- * if core text has reordered glyphs, we'll merge them to the
- * beginning of the reordered cluster.
- *
- * This does *not* mean we'll form the same clusters as Uniscribe
- * or the native OT backend, only that the cluster indices will be
- * monotonic in the output buffer. */
- if (HB_DIRECTION_IS_FORWARD (buffer->props.direction)) {
- unsigned int prev_cluster = 0;
- for (unsigned int i = 0; i < count; i++) {
- unsigned int curr_cluster = buffer->info[i].cluster;
- if (curr_cluster < prev_cluster) {
- for (unsigned int j = i; j > 0; j--) {
- if (buffer->info[j - 1].cluster > curr_cluster)
- buffer->info[j - 1].cluster = curr_cluster;
- else
- break;
- }
- }
- prev_cluster = curr_cluster;
- }
- } else {
- unsigned int prev_cluster = (unsigned int)-1;
- for (unsigned int i = 0; i < count; i++) {
- unsigned int curr_cluster = buffer->info[i].cluster;
- if (curr_cluster > prev_cluster) {
- for (unsigned int j = i; j > 0; j--) {
- if (buffer->info[j - 1].cluster < curr_cluster)
- buffer->info[j - 1].cluster = curr_cluster;
- else
- break;
- }
- }
- prev_cluster = curr_cluster;
- }
- }
-
- return true;
-}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19-PATCHES/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-0.9.20-PATCHES/ChangeLog
index 777905f4eb0..fc2ae9bfcab 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19-PATCHES/ChangeLog
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20-PATCHES/ChangeLog
@@ -1,3 +1,8 @@
+2013-09-10 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Imported harfbuzz-0.9.20 source tree from:
+ http://www.freedesktop.org/software/harfbuzz/release/
+
2013-07-17 Peter Breitenlohner <peb@mppmu.mpg.de>
Imported harfbuzz-0.9.19 source tree from:
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19-PATCHES/TL-Changes b/Build/source/libs/harfbuzz/harfbuzz-0.9.20-PATCHES/TL-Changes
index b602e06e55c..42689d1ca27 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19-PATCHES/TL-Changes
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20-PATCHES/TL-Changes
@@ -1,5 +1,5 @@
-Changes applied to the harfbuzz-0.9.19/ tree as obtained from:
- http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.19.tar.bz2
+Changes applied to the harfbuzz-0.9.20/ tree as obtained from:
+ http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.20.tar.bz2
Removed:
COPYING
@@ -19,6 +19,7 @@ Removed:
src/hb-version.h
Removed unused dirs:
+ docs
m4
test
util
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/AUTHORS b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/AUTHORS
index c611d7d4769..c611d7d4769 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/AUTHORS
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/AUTHORS
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/Android.mk b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/Android.mk
index 3ada5f2e884..62cc21f2572 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/Android.mk
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/Android.mk
@@ -32,6 +32,7 @@ LOCAL_SRC_FILES:= \
src/hb-buffer.cc \
src/hb-common.cc \
src/hb-fallback-shape.cc \
+ src/hb-face.cc \
src/hb-font.cc \
src/hb-ot-tag.cc \
src/hb-set.cc \
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/ChangeLog
index e2f4c98a58c..3a9cc0e49e2 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/ChangeLog
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/ChangeLog
@@ -1,3 +1,675 @@
+commit f730b5d1e2369762952481f1a2d3db26a2b48015
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Aug 29 15:53:33 2013 -0400
+
+ 0.9.20
+
+ NEWS | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
+ configure.ac | 2 +-
+ 2 files changed, 49 insertions(+), 1 deletion(-)
+
+commit b0e03508bad04d7dcf2c50ac81f6261425b34c5f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Aug 29 15:56:32 2013 -0400
+
+ Dist with gobject and introspection enabled
+
+ Makefile.am | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit e4ce6745e15eab33ed693874e7a56981f4d6f79a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Aug 29 15:56:16 2013 -0400
+
+ [gtk-doc] Fix build without gobject
+
+ docs/reference/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 263372f15ffdf4c0e4386133f64ff389ba73de33
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Aug 28 13:43:54 2013 -0400
+
+ Remove gtk-doc.make
+
+ It's copied by gtk-docize.
+
+ gtk-doc.make | 302
+ -----------------------------------------------------------
+ 1 file changed, 302 deletions(-)
+
+commit 79d754efeef89543d51775b110e8bd49cf7e699b
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Aug 28 13:43:35 2013 -0400
+
+ Fix build
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 71ef22b04d466803076af1da6763fecab95ce5bb
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Aug 28 12:52:55 2013 -0400
+
+ Turn hb-gobject, and introspection off by default
+
+ Also enable bootstrapping without them.
+
+ configure.ac | 39 ++++++++++++++++++++++++++++++++++-----
+ src/Makefile.am | 5 +++--
+ 2 files changed, 37 insertions(+), 7 deletions(-)
+
+commit d8f507099b9ae5f0c643fb8dddbb069df6f62a94
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Aug 26 21:26:24 2013 -0400
+
+ Hookup harfbuzz-gobject to introspection
+
+ src/Makefile.am | 16 +++++++++++++---
+ 1 file changed, 13 insertions(+), 3 deletions(-)
+
+commit 71439a8c7ae9df25193bc3ad0f203117d2884a19
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Aug 26 20:56:58 2013 -0400
+
+ [gobject] Flesh out hb-gobject
+
+ Move it to new harfbuzz-gobject library. Implement enums and
+ boxed types for object-types. Still have to do boxed types for
+ value types.
+
+ configure.ac | 12 ++++-
+ docs/reference/Makefile.am | 12 ++++-
+ docs/reference/harfbuzz-docs.xml | 3 ++
+ docs/reference/harfbuzz-sections.txt | 48 +++++++++++++++++++-
+ src/Makefile.am | 48 +++++++++++++-------
+ src/harfbuzz-gobject.pc.in | 12 +++++
+ src/hb-gobject-enums.cc.tmpl | 11 +++--
+ src/hb-gobject-enums.h.tmpl | 55 +++++++++++++++++++++++
+ src/hb-gobject-structs.cc | 84
+ +++++++++++++++++++++++++++-------
+ src/hb-gobject-structs.h | 87
+ ++++++++++++++++++++++++++++++++++++
+ src/hb-gobject.h | 38 ++--------------
+ 11 files changed, 333 insertions(+), 77 deletions(-)
+
+commit 23027f7611b53b594e4b4008e916e42b5154f6ac
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Aug 22 19:03:21 2013 -0400
+
+ [introspection] Enable gobject-introspection again
+
+ configure.ac | 7 ++++---
+ src/Makefile.am | 49 ++++++++++++++++++++++++++++---------------------
+ 2 files changed, 32 insertions(+), 24 deletions(-)
+
+commit 757a7a9018577dcc399be03dc45a59589585d2fb
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Aug 28 12:35:13 2013 -0400
+
+ [uniscribe] Fixed build with wide chars
+
+ https://github.com/blinkseb/harfbuzz/commit/f65dafa4138e1fb4395bf646fa33bb01a86a7e9a
+
+ src/hb-uniscribe.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 4dc798de19c767b91fd3025c85593fa6809d1340
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Aug 26 20:39:00 2013 -0400
+
+ Add hb-deprecated.h, and rename a couple enum values
+
+ Add deprecated alias for old name.
+
+ src/Makefile.am | 1 +
+ src/hb-buffer.cc | 4 ++--
+ src/hb-buffer.h | 8 +++----
+ src/hb-common.h | 5 -----
+ src/hb-deprecated.h | 51
+ ++++++++++++++++++++++++++++++++++++++++++++
+ src/hb.h | 1 +
+ src/test-buffer-serialize.cc | 2 +-
+ test/api/test-buffer.c | 2 +-
+ util/Makefile.am | 1 +
+ util/hb-shape.cc | 2 +-
+ util/options.hh | 2 +-
+ 11 files changed, 64 insertions(+), 15 deletions(-)
+
+commit 2e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Aug 26 18:49:07 2013 -0400
+
+ Separate face source code from font
+
+ Makes documentation / introspection easier.
+
+ Android.mk | 1 +
+ docs/reference/harfbuzz-docs.xml | 1 +
+ docs/reference/harfbuzz-sections.txt | 6 +-
+ src/Makefile.am | 3 +
+ src/hb-face-private.hh | 108 ++++++++++++
+ src/hb-face.cc | 311
+ +++++++++++++++++++++++++++++++++++
+ src/hb-face.h | 117 +++++++++++++
+ src/hb-font-private.hh | 67 +-------
+ src/hb-font.cc | 269 ------------------------------
+ src/hb-font.h | 75 +--------
+ src/hb.h | 1 +
+ 11 files changed, 549 insertions(+), 410 deletions(-)
+
+commit d3490761e11ae308fbd8aaf02059653f579035c5
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Aug 26 21:15:29 2013 -0400
+
+ Improve check-includes.sh
+
+ src/check-includes.sh | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+commit 381f2fb5e664715d67ffc9a234b0fd8aa540fada
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Aug 26 19:20:38 2013 -0400
+
+ Minor
+
+ docs/reference/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ac1f09b53e2c5d14c874e4d9f1b25b03ea1d1c44
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Aug 26 18:50:12 2013 -0400
+
+ [gtk-doc] Fix maintainer-clean rule
+
+ docs/reference/Makefile.am | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit 38b8b40526a85f33521542e24d1e0c82588efc85
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Aug 27 11:44:09 2013 -0400
+
+ Fix possible snprintf OOM
+
+ https://bugzilla.redhat.com/show_bug.cgi?id=1001645
+
+ src/hb-buffer-serialize.cc | 14 +++++++-------
+ src/hb-font-private.hh | 3 ++-
+ src/hb-shape.cc | 6 +++---
+ 3 files changed, 12 insertions(+), 11 deletions(-)
+
+commit d22548c0e362cc9447557440af9ecbb11badfa78
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Aug 26 18:46:21 2013 -0400
+
+ [check-*] Minor
+
+ src/check-c-linkage-decls.sh | 4 ++--
+ src/check-header-guards.sh | 4 ++--
+ src/check-includes.sh | 4 ++--
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 029f46bde7e39094d3decb46525e91a97c5cc02c
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Aug 26 18:11:07 2013 -0400
+
+ [gtk-doc] Remove tmpl in make maintainer-clean
+
+ docs/reference/Makefile.am | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit dddf990c3687a47297eafc82b54fa96842e68003
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Aug 26 17:58:25 2013 -0400
+
+ [git.mk] Update
+
+ git.mk | 17 +++++++++++++----
+ 1 file changed, 13 insertions(+), 4 deletions(-)
+
+commit 700a15fe4b80da9c67befd85ae10a166f5b65962
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Aug 26 17:49:36 2013 -0400
+
+ Add HB_DISABLE_DEPRECATED
+
+ That moment that you have to accept that you made API mistakes...
+
+ docs/reference/Makefile.am | 2 +-
+ docs/reference/harfbuzz-sections.txt | 8 +++++---
+ src/hb-common.h | 4 +++-
+ 3 files changed, 9 insertions(+), 5 deletions(-)
+
+commit ddc456a519a9a59e96f9d7fcad988369e0a8842b
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Aug 26 17:34:18 2013 -0400
+
+ [travis] Add graphite2
+
+ .travis.yml | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit f7c72b42efb8d42859023659fd2e3d589523436d
+Author: Anthony Carrico <acarrico@memebeam.org>
+Date: Sun Feb 24 13:00:33 2013 -0500
+
+ [gtk-doc] Initial setup
+
+ Initial setup of gtk-doc. Straight forward setup following the gtk-doc
+ instructions. Ignore some troublesome types in src/hb-gobject.h. To
+ build use "./autogen.sh --enable-gtk-doc" then "make". Docs are in
+ harfbuzz/docs/reference/html/index.html.
+
+ .travis.yml | 10 +-
+ Makefile.am | 7 +-
+ autogen.sh | 7 +
+ configure.ac | 7 +-
+ docs/Makefile.am | 1 +
+ docs/reference/Makefile.am | 109 +++++++++
+ docs/reference/harfbuzz-docs.xml | 61 +++++
+ docs/reference/harfbuzz-overrides.txt | 0
+ docs/reference/harfbuzz-sections.txt | 431
+ ++++++++++++++++++++++++++++++++++
+ gtk-doc.make | 302 ++++++++++++++++++++++++
+ src/Makefile.am | 2 +-
+ src/hb-gobject.h | 3 +-
+ 12 files changed, 931 insertions(+), 9 deletions(-)
+
+commit 3409fb1c767118067cf7edfb97068936b6f4b717
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Aug 21 17:22:21 2013 -0400
+
+ [uniscribe] Ask Uniscribe to return shaping results in logical order
+
+ See discussion on the list in the thread "Arabic presentation forms
+ and the uniscribe backend".
+
+ Based on patch from Jonathan Kew.
+
+ src/hb-uniscribe.cc | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+commit 1d05fdd09fa271b641f30a2138171e6fafcd8db7
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Aug 20 13:22:21 2013 -0400
+
+ [uniscribe] Print run info
+
+ src/hb-uniscribe.cc | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit 3613696b57225111507a3f4263f5fa6937d0bc72
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Aug 12 00:33:28 2013 -0400
+
+ [coretext] Fully support user features
+
+ Based on patch from Jonathan Kew and data from Apple.
+
+ It's not working correctly though, and I suspect I'm hitting a bug in
+ CoreText. When I do this:
+
+ hb-shape /Library/Fonts/Zapfino.ttf ZapfinoZapfino --shaper coretext \
+ --features=-liga
+
+ I expect both ligatures to turn off, but only the second one does:
+
+ [Z_a_p_f_i_n_o=0+2333|Z=7+395|a=8+285|p_f=9+433|i=11+181|n=12+261|o=13+250]
+
+ whereas if I disable 'dlig' instead of 'liga', both are turned off.
+ Smells...
+
+ Doesn't resolve conflicting feature settings.
+
+ src/hb-coretext.cc | 446
+ +++++++++++++++++++++++++++++++++++++++++++++++-----
+ src/hb-uniscribe.cc | 2 +-
+ 2 files changed, 404 insertions(+), 44 deletions(-)
+
+commit 54e6f6c588a164f7de62ff88b3eff4f25adb8f17
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Aug 9 14:34:54 2013 -0400
+
+ Clean up list of Unicode scripts
+
+ Rename HB_SCRIPT_CANADIAN_ABORIGINAL to HB_SCRIPT_CANADIAN_SYLLABICS
+ and a macro for the old name.
+
+ src/hb-common.h | 277
+ ++++++++++++++++++++-----------------
+ src/hb-glib.cc | 2 +-
+ src/hb-ot-shape-complex-private.hh | 2 +
+ src/hb-ucdn.cc | 2 +-
+ test/api/test-unicode.c | 2 +-
+ 5 files changed, 153 insertions(+), 132 deletions(-)
+
+commit 7cd4a715848c44be9aec6b6b622cfc2a60b1a5a9
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Aug 9 09:41:48 2013 -0400
+
+ Update TODO
+
+ TODO | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 515a0ac81e531c95b1bb7f1a3c5df73a9e64b14f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Aug 9 09:40:59 2013 -0400
+
+ Fix compiler warning
+
+ src/hb-ot-layout-common-private.hh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 10f964623f003c70f6bdd33423420abda3820ce0
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Aug 9 09:40:01 2013 -0400
+
+ Round when scaling values
+
+ Doesn't matter for most users since they should be working in a
+ fixed sub-pixel scale anyway (ie. 22.10, 26.6, 16.16, etc).
+
+ TODO | 2 --
+ src/hb-font-private.hh | 6 +++++-
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+commit df8f70ae5de6181d56efa3f076f14e4d52119a5e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Aug 9 09:35:10 2013 -0400
+
+ Minor
+
+ src/hb-font-private.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ce8badf1808f9fbdd9a22e9215c7475d3afde5ed
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Aug 9 09:31:06 2013 -0400
+
+ Minor
+
+ src/hb-font-private.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit d71c0df2d17f4590d5611239577a6cb532c26528
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Aug 9 09:28:32 2013 -0400
+
+ Remove vrt2, vkrn, vpal, and valt from default vertical features
+
+ See thread by John Dagget on the list.
+
+ TODO | 2 --
+ src/hb-ot-shape.cc | 9 ---------
+ 2 files changed, 11 deletions(-)
+
+commit a782a5e9a37c8733ac2830410a514d38635b543a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Aug 7 21:08:54 2013 -0400
+
+ [coretext] Start adding support for features
+
+ Unlike AAT, looks like with CoreText very few OT features can
+ be mapped.
+ :(
+
+ src/hb-coretext.cc | 65
+ +++++++++++++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 54 insertions(+), 11 deletions(-)
+
+commit bdd8873fd8ae5c794018f6edac242b0a8b62ff31
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Aug 7 17:58:25 2013 -0400
+
+ Revert "[Indic] don't apply 'calt' by default in Indic shaper"
+
+ This reverts commit 952121007c6f6f374e4cf1734ebcfe2d2d71c71c.
+
+ In light of discussion on the mailing list...
+
+ src/hb-ot-shape-complex-indic.cc | 4 ----
+ 1 file changed, 4 deletions(-)
+
+commit 9a175914d72187d0c3f50ddad50c9569649c3072
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Aug 7 17:26:13 2013 -0400
+
+ [uniscribe] Support feature ranges
+
+ As Khaled pointed out, right now setting any features, turns kern
+ and possibly other features off.
+
+ src/hb-uniscribe.cc | 232
+ ++++++++++++++++++++++++++++++++++++++++++++--------
+ 1 file changed, 199 insertions(+), 33 deletions(-)
+
+commit 627af695e48ef10b6e634c34b723f7e7013467f6
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Aug 6 16:53:56 2013 -0400
+
+ More git.mk updates
+
+ git.mk | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit 722252743d59e4cd53cb71720d823ea00b708ad8
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Aug 6 15:19:23 2013 -0400
+
+ Update git.mk
+
+ git.mk | 37 +++++++++++++++++++++++--------------
+ 1 file changed, 23 insertions(+), 14 deletions(-)
+
+commit 38d5c58d23fce38221689cda98cea1c3e42ed615
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Aug 6 14:45:36 2013 -0400
+
+ [uniscribe] Half-support user features
+
+ Turning features on globally works now.
+
+ src/hb-uniscribe.cc | 54
+ ++++++++++++++++++++++++++++++++++++++++++-----------
+ 1 file changed, 43 insertions(+), 11 deletions(-)
+
+commit 639afdc690c681a302080239a1967ce735ba5be5
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Aug 6 14:28:12 2013 -0400
+
+ Minor
+
+ src/hb-private.hh | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+commit 952121007c6f6f374e4cf1734ebcfe2d2d71c71c
+Author: Jonathan Kew <jfkthame@gmail.com>
+Date: Tue Aug 6 10:36:14 2013 -0400
+
+ [Indic] don't apply 'calt' by default in Indic shaper
+
+ src/hb-ot-shape-complex-indic.cc | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 625678436c29100eef82d87e635b251030a18f60
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Aug 5 22:44:18 2013 -0400
+
+ Fix glyph closure with class==0
+
+ As reported by cibu. Untested.
+
+ src/hb-ot-layout-common-private.hh | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+commit 580d5eb93af5bbbc64994b626d5e011e2c256d74
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sun Aug 4 16:55:21 2013 -0400
+
+ Don't apply 'dlig' by default
+
+ Windows 8 doesn't, and the spec will be fixed.
+
+ src/hb-ot-shape-complex-arabic.cc | 1 -
+ 1 file changed, 1 deletion(-)
+
+commit 48382e2f41499a91181bea0acc5792989d2485bb
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 30 18:25:39 2013 -0400
+
+ Minor
+
+ src/hb-ot-layout-common-private.hh | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+commit c461371419d186811d4bfc768e26535f48a807f4
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 30 14:48:23 2013 -0400
+
+ [CoreText] Don't leak the CTLine object (and everything that hangs
+ off it)
+
+ Patch from Jonathan Kew.
+
+ src/hb-coretext.cc | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 5fbc952524ac8840f007dc0136823a4ab6e25f70
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 29 14:34:40 2013 -0400
+
+ Fix glyph name printing in hb-ot-shape-closure
+
+ util/hb-ot-shape-closure.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6fadd9dd7cc220f131c29946285831635afc8044
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Jul 26 10:33:06 2013 -0400
+
+ Apply 'mark' to Myanmar
+
+ According to Andrew Glass: "The issue with Myanmar <mark> feature was
+ fixed via a servicing patch as soon as Windows 8 became available."
+
+ src/hb-ot-shape-complex-myanmar.cc | 11 -----------
+ 1 file changed, 11 deletions(-)
+
+commit 86522e493d071f395b5abf64289232bf8867ac29
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 22 19:07:53 2013 -0400
+
+ Fix glyph closure recursion!
+
+ src/hb-ot-layout-gsubgpos-private.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 74439d0aa10184451adc6c6469f5119be352ecbb
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 22 19:02:29 2013 -0400
+
+ Minor
+
+ src/hb-ot-layout-gsubgpos-private.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 8b427c78efa988ed27a2a394146d73f59688707b
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 22 10:57:05 2013 -0400
+
+ [uniscribe] Sanitize font file
+
+ src/hb-uniscribe.cc | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 12ff69df21ac91ae21860db7000d9f9973d3da1a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jul 22 10:52:12 2013 -0400
+
+ [uniscribe] Handle TTC when renaming font
+
+ src/hb-uniscribe.cc | 31 ++++++++++++++++++-------------
+ 1 file changed, 18 insertions(+), 13 deletions(-)
+
+commit 05bad3b8c25a89bc0f20f99f9215e492f48f03fe
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sun Jul 21 17:05:02 2013 -0400
+
+ [uniscribe] Use OT::* types
+
+ src/hb-open-type-private.hh | 10 ++++-
+ src/hb-ot-name-table.hh | 4 +-
+ src/hb-uniscribe.cc | 107
+ +++++++++++++++++++++++---------------------
+ 3 files changed, 66 insertions(+), 55 deletions(-)
+
+commit bdeea605fe597bff4430eaae3317189bb81ec76e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sun Jul 21 16:22:10 2013 -0400
+
+ [uniscribe] Move name generation into separate function
+
+ src/hb-uniscribe.cc | 34 ++++++++++++++++++++++------------
+ 1 file changed, 22 insertions(+), 12 deletions(-)
+
+commit 73f947e2a7bc5b29d731da2e9d1fafe958be839e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sun Jul 21 16:16:35 2013 -0400
+
+ [uniscribe] Use blob to pass data around
+
+ src/hb-uniscribe.cc | 28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+commit 8ac2e88deff3d069c19fd59d0fbbfb88a762b113
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sun Jul 21 16:06:49 2013 -0400
+
+ [uniscribe] Use unique font name
+
+ When installing per-process fonts using AddFontMemResourceEx(),
+ if a font with the same family name is already installed, sometimes
+ that one gets used. Which is problematic for us. As such, we
+ now mangle the font to install a new 'name' table with a unique
+ name, which we then use to choose the font.
+
+ Patch from Jonathan Kew.
+
+ configure.ac | 2 +-
+ src/hb-uniscribe.cc | 136
+ ++++++++++++++++++++++++++++++++++++++++++++--------
+ 2 files changed, 116 insertions(+), 22 deletions(-)
+
+commit 8751de50831338ce550601c34c17d152ad89c1fd
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jul 18 16:29:50 2013 -0400
+
+ Followup fix for 3f9e2dced298c3d00f31b2dfc38685bb071a3a22
+
+ During GSUB, if a ligation happens, subsequence context input matching
+ matches the new indexing. During GPOS however, the indices never
+ change. So just go one by one.
+
+ Fixes 'dist' positioning with mmrtext.ttf and the following sequence:
+
+ U+1014,U+1039,U+1011,U+1014,U+1039,U+1011,U+1014,U+1039,U+1011
+
+ Reported by Jonathan Kew.
+
+ src/hb-ot-layout-gsubgpos-private.hh | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit 2b78d67e9f38f77086fbd9c3fd6f1c8c73927a51
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 16 16:06:27 2013 -0400
+
+ 0.9.19
+
+ NEWS | 11 +++++++++++
+ configure.ac | 2 +-
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+
commit e509d35cf1160f1449bc736b9445cdf61ab81d06
Author: Behdad Esfahbod <behdad@behdad.org>
Date: Thu Jul 11 14:56:45 2013 -0400
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/Makefile.am
index dd1460c1038..c98b7802569 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/Makefile.am
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/Makefile.am
@@ -4,7 +4,7 @@ NULL =
ACLOCAL_AMFLAGS = -I m4
-SUBDIRS = src util test
+SUBDIRS = src util test docs
EXTRA_DIST = \
autogen.sh \
@@ -46,6 +46,13 @@ $(srcdir)/ChangeLog:
# Release engineering
#
+DISTCHECK_CONFIGURE_FLAGS = \
+ --enable-gtk-doc \
+ --disable-doc-cross-references \
+ --with-gobject \
+ --enable-introspection \
+ $(NULL)
+
# TODO: Copy infrastructure from cairo
TAR_OPTIONS = --owner=0 --group=0
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/NEWS b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/NEWS
index c1618ba0575..dc89614e071 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/NEWS
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/NEWS
@@ -1,3 +1,51 @@
+Overview of changes leading to 0.9.20
+Thursday, August 29, 2013
+=====================================
+
+General:
+- Misc substitute_closure() fixes.
+- Build fixes.
+
+Documentation:
+- gtk-doc boilerplate integrated. Docs are built now, but
+ contain no contents. By next release hopefully we have
+ some content in. Enable using --enable-gtk-doc.
+
+GObject and Introspection:
+- Added harfbuzz-gobject library (hb-gobject.h) that has type
+ bindings for all HarfBuzz objects and enums. Enable using
+ --with-gobject.
+- Added gobject-introspection boilerplate. Nothing useful
+ right now. Work in progress. Gets enabled automatically if
+ --with-gobject is used. Override with --disable-introspection.
+
+OpenType shaper:
+- Apply 'mark' in Myanmar shaper.
+- Don't apply 'dlig' by default.
+
+Uniscribe shaper:
+- Support user features.
+- Fix loading of fonts that are also installed on the system.
+- Fix shaping of Arabic Presentation Forms.
+- Fix build with wide chars.
+
+CoreText shaper:
+- Support user features.
+
+Source changes:
+- hb_face_t code moved to hb-face.h / hb-face.cc.
+- Added hb-deprecated.h.
+
+API changes:
+- Added HB_DISABLE_DEPRECATED.
+- Deprecated HB_SCRIPT_CANADIAN_ABORIGINAL; replaced by
+ HB_SCRIPT_CANADIAN_SYLLABICS.
+- Deprecated HB_BUFFER_FLAGS_DEFAULT; replaced by
+ HB_BUFFER_FLAG_DEFAULT.
+- Deprecated HB_BUFFER_SERIALIZE_FLAGS_DEFAULT; replaced by
+ HB_BUFFER_SERIALIZE_FLAG_DEFAULT.
+
+
Overview of changes leading to 0.9.19
Tuesday, July 16, 2013
=====================================
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/README b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/README
index 74e739da52a..74e739da52a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/README
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/README
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/THANKS b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/THANKS
index 940cfde5c39..940cfde5c39 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/THANKS
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/THANKS
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/TODO b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/TODO
index 19c3f625548..4808391b4e2 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/TODO
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/TODO
@@ -5,8 +5,6 @@ General fixes:
- Return "safe-to-break" bit from shaping.
-- Disable 'vert' if 'vrt2' is available (eg. Motoya fonts with arrow chars).
-
- Implement 'rand' feature.
- mask propagation? (when ligation, "or" the masks).
@@ -14,8 +12,6 @@ General fixes:
- Warn at compile time (and runtime with HB_DEBUG?) if no Unicode / font
funcs found / set.
-- Do proper rounding when scaling from font space? May be a non-issue.
-
- Misc features:
* init/medi/fina/isol for non-cursive scripts
@@ -29,12 +25,12 @@ API issues to fix before 1.0:
- hb-ft load_flags issues.
-- get_glyph() / get_glyph_variant()?
-
- Add pkg-config files for glue codes (harfbuzz-glib, etc)
- 'const' for getter APIs? (use mutable internally)
+- Remove hb_ot_shape_glyphs_closure()?
+
API additions
=============
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/autogen.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/autogen.sh
index 833a6219c86..42e69d0634b 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/autogen.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/autogen.sh
@@ -19,6 +19,13 @@ which pkg-config || {
exit 1
}
+echo -n "checking for gtkdocize... "
+which gtkdocize || {
+ echo "*** No gtkdocize found, please install it ***"
+ exit 1
+}
+gtkdocize || exit 1
+
echo -n "checking for autoreconf... "
which autoreconf || {
echo "*** No autoreconf found, please install it ***"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/config.h.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/config.h.in
index a2a37dcabc5..a2a37dcabc5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/config.h.in
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/config.h.in
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/configure.ac
index 4ce1f594175..29df3d17993 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/configure.ac
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/configure.ac
@@ -1,6 +1,6 @@
AC_PREREQ([2.64])
AC_INIT([HarfBuzz],
- [0.9.19],
+ [0.9.20],
[http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz],
[harfbuzz],
[http://harfbuzz.org/])
@@ -52,8 +52,16 @@ m4_define([hb_libtool_current],
HB_LIBTOOL_VERSION_INFO=hb_libtool_current:hb_libtool_revision:hb_libtool_age
AC_SUBST(HB_LIBTOOL_VERSION_INFO)
-dnl GOBJECT_INTROSPECTION_CHECK([0.9.0])
-dnl GTK_DOC_CHECK([1.15],[--flavour no-tmpl])
+# Documentation
+have_gtk_doc=false
+m4_ifdef([GTK_DOC_CHECK], [
+GTK_DOC_CHECK([1.15],[--flavour no-tmpl])
+ if test "x$enable_gtk_doc" = xyes; then
+ have_gtk_doc=true
+ fi
+], [
+ AM_CONDITIONAL([ENABLE_GTK_DOC], false)
+])
# Functions and headers
AC_CHECK_FUNCS(atexit mprotect sysconf getpagesize mmap isatty)
@@ -144,9 +152,18 @@ if $have_glib; then
fi
AM_CONDITIONAL(HAVE_GLIB, $have_glib)
+dnl ===========================================================================
+
+AC_ARG_WITH(gobject,
+ [AS_HELP_STRING([--with-gobject=@<:@yes/no/auto@:>@],
+ [Use gobject @<:@default=auto@:>@])],,
+ [with_gobject=no])
have_gobject=false
-if $have_glib; then
- PKG_CHECK_MODULES(GOBJECT, gobject-2.0 glib-2.0 >= 2.16, have_gobject=true, :)
+if test "x$with_gobject" = "xyes" -o "x$with_gobject" = "xauto"; then
+ PKG_CHECK_MODULES(GOBJECT, gobject-2.0 glib-2.0, have_gobject=true, :)
+fi
+if test "x$with_gobject" = "xyes" -a "x$have_gobject" != "xtrue"; then
+ AC_MSG_ERROR([gobject support requested but gobject-2.0 / glib-2.0 not found])
fi
if $have_gobject; then
AC_DEFINE(HAVE_GOBJECT, 1, [Have gobject2 library])
@@ -157,6 +174,25 @@ AM_CONDITIONAL(HAVE_GOBJECT, $have_gobject)
dnl ===========================================================================
+
+dnl ===========================================================================
+# Gobject-Introspection
+have_introspection=false
+m4_ifdef([GOBJECT_INTROSPECTION_CHECK], [
+ if $have_gobject; then
+ GOBJECT_INTROSPECTION_CHECK([1.32.0])
+ if test "x$found_introspection" = xyes; then
+ have_introspection=true
+ fi
+ else
+ AM_CONDITIONAL([HAVE_INTROSPECTION], false)
+ fi
+], [
+ AM_CONDITIONAL([HAVE_INTROSPECTION], false)
+])
+
+dnl ===========================================================================
+
have_ucdn=true
if $have_glib; then
have_ucdn=false
@@ -298,7 +334,7 @@ if test "x$with_uniscribe" = "xyes" -a "x$have_uniscribe" != "xtrue"; then
fi
if $have_uniscribe; then
UNISCRIBE_CFLAGS=
- UNISCRIBE_LIBS="-lusp10 -lgdi32"
+ UNISCRIBE_LIBS="-lusp10 -lgdi32 -lrpcrt4"
AC_SUBST(UNISCRIBE_CFLAGS)
AC_SUBST(UNISCRIBE_LIBS)
AC_DEFINE(HAVE_UNISCRIBE, 1, [Have Uniscribe library])
@@ -379,6 +415,8 @@ util/Makefile
test/Makefile
test/api/Makefile
test/shaping/Makefile
+docs/Makefile
+docs/reference/Makefile
])
AC_OUTPUT
@@ -406,4 +444,9 @@ Test / platform shapers (not normally needed):
ICU Layout Engine: ${have_icu_le}
Old HarfBuzz: ${have_hb_old}
Uniscribe: ${have_uniscribe}
+
+Other features:
+ Documentation: ${have_gtk_doc}
+ GObject bindings: ${have_gobject}
+ Introspection: ${have_introspection}
])
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.20/gtk-doc.make b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/gtk-doc.make
new file mode 100644
index 00000000000..ac30c4c4085
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/gtk-doc.make
@@ -0,0 +1,302 @@
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+
+if GTK_DOC_USE_LIBTOOL
+GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN = $(LIBTOOL) --mode=execute
+else
+GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN =
+endif
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+
+TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
+
+SETUP_FILES = \
+ $(content_files) \
+ $(DOC_MAIN_SGML_FILE) \
+ $(DOC_MODULE)-sections.txt \
+ $(DOC_MODULE)-overrides.txt
+
+EXTRA_DIST = \
+ $(HTML_IMAGES) \
+ $(SETUP_FILES)
+
+DOC_STAMPS=setup-build.stamp scan-build.stamp tmpl-build.stamp sgml-build.stamp \
+ html-build.stamp pdf-build.stamp \
+ tmpl.stamp sgml.stamp html.stamp pdf.stamp
+
+SCANOBJ_FILES = \
+ $(DOC_MODULE).args \
+ $(DOC_MODULE).hierarchy \
+ $(DOC_MODULE).interfaces \
+ $(DOC_MODULE).prerequisites \
+ $(DOC_MODULE).signals
+
+REPORT_FILES = \
+ $(DOC_MODULE)-undocumented.txt \
+ $(DOC_MODULE)-undeclared.txt \
+ $(DOC_MODULE)-unused.txt
+
+CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
+
+if ENABLE_GTK_DOC
+if GTK_DOC_BUILD_HTML
+HTML_BUILD_STAMP=html-build.stamp
+else
+HTML_BUILD_STAMP=
+endif
+if GTK_DOC_BUILD_PDF
+PDF_BUILD_STAMP=pdf-build.stamp
+else
+PDF_BUILD_STAMP=
+endif
+
+all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+else
+all-local:
+endif
+
+docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+
+$(REPORT_FILES): sgml-build.stamp
+
+#### setup ####
+
+GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_$(V))
+GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_SETUP_0=@echo " DOC Preparing build";
+
+setup-build.stamp:
+ -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \
+ if test "x$$files" != "x" ; then \
+ for file in $$files ; do \
+ test -f $(abs_srcdir)/$$file && \
+ cp -pu $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \
+ done; \
+ fi; \
+ test -d $(abs_srcdir)/tmpl && \
+ { cp -rp $(abs_srcdir)/tmpl $(abs_builddir)/; \
+ chmod -R u+w $(abs_builddir)/tmpl; } \
+ fi
+ $(AM_V_at)touch setup-build.stamp
+
+#### scan ####
+
+GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_$(V))
+GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files";
+
+GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_$(V))
+GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects";
+
+scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+ $(GTK_DOC_V_SCAN)_source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES)
+ $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \
+ scanobj_options=""; \
+ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ scanobj_options="--verbose"; \
+ fi; \
+ fi; \
+ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \
+ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \
+ else \
+ for i in $(SCANOBJ_FILES) ; do \
+ test -f $$i || touch $$i ; \
+ done \
+ fi
+ $(AM_V_at)touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
+ @true
+
+#### templates ####
+
+GTK_DOC_V_TMPL=$(GTK_DOC_V_TMPL_$(V))
+GTK_DOC_V_TMPL_=$(GTK_DOC_V_TMPL_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_TMPL_0=@echo " DOC Rebuilding template files";
+
+tmpl-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+ $(GTK_DOC_V_TMPL)gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+ $(AM_V_at)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ if test -w $(abs_srcdir) ; then \
+ cp -rp $(abs_builddir)/tmpl $(abs_srcdir)/; \
+ fi \
+ fi
+ $(AM_V_at)touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+ @true
+
+$(srcdir)/tmpl/*.sgml:
+ @true
+
+#### xml ####
+
+GTK_DOC_V_XML=$(GTK_DOC_V_XML_$(V))
+GTK_DOC_V_XML_=$(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_XML_0=@echo " DOC Building XML";
+
+sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
+ -$(GTK_DOC_V_XML)chmod -R u+w $(srcdir) && _source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS)
+ $(AM_V_at)touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+ @true
+
+#### html ####
+
+GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_$(V))
+GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_HTML_0=@echo " DOC Building HTML";
+
+GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_$(V))
+GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references";
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \
+ mkhtml_options=""; \
+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ mkhtml_options="$$mkhtml_options --verbose"; \
+ fi; \
+ fi; \
+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \
+ if test "$(?)" = "0"; then \
+ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \
+ fi; \
+ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+ -@test "x$(HTML_IMAGES)" = "x" || \
+ for file in $(HTML_IMAGES) ; do \
+ if test -f $(abs_srcdir)/$$file ; then \
+ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \
+ fi; \
+ if test -f $(abs_builddir)/$$file ; then \
+ cp $(abs_builddir)/$$file $(abs_builddir)/html; \
+ fi; \
+ done;
+ $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+ $(AM_V_at)touch html-build.stamp
+
+#### pdf ####
+
+GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_$(V))
+GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_PDF_0=@echo " DOC Building PDF";
+
+pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \
+ mkpdf_options=""; \
+ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ mkpdf_options="$$mkpdf_options --verbose"; \
+ fi; \
+ fi; \
+ if test "x$(HTML_IMAGES)" != "x"; then \
+ for img in $(HTML_IMAGES); do \
+ part=`dirname $$img`; \
+ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \
+ if test $$? != 0; then \
+ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \
+ fi; \
+ done; \
+ fi; \
+ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS)
+ $(AM_V_at)touch pdf-build.stamp
+
+##############
+
+clean-local:
+ @rm -f *~ *.bak
+ @rm -rf .libs
+
+distclean-local:
+ @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \
+ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+ @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \
+ rm -rf tmpl; \
+ fi
+
+maintainer-clean-local:
+ @rm -rf xml html
+
+install-data-local:
+ @installfiles=`echo $(builddir)/html/*`; \
+ if test "$$installfiles" = '$(builddir)/html/*'; \
+ then echo 1>&2 'Nothing to install' ; \
+ else \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ $(mkinstalldirs) $${installdir} ; \
+ for i in $$installfiles; do \
+ echo ' $(INSTALL_DATA) '$$i ; \
+ $(INSTALL_DATA) $$i $${installdir}; \
+ done; \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
+ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
+ fi; \
+ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
+ fi
+
+uninstall-local:
+ @if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ rm -rf $${installdir}
+
+#
+# Require gtk-doc when making dist
+#
+if ENABLE_GTK_DOC
+dist-check-gtkdoc: docs
+else
+dist-check-gtkdoc:
+ @echo "*** gtk-doc must be installed and enabled in order to make dist"
+ @false
+endif
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+ @mkdir $(distdir)/tmpl
+ @mkdir $(distdir)/html
+ @-cp ./tmpl/*.sgml $(distdir)/tmpl
+ @cp ./html/* $(distdir)/html
+ @-cp ./$(DOC_MODULE).pdf $(distdir)/
+ @-cp ./$(DOC_MODULE).types $(distdir)/
+ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/
+ @cd $(distdir) && rm -f $(DISTCLEANFILES)
+ @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/harfbuzz.doap b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/harfbuzz.doap
index d2896ebefa8..d2896ebefa8 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/harfbuzz.doap
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/harfbuzz.doap
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/Makefile.am
index 73804a1f586..684e415f8bd 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/Makefile.am
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/Makefile.am
@@ -28,6 +28,8 @@ HBSOURCES = \
hb-cache-private.hh \
hb-common.cc \
hb-fallback-shape.cc \
+ hb-face-private.hh \
+ hb-face.cc \
hb-font-private.hh \
hb-font.cc \
hb-mutex-private.hh \
@@ -61,6 +63,8 @@ HBHEADERS = \
hb-blob.h \
hb-buffer.h \
hb-common.h \
+ hb-deprecated.h \
+ hb-face.h \
hb-font.h \
hb-set.h \
hb-shape.h \
@@ -122,21 +126,6 @@ HBSOURCES += hb-glib.cc
HBHEADERS += hb-glib.h
endif
-if HAVE_GOBJECT
-HBCFLAGS += $(GOBJECT_CFLAGS)
-HBLIBS += $(GOBJECT_LIBS)
-HBSOURCES += hb-gobject-structs.cc
-nodist_HBSOURCES = hb-gobject-enums.cc
-HBHEADERS += hb-gobject.h
-BUILT_SOURCES += hb-gobject-enums.cc
-EXTRA_DIST += hb-gobject-enums.cc.tmpl
-DISTCLEANFILES += hb-gobject-enums.cc
-
-hb-gobject-enums.cc: hb-gobject-enums.cc.tmpl $(HBHEADERS)
- $(AM_V_GEN) $(GLIB_MKENUMS) --template $^ > "$@.tmp" && \
- mv "$@.tmp" "$@" || ( $(RM) "@.tmp" && false )
-endif
-
if HAVE_FREETYPE
HBCFLAGS += $(FREETYPE_CFLAGS)
HBLIBS += $(FREETYPE_LIBS)
@@ -232,6 +221,39 @@ pkgconfig_DATA += harfbuzz-icu.pc
EXTRA_DIST += harfbuzz-icu.pc.in
endif
+if HAVE_GOBJECT
+lib_LTLIBRARIES += libharfbuzz-gobject.la
+libharfbuzz_gobject_la_SOURCES = hb-gobject-structs.cc
+nodist_libharfbuzz_gobject_la_SOURCES = hb-gobject-enums.cc
+libharfbuzz_gobject_la_CPPFLAGS = $(GOBJECT_CFLAGS)
+libharfbuzz_gobject_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
+libharfbuzz_gobject_la_LIBADD = $(GOBJECT_LIBS) libharfbuzz.la
+pkginclude_HEADERS += hb-gobject.h hb-gobject-structs.h
+nodist_pkginclude_HEADERS += hb-gobject-enums.h
+pkgconfig_DATA += harfbuzz-gobject.pc
+EXTRA_DIST += harfbuzz-gobject.pc.in
+
+BUILT_SOURCES += \
+ hb-gobject-enums.cc \
+ hb-gobject-enums.h \
+ $(NULL)
+EXTRA_DIST += \
+ hb-gobject-enums.cc.tmpl \
+ hb-gobject-enums.h.tmpl \
+ $(NULL)
+DISTCLEANFILES += \
+ hb-gobject-enums.cc \
+ hb-gobject-enums.h \
+ $(NULL)
+hb-gobject-enums.%: hb-gobject-enums.%.tmpl $(HBHEADERS)
+ $(AM_V_GEN) $(GLIB_MKENUMS) \
+ --identifier-prefix hb_ --symbol-prefix hb_gobject \
+ --template $^ | \
+ sed 's/_t_get_type/_get_type/g; s/_T (/ (/g' > "$@.tmp" && \
+ mv "$@.tmp" "$@" || ( $(RM) "@.tmp" && false )
+endif
+
+
%.pc: %.pc.in $(top_builddir)/config.status
$(AM_V_GEN) \
$(SED) -e 's@%prefix%@$(prefix)@g' \
@@ -293,7 +315,7 @@ EXTRA_DIST += \
hb-ot-shape-complex-myanmar-machine.rl \
hb-ot-shape-complex-sea-machine.rl \
$(NULL)
-%.hh: %.rl
+.rl.hh:
$(AM_V_GEN)$(top_srcdir)/missing --run ragel -e -F1 -o "$@.tmp" "$<" && \
mv "$@.tmp" "$@" || ( $(RM) "$@.tmp" && false )
@@ -349,26 +371,44 @@ TESTS_ENVIRONMENT = \
HBHEADERS="$(HBHEADERS) $(HBNODISTHEADERS)" \
$(NULL)
-#-include $(INTROSPECTION_MAKEFILE)
-#INTROSPECTION_GIRS = hb-1.0.gir
-#INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_
-#INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
-#
-#if HAVE_INTROSPECTION
-#
-#hb-1.0.gir: libharfbuzz.la
-#hb_1_0_gir_INCLUDES = GObject-2.0
-#hb_1_0_gir_CFLAGS = $(INCLUDES) $(HBCFLAGS) -DHB_H -DHB_H_IN -DHB_OT_H -DHB_OT_H_IN
-#hb_1_0_gir_LIBS = libharfbuzz.la
-#hb_1_0_gir_FILES = $(HBHEADERS) $(HBNODISTHEADERS)
-#
-#girdir = $(datadir)/gir-1.0
-#gir_DATA = $(INTROSPECTION_GIRS)
-#
-#typelibdir = $(libdir)/girepository-1.0
-#typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
-#
-#CLEANFILES += $(gir_DATA) $(typelib_DATA)
-#endif
+if HAVE_INTROSPECTION
+
+-include $(INTROSPECTION_MAKEFILE)
+INTROSPECTION_GIRS = harfbuzz-$(HB_VERSION_MAJOR).0.gir # What does the 0 mean anyway?!
+INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ --warn-all
+INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
+
+harfbuzz-0.0.gir: libharfbuzz.la libharfbuzz-gobject.la
+harfbuzz_0_0_gir_INCLUDES = GObject-2.0
+harfbuzz_0_0_gir_CFLAGS = \
+ $(INCLUDES) \
+ $(HBCFLAGS) \
+ -DHB_H \
+ -DHB_H_IN \
+ -DHB_OT_H \
+ -DHB_OT_H_IN \
+ -DHB_GOBJECT_H \
+ -DHB_GOBJECT_H_IN \
+ $(NULL)
+harfbuzz_0_0_gir_LIBS = \
+ libharfbuzz.la \
+ libharfbuzz-gobject.la \
+ $(NULL)
+harfbuzz_0_0_gir_FILES = \
+ $(HBHEADERS) \
+ $(HBNODISTHEADERS) \
+ hb-gobject-enums.h \
+ hb-gobject-structs.h \
+ $(NULL)
+
+girdir = $(datadir)/gir-1.0
+gir_DATA = $(INTROSPECTION_GIRS)
+
+typelibdir = $(libdir)/girepository-1.0
+typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
+
+CLEANFILES += $(gir_DATA) $(typelib_DATA)
+
+endif
-include $(top_srcdir)/git.mk
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-c-linkage-decls.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-c-linkage-decls.sh
index 44cdfa0f23c..b10310f5384 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-c-linkage-decls.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-c-linkage-decls.sh
@@ -6,8 +6,8 @@ export LC_ALL
test -z "$srcdir" && srcdir=.
stat=0
-test "x$HBHEADERS" = x && HBHEADERS=`find . -maxdepth 1 -name 'hb*.h'`
-test "x$HBSOURCES" = x && HBSOURCES=`find . -maxdepth 1 -name 'hb*.h'`
+test "x$HBHEADERS" = x && HBHEADERS=`cd "$srcdir"; find . -maxdepth 1 -name 'hb*.h'`
+test "x$HBSOURCES" = x && HBSOURCES=`cd "$srcdir"; find . -maxdepth 1 -name 'hb*.h'`
for x in $HBHEADERS; do
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-header-guards.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-header-guards.sh
index af9fa7fc24e..9a3302c7f87 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-header-guards.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-header-guards.sh
@@ -6,8 +6,8 @@ export LC_ALL
test -z "$srcdir" && srcdir=.
stat=0
-test "x$HBHEADERS" = x && HBHEADERS=`find . -maxdepth 1 -name 'hb*.h'`
-test "x$HBSOURCES" = x && HBSOURCES=`find . -maxdepth 1 -name 'hb-*.cc' -or -name 'hb-*.hh'`
+test "x$HBHEADERS" = x && HBHEADERS=`cd "$srcdir"; find . -maxdepth 1 -name 'hb*.h'`
+test "x$HBSOURCES" = x && HBSOURCES=`cd "$srcdir"; find . -maxdepth 1 -name 'hb-*.cc' -or -name 'hb-*.hh'`
for x in $HBHEADERS $HBSOURCES; do
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-includes.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-includes.sh
index 79323a74fb2..5643c6973bc 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-includes.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-includes.sh
@@ -6,16 +6,14 @@ export LC_ALL
test -z "$srcdir" && srcdir=.
stat=0
-test "x$HBHEADERS" = x && HBHEADERS=`find . -maxdepth 1 -name 'hb*.h'`
-test "x$HBSOURCES" = x && HBSOURCES=`find . -maxdepth 1 -name 'hb-*.cc' -or -name 'hb-*.hh'`
-
-
-cd "$srcdir"
+test "x$HBHEADERS" = x && HBHEADERS=`cd "$srcdir"; find . -maxdepth 1 -name 'hb*.h'`
+test "x$HBSOURCES" = x && HBSOURCES=`cd "$srcdir"; find . -maxdepth 1 -name 'hb-*.cc' -or -name 'hb-*.hh'`
echo 'Checking that public header files #include "hb-common.h" or "hb.h" first (or none)'
for x in $HBHEADERS; do
+ test -f "$srcdir/$x" && x="$srcdir/$x"
grep '#.*\<include\>' "$x" /dev/null | head -n 1
done |
grep -v '"hb-common[.]h"' |
@@ -28,6 +26,7 @@ grep . >&2 && stat=1
echo 'Checking that source files #include "hb-*private.hh" first (or none)'
for x in $HBSOURCES; do
+ test -f "$srcdir/$x" && x="$srcdir/$x"
grep '#.*\<include\>' "$x" /dev/null | head -n 1
done |
grep -v '"hb-.*private[.]hh"' |
@@ -36,7 +35,10 @@ grep . >&2 && stat=1
echo 'Checking that there is no #include <hb.*.h>'
-grep '#.*\<include\>.*<.*hb' $HBHEADERS $HBSOURCES >&2 && stat=1
+for x in $HBHEADERS $HBSOURCES; do
+ test -f "$srcdir/$x" && x="$srcdir/$x"
+ grep '#.*\<include\>.*<.*hb' "$x" /dev/null >&2 && stat=1
+done
exit $stat
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-libstdc++.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-libstdc++.sh
index e7e0e295e1a..e7e0e295e1a 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-libstdc++.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-libstdc++.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-static-inits.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-static-inits.sh
index bb0a7ff630d..bb0a7ff630d 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-static-inits.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-static-inits.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-symbols.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-symbols.sh
index 73bfc9e9bfc..73bfc9e9bfc 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/check-symbols.sh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/check-symbols.sh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/gen-arabic-table.py b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/gen-arabic-table.py
index da5a4fcbf5c..da5a4fcbf5c 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/gen-arabic-table.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/gen-arabic-table.py
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/gen-indic-table.py b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/gen-indic-table.py
index 9ed3fd6d34d..9ed3fd6d34d 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/gen-indic-table.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/gen-indic-table.py
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/harfbuzz-gobject.pc.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/harfbuzz-gobject.pc.in
new file mode 100644
index 00000000000..70083601901
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/harfbuzz-gobject.pc.in
@@ -0,0 +1,12 @@
+prefix=%prefix%
+exec_prefix=%exec_prefix%
+libdir=%libdir%
+includedir=%includedir%
+
+Name: harfbuzz
+Description: HarfBuzz text shaping library GObject integration
+Version: %VERSION%
+
+Requires: harfbuzz gobject-2.0 glib-2.0
+Libs: -L${libdir} -lharfbuzz-gobject
+Cflags: -I${includedir}/harfbuzz
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/harfbuzz-icu.pc.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/harfbuzz-icu.pc.in
index 949869a3563..949869a3563 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/harfbuzz-icu.pc.in
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/harfbuzz-icu.pc.in
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/harfbuzz.pc.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/harfbuzz.pc.in
index 7f27bbbdef0..7f27bbbdef0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/harfbuzz.pc.in
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/harfbuzz.pc.in
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-atomic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-atomic-private.hh
index 9cc3bc5587c..9cc3bc5587c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-atomic-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-atomic-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-blob.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-blob.cc
index dfd134b7762..dfd134b7762 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-blob.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-blob.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-blob.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-blob.h
index d3d0f41b11c..d3d0f41b11c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-blob.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-blob.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-deserialize-json.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-deserialize-json.hh
index dead700db82..dead700db82 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-deserialize-json.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-deserialize-json.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-deserialize-json.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-deserialize-json.rl
index 7351b2ab47c..7351b2ab47c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-deserialize-json.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-deserialize-json.rl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-deserialize-text.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-deserialize-text.hh
index a38efe3a415..a38efe3a415 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-deserialize-text.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-deserialize-text.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-deserialize-text.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-deserialize-text.rl
index 8856580fbe3..8856580fbe3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-deserialize-text.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-deserialize-text.rl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-private.hh
index a8cf7702446..a8cf7702446 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-serialize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-serialize.cc
index dc47ba73e08..eac69000dd0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer-serialize.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer-serialize.cc
@@ -100,10 +100,10 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer,
*p++ = '"';
}
else
- p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "%u", info[i].codepoint);
+ p += MAX (0, 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);
+ p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"cl\":%u", info[i].cluster));
}
if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS))
@@ -161,21 +161,21 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer,
p += strlen (p);
}
else
- p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "%u", info[i].codepoint);
+ p += MAX (0, 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);
+ p += MAX (0, 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 += MAX (0, 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);
+ p += MAX (0, 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);
+ p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",%d", pos[i].y_advance));
}
if (buf_size > (p - b))
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer.cc
index c0ca484f940..340bd5351b3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer.cc
@@ -176,7 +176,7 @@ hb_buffer_t::clear (void)
hb_segment_properties_t default_props = HB_SEGMENT_PROPERTIES_DEFAULT;
props = default_props;
- flags = HB_BUFFER_FLAGS_DEFAULT;
+ flags = HB_BUFFER_FLAG_DEFAULT;
content_type = HB_BUFFER_CONTENT_TYPE_INVALID;
in_error = false;
@@ -624,7 +624,7 @@ hb_buffer_get_empty (void)
const_cast<hb_unicode_funcs_t *> (&_hb_unicode_funcs_nil),
HB_SEGMENT_PROPERTIES_DEFAULT,
- HB_BUFFER_FLAGS_DEFAULT,
+ HB_BUFFER_FLAG_DEFAULT,
HB_BUFFER_CONTENT_TYPE_INVALID,
true, /* in_error */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer.h
index 55a40457193..87c4ce58e83 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-buffer.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-buffer.h
@@ -171,8 +171,8 @@ void
hb_buffer_guess_segment_properties (hb_buffer_t *buffer);
-typedef enum {
- HB_BUFFER_FLAGS_DEFAULT = 0x00000000,
+typedef enum { /*< flags >*/
+ HB_BUFFER_FLAG_DEFAULT = 0x00000000,
HB_BUFFER_FLAG_BOT = 0x00000001, /* Beginning-of-text */
HB_BUFFER_FLAG_EOT = 0x00000002, /* End-of-text */
HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES = 0x00000004
@@ -274,8 +274,8 @@ hb_buffer_normalize_glyphs (hb_buffer_t *buffer);
* Serialize
*/
-typedef enum {
- HB_BUFFER_SERIALIZE_FLAGS_DEFAULT = 0x00000000,
+typedef enum { /*< flags >*/
+ HB_BUFFER_SERIALIZE_FLAG_DEFAULT = 0x00000000,
HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS = 0x00000001,
HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS = 0x00000002,
HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES = 0x00000004
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-cache-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-cache-private.hh
index 19b70b7e395..19b70b7e395 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-cache-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-cache-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-common.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-common.cc
index 7c6d26290dc..7c6d26290dc 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-common.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-common.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-common.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-common.h
new file mode 100644
index 00000000000..9079b2c046f
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-common.h
@@ -0,0 +1,333 @@
+/*
+ * Copyright © 2007,2008,2009 Red Hat, Inc.
+ * Copyright © 2011,2012 Google, Inc.
+ *
+ * This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ * Red Hat Author(s): Behdad Esfahbod
+ * Google Author(s): Behdad Esfahbod
+ */
+
+#ifndef HB_H_IN
+#error "Include <hb.h> instead."
+#endif
+
+#ifndef HB_COMMON_H
+#define HB_COMMON_H
+
+#ifndef HB_BEGIN_DECLS
+# ifdef __cplusplus
+# define HB_BEGIN_DECLS extern "C" {
+# define HB_END_DECLS }
+# else /* !__cplusplus */
+# define HB_BEGIN_DECLS
+# define HB_END_DECLS
+# endif /* !__cplusplus */
+#endif
+
+#if !defined (HB_DONT_DEFINE_STDINT)
+
+#if defined (_SVR4) || defined (SVR4) || defined (__OpenBSD__) || \
+ defined (_sgi) || defined (__sun) || defined (sun) || \
+ defined (__digital__) || defined (__HP_cc)
+# include <inttypes.h>
+#elif defined (_AIX)
+# include <sys/inttypes.h>
+/* VS 2010 (_MSC_VER 1600) has stdint.h */
+#elif defined (_MSC_VER) && _MSC_VER < 1600
+typedef __int8 int8_t;
+typedef unsigned __int8 uint8_t;
+typedef __int16 int16_t;
+typedef unsigned __int16 uint16_t;
+typedef __int32 int32_t;
+typedef unsigned __int32 uint32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#else
+# include <stdint.h>
+#endif
+
+#endif
+
+HB_BEGIN_DECLS
+
+
+typedef int hb_bool_t;
+
+typedef uint32_t hb_codepoint_t;
+typedef int32_t hb_position_t;
+typedef uint32_t hb_mask_t;
+
+typedef union _hb_var_int_t {
+ uint32_t u32;
+ int32_t i32;
+ uint16_t u16[2];
+ int16_t i16[2];
+ uint8_t u8[4];
+ int8_t i8[4];
+} hb_var_int_t;
+
+
+/* hb_tag_t */
+
+typedef uint32_t hb_tag_t;
+
+#define HB_TAG(a,b,c,d) ((hb_tag_t)((((uint8_t)(a))<<24)|(((uint8_t)(b))<<16)|(((uint8_t)(c))<<8)|((uint8_t)(d))))
+#define HB_UNTAG(tag) ((uint8_t)((tag)>>24)), ((uint8_t)((tag)>>16)), ((uint8_t)((tag)>>8)), ((uint8_t)(tag))
+
+#define HB_TAG_NONE HB_TAG(0,0,0,0)
+
+/* len=-1 means str is NUL-terminated. */
+hb_tag_t
+hb_tag_from_string (const char *str, int len);
+
+/* buf should have 4 bytes. */
+void
+hb_tag_to_string (hb_tag_t tag, char *buf);
+
+
+/* hb_direction_t */
+
+typedef enum {
+ HB_DIRECTION_INVALID = 0,
+ HB_DIRECTION_LTR = 4,
+ HB_DIRECTION_RTL,
+ HB_DIRECTION_TTB,
+ HB_DIRECTION_BTT
+} hb_direction_t;
+
+/* len=-1 means str is NUL-terminated */
+hb_direction_t
+hb_direction_from_string (const char *str, int len);
+
+const char *
+hb_direction_to_string (hb_direction_t direction);
+
+#define HB_DIRECTION_IS_HORIZONTAL(dir) ((((unsigned int) (dir)) & ~1U) == 4)
+#define HB_DIRECTION_IS_VERTICAL(dir) ((((unsigned int) (dir)) & ~1U) == 6)
+#define HB_DIRECTION_IS_FORWARD(dir) ((((unsigned int) (dir)) & ~2U) == 4)
+#define HB_DIRECTION_IS_BACKWARD(dir) ((((unsigned int) (dir)) & ~2U) == 5)
+#define HB_DIRECTION_IS_VALID(dir) ((((unsigned int) (dir)) & ~3U) == 4)
+#define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1)) /* Direction must be valid */
+
+
+/* hb_language_t */
+
+typedef struct hb_language_impl_t *hb_language_t;
+
+/* len=-1 means str is NUL-terminated */
+hb_language_t
+hb_language_from_string (const char *str, int len);
+
+const char *
+hb_language_to_string (hb_language_t language);
+
+#define HB_LANGUAGE_INVALID ((hb_language_t) NULL)
+
+hb_language_t
+hb_language_get_default (void);
+
+
+/* hb_script_t */
+
+/* http://unicode.org/iso15924/ */
+/* http://goo.gl/x9ilM */
+/* Unicode Character Database property: Script (sc) */
+typedef enum
+{
+ /*1.1*/ HB_SCRIPT_COMMON = HB_TAG ('Z','y','y','y'),
+ /*1.1*/ HB_SCRIPT_INHERITED = HB_TAG ('Z','i','n','h'),
+ /*5.0*/ HB_SCRIPT_UNKNOWN = HB_TAG ('Z','z','z','z'),
+
+ /*1.1*/ HB_SCRIPT_ARABIC = HB_TAG ('A','r','a','b'),
+ /*1.1*/ HB_SCRIPT_ARMENIAN = HB_TAG ('A','r','m','n'),
+ /*1.1*/ HB_SCRIPT_BENGALI = HB_TAG ('B','e','n','g'),
+ /*1.1*/ HB_SCRIPT_CYRILLIC = HB_TAG ('C','y','r','l'),
+ /*1.1*/ HB_SCRIPT_DEVANAGARI = HB_TAG ('D','e','v','a'),
+ /*1.1*/ HB_SCRIPT_GEORGIAN = HB_TAG ('G','e','o','r'),
+ /*1.1*/ HB_SCRIPT_GREEK = HB_TAG ('G','r','e','k'),
+ /*1.1*/ HB_SCRIPT_GUJARATI = HB_TAG ('G','u','j','r'),
+ /*1.1*/ HB_SCRIPT_GURMUKHI = HB_TAG ('G','u','r','u'),
+ /*1.1*/ HB_SCRIPT_HANGUL = HB_TAG ('H','a','n','g'),
+ /*1.1*/ HB_SCRIPT_HAN = HB_TAG ('H','a','n','i'),
+ /*1.1*/ HB_SCRIPT_HEBREW = HB_TAG ('H','e','b','r'),
+ /*1.1*/ HB_SCRIPT_HIRAGANA = HB_TAG ('H','i','r','a'),
+ /*1.1*/ HB_SCRIPT_KANNADA = HB_TAG ('K','n','d','a'),
+ /*1.1*/ HB_SCRIPT_KATAKANA = HB_TAG ('K','a','n','a'),
+ /*1.1*/ HB_SCRIPT_LAO = HB_TAG ('L','a','o','o'),
+ /*1.1*/ HB_SCRIPT_LATIN = HB_TAG ('L','a','t','n'),
+ /*1.1*/ HB_SCRIPT_MALAYALAM = HB_TAG ('M','l','y','m'),
+ /*1.1*/ HB_SCRIPT_ORIYA = HB_TAG ('O','r','y','a'),
+ /*1.1*/ HB_SCRIPT_TAMIL = HB_TAG ('T','a','m','l'),
+ /*1.1*/ HB_SCRIPT_TELUGU = HB_TAG ('T','e','l','u'),
+ /*1.1*/ HB_SCRIPT_THAI = HB_TAG ('T','h','a','i'),
+
+ /*2.0*/ HB_SCRIPT_TIBETAN = HB_TAG ('T','i','b','t'),
+
+ /*3.0*/ HB_SCRIPT_BOPOMOFO = HB_TAG ('B','o','p','o'),
+ /*3.0*/ HB_SCRIPT_BRAILLE = HB_TAG ('B','r','a','i'),
+ /*3.0*/ HB_SCRIPT_CANADIAN_SYLLABICS = HB_TAG ('C','a','n','s'),
+ /*3.0*/ HB_SCRIPT_CHEROKEE = HB_TAG ('C','h','e','r'),
+ /*3.0*/ HB_SCRIPT_ETHIOPIC = HB_TAG ('E','t','h','i'),
+ /*3.0*/ HB_SCRIPT_KHMER = HB_TAG ('K','h','m','r'),
+ /*3.0*/ HB_SCRIPT_MONGOLIAN = HB_TAG ('M','o','n','g'),
+ /*3.0*/ HB_SCRIPT_MYANMAR = HB_TAG ('M','y','m','r'),
+ /*3.0*/ HB_SCRIPT_OGHAM = HB_TAG ('O','g','a','m'),
+ /*3.0*/ HB_SCRIPT_RUNIC = HB_TAG ('R','u','n','r'),
+ /*3.0*/ HB_SCRIPT_SINHALA = HB_TAG ('S','i','n','h'),
+ /*3.0*/ HB_SCRIPT_SYRIAC = HB_TAG ('S','y','r','c'),
+ /*3.0*/ HB_SCRIPT_THAANA = HB_TAG ('T','h','a','a'),
+ /*3.0*/ HB_SCRIPT_YI = HB_TAG ('Y','i','i','i'),
+
+ /*3.1*/ HB_SCRIPT_DESERET = HB_TAG ('D','s','r','t'),
+ /*3.1*/ HB_SCRIPT_GOTHIC = HB_TAG ('G','o','t','h'),
+ /*3.1*/ HB_SCRIPT_OLD_ITALIC = HB_TAG ('I','t','a','l'),
+
+ /*3.2*/ HB_SCRIPT_BUHID = HB_TAG ('B','u','h','d'),
+ /*3.2*/ HB_SCRIPT_HANUNOO = HB_TAG ('H','a','n','o'),
+ /*3.2*/ HB_SCRIPT_TAGALOG = HB_TAG ('T','g','l','g'),
+ /*3.2*/ HB_SCRIPT_TAGBANWA = HB_TAG ('T','a','g','b'),
+
+ /*4.0*/ HB_SCRIPT_CYPRIOT = HB_TAG ('C','p','r','t'),
+ /*4.0*/ HB_SCRIPT_LIMBU = HB_TAG ('L','i','m','b'),
+ /*4.0*/ HB_SCRIPT_LINEAR_B = HB_TAG ('L','i','n','b'),
+ /*4.0*/ HB_SCRIPT_OSMANYA = HB_TAG ('O','s','m','a'),
+ /*4.0*/ HB_SCRIPT_SHAVIAN = HB_TAG ('S','h','a','w'),
+ /*4.0*/ HB_SCRIPT_TAI_LE = HB_TAG ('T','a','l','e'),
+ /*4.0*/ HB_SCRIPT_UGARITIC = HB_TAG ('U','g','a','r'),
+
+ /*4.1*/ HB_SCRIPT_BUGINESE = HB_TAG ('B','u','g','i'),
+ /*4.1*/ HB_SCRIPT_COPTIC = HB_TAG ('C','o','p','t'),
+ /*4.1*/ HB_SCRIPT_GLAGOLITIC = HB_TAG ('G','l','a','g'),
+ /*4.1*/ HB_SCRIPT_KHAROSHTHI = HB_TAG ('K','h','a','r'),
+ /*4.1*/ HB_SCRIPT_NEW_TAI_LUE = HB_TAG ('T','a','l','u'),
+ /*4.1*/ HB_SCRIPT_OLD_PERSIAN = HB_TAG ('X','p','e','o'),
+ /*4.1*/ HB_SCRIPT_SYLOTI_NAGRI = HB_TAG ('S','y','l','o'),
+ /*4.1*/ HB_SCRIPT_TIFINAGH = HB_TAG ('T','f','n','g'),
+
+ /*5.0*/ HB_SCRIPT_BALINESE = HB_TAG ('B','a','l','i'),
+ /*5.0*/ HB_SCRIPT_CUNEIFORM = HB_TAG ('X','s','u','x'),
+ /*5.0*/ HB_SCRIPT_NKO = HB_TAG ('N','k','o','o'),
+ /*5.0*/ HB_SCRIPT_PHAGS_PA = HB_TAG ('P','h','a','g'),
+ /*5.0*/ HB_SCRIPT_PHOENICIAN = HB_TAG ('P','h','n','x'),
+
+ /*5.1*/ HB_SCRIPT_CARIAN = HB_TAG ('C','a','r','i'),
+ /*5.1*/ HB_SCRIPT_CHAM = HB_TAG ('C','h','a','m'),
+ /*5.1*/ HB_SCRIPT_KAYAH_LI = HB_TAG ('K','a','l','i'),
+ /*5.1*/ HB_SCRIPT_LEPCHA = HB_TAG ('L','e','p','c'),
+ /*5.1*/ HB_SCRIPT_LYCIAN = HB_TAG ('L','y','c','i'),
+ /*5.1*/ HB_SCRIPT_LYDIAN = HB_TAG ('L','y','d','i'),
+ /*5.1*/ HB_SCRIPT_OL_CHIKI = HB_TAG ('O','l','c','k'),
+ /*5.1*/ HB_SCRIPT_REJANG = HB_TAG ('R','j','n','g'),
+ /*5.1*/ HB_SCRIPT_SAURASHTRA = HB_TAG ('S','a','u','r'),
+ /*5.1*/ HB_SCRIPT_SUNDANESE = HB_TAG ('S','u','n','d'),
+ /*5.1*/ HB_SCRIPT_VAI = HB_TAG ('V','a','i','i'),
+
+ /*5.2*/ HB_SCRIPT_AVESTAN = HB_TAG ('A','v','s','t'),
+ /*5.2*/ HB_SCRIPT_BAMUM = HB_TAG ('B','a','m','u'),
+ /*5.2*/ HB_SCRIPT_EGYPTIAN_HIEROGLYPHS = HB_TAG ('E','g','y','p'),
+ /*5.2*/ HB_SCRIPT_IMPERIAL_ARAMAIC = HB_TAG ('A','r','m','i'),
+ /*5.2*/ HB_SCRIPT_INSCRIPTIONAL_PAHLAVI = HB_TAG ('P','h','l','i'),
+ /*5.2*/ HB_SCRIPT_INSCRIPTIONAL_PARTHIAN = HB_TAG ('P','r','t','i'),
+ /*5.2*/ HB_SCRIPT_JAVANESE = HB_TAG ('J','a','v','a'),
+ /*5.2*/ HB_SCRIPT_KAITHI = HB_TAG ('K','t','h','i'),
+ /*5.2*/ HB_SCRIPT_LISU = HB_TAG ('L','i','s','u'),
+ /*5.2*/ HB_SCRIPT_MEETEI_MAYEK = HB_TAG ('M','t','e','i'),
+ /*5.2*/ HB_SCRIPT_OLD_SOUTH_ARABIAN = HB_TAG ('S','a','r','b'),
+ /*5.2*/ HB_SCRIPT_OLD_TURKIC = HB_TAG ('O','r','k','h'),
+ /*5.2*/ HB_SCRIPT_SAMARITAN = HB_TAG ('S','a','m','r'),
+ /*5.2*/ HB_SCRIPT_TAI_THAM = HB_TAG ('L','a','n','a'),
+ /*5.2*/ HB_SCRIPT_TAI_VIET = HB_TAG ('T','a','v','t'),
+
+ /*6.0*/ HB_SCRIPT_BATAK = HB_TAG ('B','a','t','k'),
+ /*6.0*/ HB_SCRIPT_BRAHMI = HB_TAG ('B','r','a','h'),
+ /*6.0*/ HB_SCRIPT_MANDAIC = HB_TAG ('M','a','n','d'),
+
+ /*6.1*/ HB_SCRIPT_CHAKMA = HB_TAG ('C','a','k','m'),
+ /*6.1*/ HB_SCRIPT_MEROITIC_CURSIVE = HB_TAG ('M','e','r','c'),
+ /*6.1*/ HB_SCRIPT_MEROITIC_HIEROGLYPHS = HB_TAG ('M','e','r','o'),
+ /*6.1*/ HB_SCRIPT_MIAO = HB_TAG ('P','l','r','d'),
+ /*6.1*/ HB_SCRIPT_SHARADA = HB_TAG ('S','h','r','d'),
+ /*6.1*/ HB_SCRIPT_SORA_SOMPENG = HB_TAG ('S','o','r','a'),
+ /*6.1*/ HB_SCRIPT_TAKRI = HB_TAG ('T','a','k','r'),
+
+ /* No script set. */
+ /*---*/ HB_SCRIPT_INVALID = HB_TAG_NONE
+} hb_script_t;
+
+/* These are moved out of hb_script_t because glib-mkenums chokes otherwise. */
+#if 0
+ /*7.0*/ HB_SCRIPT_BASSA_VAH = HB_TAG ('B','a','s','s'),
+ /*7.0*/ HB_SCRIPT_CAUCASIAN_ALBANIAN = HB_TAG ('A','g','h','b'),
+ /*7.0*/ HB_SCRIPT_DUPLOYAN = HB_TAG ('D','u','p','l'),
+ /*7.0*/ HB_SCRIPT_ELBASAN = HB_TAG ('E','l','b','a'),
+ /*7.0*/ HB_SCRIPT_GRANTHA = HB_TAG ('G','r','a','n'),
+ /*7.0*/ HB_SCRIPT_KHOJKI = HB_TAG ('K','h','o','j'),
+ /*7.0*/ HB_SCRIPT_KHUDAWADI = HB_TAG ('S','i','n','d'),
+ /*7.0*/ HB_SCRIPT_LINEAR_A = HB_TAG ('L','i','n','a'),
+ /*7.0*/ HB_SCRIPT_MAHAJANI = HB_TAG ('M','a','h','j'),
+ /*7.0*/ HB_SCRIPT_MANICHAEAN = HB_TAG ('M','a','n','i'),
+ /*7.0*/ HB_SCRIPT_MENDE_KIKAKUI = HB_TAG ('M','e','n','d'),
+ /*7.0*/ HB_SCRIPT_MODI = ???
+ /*7.0*/ HB_SCRIPT_MRO = HB_TAG ('M','r','o','o'),
+ /*7.0*/ HB_SCRIPT_NABATAEAN = HB_TAG ('N','b','a','t'),
+ /*7.0*/ HB_SCRIPT_OLD_NORTH_ARABIAN = HB_TAG ('N','a','r','b'),
+ /*7.0*/ HB_SCRIPT_OLD_PERMIC = HB_TAG ('P','e','r','m'),
+ /*7.0*/ HB_SCRIPT_PAHAWH_HMONG = HB_TAG ('H','m','n','g'),
+ /*7.0*/ HB_SCRIPT_PALMYRENE = HB_TAG ('P','a','l','m'),
+ /*7.0*/ HB_SCRIPT_PAU_CIN_HAU = ???
+ /*7.0*/ HB_SCRIPT_PSALTER_PAHLAVI = HB_TAG ('P','h','l','p'),
+ /*7.0*/ HB_SCRIPT_SIDDHAM = ???
+ /*7.0*/ HB_SCRIPT_TIRHUTA = HB_TAG ('T','i','r','h'),
+ /*7.0*/ HB_SCRIPT_WARANG_CITI = HB_TAG ('W','a','r','a'),
+#endif
+
+
+/* Script functions */
+
+hb_script_t
+hb_script_from_iso15924_tag (hb_tag_t tag);
+
+/* suger for tag_from_string() then script_from_iso15924_tag */
+/* len=-1 means s is NUL-terminated */
+hb_script_t
+hb_script_from_string (const char *s, int len);
+
+hb_tag_t
+hb_script_to_iso15924_tag (hb_script_t script);
+
+hb_direction_t
+hb_script_get_horizontal_direction (hb_script_t script);
+
+
+/* User data */
+
+typedef struct hb_user_data_key_t {
+ /*< private >*/
+ char unused;
+} hb_user_data_key_t;
+
+typedef void (*hb_destroy_func_t) (void *user_data);
+
+
+HB_END_DECLS
+
+#endif /* HB_COMMON_H */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-coretext.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-coretext.cc
new file mode 100644
index 00000000000..f780973565b
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-coretext.cc
@@ -0,0 +1,757 @@
+/*
+ * Copyright © 2012,2013 Mozilla Foundation.
+ * 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.
+ *
+ * Mozilla Author(s): Jonathan Kew
+ * Google Author(s): Behdad Esfahbod
+ */
+
+#define HB_SHAPER coretext
+#include "hb-shaper-impl-private.hh"
+
+#include "hb-coretext.h"
+
+
+#ifndef HB_DEBUG_CORETEXT
+#define HB_DEBUG_CORETEXT (HB_DEBUG+0)
+#endif
+
+
+HB_SHAPER_DATA_ENSURE_DECLARE(coretext, face)
+HB_SHAPER_DATA_ENSURE_DECLARE(coretext, font)
+
+
+/*
+ * shaper face data
+ */
+
+struct hb_coretext_shaper_face_data_t {
+ CGFontRef cg_font;
+};
+
+static void
+release_data (void *info, const void *data, size_t size)
+{
+ assert (hb_blob_get_length ((hb_blob_t *) info) == size &&
+ hb_blob_get_data ((hb_blob_t *) info, NULL) == data);
+
+ hb_blob_destroy ((hb_blob_t *) info);
+}
+
+hb_coretext_shaper_face_data_t *
+_hb_coretext_shaper_face_data_create (hb_face_t *face)
+{
+ hb_coretext_shaper_face_data_t *data = (hb_coretext_shaper_face_data_t *) calloc (1, sizeof (hb_coretext_shaper_face_data_t));
+ if (unlikely (!data))
+ return NULL;
+
+ hb_blob_t *blob = hb_face_reference_blob (face);
+ unsigned int blob_length;
+ const char *blob_data = hb_blob_get_data (blob, &blob_length);
+ if (unlikely (!blob_length))
+ DEBUG_MSG (CORETEXT, face, "Face has empty blob");
+
+ CGDataProviderRef provider = CGDataProviderCreateWithData (blob, blob_data, blob_length, &release_data);
+ data->cg_font = CGFontCreateWithDataProvider (provider);
+ CGDataProviderRelease (provider);
+
+ if (unlikely (!data->cg_font)) {
+ DEBUG_MSG (CORETEXT, face, "Face CGFontCreateWithDataProvider() failed");
+ free (data);
+ return NULL;
+ }
+
+ return data;
+}
+
+void
+_hb_coretext_shaper_face_data_destroy (hb_coretext_shaper_face_data_t *data)
+{
+ CFRelease (data->cg_font);
+ free (data);
+}
+
+CGFontRef
+hb_coretext_face_get_cg_font (hb_face_t *face)
+{
+ if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return NULL;
+ hb_coretext_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face);
+ return face_data->cg_font;
+}
+
+
+/*
+ * shaper font data
+ */
+
+struct hb_coretext_shaper_font_data_t {
+ CTFontRef ct_font;
+};
+
+hb_coretext_shaper_font_data_t *
+_hb_coretext_shaper_font_data_create (hb_font_t *font)
+{
+ if (unlikely (!hb_coretext_shaper_face_data_ensure (font->face))) return NULL;
+
+ hb_coretext_shaper_font_data_t *data = (hb_coretext_shaper_font_data_t *) calloc (1, sizeof (hb_coretext_shaper_font_data_t));
+ if (unlikely (!data))
+ return NULL;
+
+ hb_face_t *face = font->face;
+ hb_coretext_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face);
+
+ data->ct_font = CTFontCreateWithGraphicsFont (face_data->cg_font, font->y_scale, NULL, NULL);
+ if (unlikely (!data->ct_font)) {
+ DEBUG_MSG (CORETEXT, font, "Font CTFontCreateWithGraphicsFont() failed");
+ free (data);
+ return NULL;
+ }
+
+ return data;
+}
+
+void
+_hb_coretext_shaper_font_data_destroy (hb_coretext_shaper_font_data_t *data)
+{
+ CFRelease (data->ct_font);
+ free (data);
+}
+
+
+/*
+ * shaper shape_plan data
+ */
+
+struct hb_coretext_shaper_shape_plan_data_t {};
+
+hb_coretext_shaper_shape_plan_data_t *
+_hb_coretext_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan HB_UNUSED,
+ const hb_feature_t *user_features HB_UNUSED,
+ unsigned int num_user_features HB_UNUSED)
+{
+ return (hb_coretext_shaper_shape_plan_data_t *) HB_SHAPER_DATA_SUCCEEDED;
+}
+
+void
+_hb_coretext_shaper_shape_plan_data_destroy (hb_coretext_shaper_shape_plan_data_t *data HB_UNUSED)
+{
+}
+
+CTFontRef
+hb_coretext_font_get_ct_font (hb_font_t *font)
+{
+ if (unlikely (!hb_coretext_shaper_font_data_ensure (font))) return NULL;
+ hb_coretext_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font);
+ return font_data->ct_font;
+}
+
+
+/*
+ * shaper
+ */
+
+struct feature_record_t {
+ unsigned int feature;
+ unsigned int setting;
+};
+
+struct active_feature_t {
+ feature_record_t rec;
+ unsigned int order;
+
+ static int cmp (const active_feature_t *a, const active_feature_t *b) {
+ return a->rec.feature < b->rec.feature ? -1 : a->rec.feature > b->rec.feature ? 1 :
+ a->order < b->order ? -1 : a->order > b->order ? 1 :
+ a->rec.setting < b->rec.setting ? -1 : a->rec.setting > b->rec.setting ? 1 :
+ 0;
+ }
+ bool operator== (const active_feature_t *f) {
+ return cmp (this, f) == 0;
+ }
+};
+
+struct feature_event_t {
+ unsigned int index;
+ bool start;
+ active_feature_t feature;
+
+ static int cmp (const feature_event_t *a, const feature_event_t *b) {
+ return a->index < b->index ? -1 : a->index > b->index ? 1 :
+ a->start < b->start ? -1 : a->start > b->start ? 1 :
+ active_feature_t::cmp (&a->feature, &b->feature);
+ }
+};
+
+struct range_record_t {
+ CTFontRef font;
+ unsigned int index_first; /* == start */
+ unsigned int index_last; /* == end - 1 */
+};
+
+
+/* The following enum members are added in OS X 10.8. */
+#define kAltHalfWidthTextSelector 6
+#define kAltProportionalTextSelector 5
+#define kAlternateHorizKanaOffSelector 1
+#define kAlternateHorizKanaOnSelector 0
+#define kAlternateKanaType 34
+#define kAlternateVertKanaOffSelector 3
+#define kAlternateVertKanaOnSelector 2
+#define kCaseSensitiveLayoutOffSelector 1
+#define kCaseSensitiveLayoutOnSelector 0
+#define kCaseSensitiveLayoutType 33
+#define kCaseSensitiveSpacingOffSelector 3
+#define kCaseSensitiveSpacingOnSelector 2
+#define kContextualAlternatesOffSelector 1
+#define kContextualAlternatesOnSelector 0
+#define kContextualAlternatesType 36
+#define kContextualLigaturesOffSelector 19
+#define kContextualLigaturesOnSelector 18
+#define kContextualSwashAlternatesOffSelector 5
+#define kContextualSwashAlternatesOnSelector 4
+#define kDefaultLowerCaseSelector 0
+#define kDefaultUpperCaseSelector 0
+#define kHistoricalLigaturesOffSelector 21
+#define kHistoricalLigaturesOnSelector 20
+#define kHojoCharactersSelector 12
+#define kJIS2004CharactersSelector 11
+#define kLowerCasePetiteCapsSelector 2
+#define kLowerCaseSmallCapsSelector 1
+#define kLowerCaseType 37
+#define kMathematicalGreekOffSelector 11
+#define kMathematicalGreekOnSelector 10
+#define kNLCCharactersSelector 13
+#define kQuarterWidthTextSelector 4
+#define kScientificInferiorsSelector 4
+#define kStylisticAltEightOffSelector 17
+#define kStylisticAltEightOnSelector 16
+#define kStylisticAltEighteenOffSelector 37
+#define kStylisticAltEighteenOnSelector 36
+#define kStylisticAltElevenOffSelector 23
+#define kStylisticAltElevenOnSelector 22
+#define kStylisticAltFifteenOffSelector 31
+#define kStylisticAltFifteenOnSelector 30
+#define kStylisticAltFiveOffSelector 11
+#define kStylisticAltFiveOnSelector 10
+#define kStylisticAltFourOffSelector 9
+#define kStylisticAltFourOnSelector 8
+#define kStylisticAltFourteenOffSelector 29
+#define kStylisticAltFourteenOnSelector 28
+#define kStylisticAltNineOffSelector 19
+#define kStylisticAltNineOnSelector 18
+#define kStylisticAltNineteenOffSelector 39
+#define kStylisticAltNineteenOnSelector 38
+#define kStylisticAltOneOffSelector 3
+#define kStylisticAltOneOnSelector 2
+#define kStylisticAltSevenOffSelector 15
+#define kStylisticAltSevenOnSelector 14
+#define kStylisticAltSeventeenOffSelector 35
+#define kStylisticAltSeventeenOnSelector 34
+#define kStylisticAltSixOffSelector 13
+#define kStylisticAltSixOnSelector 12
+#define kStylisticAltSixteenOffSelector 33
+#define kStylisticAltSixteenOnSelector 32
+#define kStylisticAltTenOffSelector 21
+#define kStylisticAltTenOnSelector 20
+#define kStylisticAltThirteenOffSelector 27
+#define kStylisticAltThirteenOnSelector 26
+#define kStylisticAltThreeOffSelector 7
+#define kStylisticAltThreeOnSelector 6
+#define kStylisticAltTwelveOffSelector 25
+#define kStylisticAltTwelveOnSelector 24
+#define kStylisticAltTwentyOffSelector 41
+#define kStylisticAltTwentyOnSelector 40
+#define kStylisticAltTwoOffSelector 5
+#define kStylisticAltTwoOnSelector 4
+#define kStylisticAlternativesType 35
+#define kSwashAlternatesOffSelector 3
+#define kSwashAlternatesOnSelector 2
+#define kThirdWidthTextSelector 3
+#define kTraditionalNamesCharactersSelector 14
+#define kUpperCasePetiteCapsSelector 2
+#define kUpperCaseSmallCapsSelector 1
+#define kUpperCaseType 38
+
+/* Table data courtesy of Apple. */
+struct feature_mapping_t {
+ FourCharCode otFeatureTag;
+ uint16_t aatFeatureType;
+ uint16_t selectorToEnable;
+ uint16_t selectorToDisable;
+} feature_mappings[] = {
+ { 'c2pc', kUpperCaseType, kUpperCasePetiteCapsSelector, kDefaultUpperCaseSelector },
+ { 'c2sc', kUpperCaseType, kUpperCaseSmallCapsSelector, kDefaultUpperCaseSelector },
+ { 'calt', kContextualAlternatesType, kContextualAlternatesOnSelector, kContextualAlternatesOffSelector },
+ { 'case', kCaseSensitiveLayoutType, kCaseSensitiveLayoutOnSelector, kCaseSensitiveLayoutOffSelector },
+ { 'clig', kLigaturesType, kContextualLigaturesOnSelector, kContextualLigaturesOffSelector },
+ { 'cpsp', kCaseSensitiveLayoutType, kCaseSensitiveSpacingOnSelector, kCaseSensitiveSpacingOffSelector },
+ { 'cswh', kContextualAlternatesType, kContextualSwashAlternatesOnSelector, kContextualSwashAlternatesOffSelector },
+ { 'dlig', kLigaturesType, kRareLigaturesOnSelector, kRareLigaturesOffSelector },
+ { 'expt', kCharacterShapeType, kExpertCharactersSelector, 16 },
+ { 'frac', kFractionsType, kDiagonalFractionsSelector, kNoFractionsSelector },
+ { 'fwid', kTextSpacingType, kMonospacedTextSelector, 7 },
+ { 'halt', kTextSpacingType, kAltHalfWidthTextSelector, 7 },
+ { 'hist', kLigaturesType, kHistoricalLigaturesOnSelector, kHistoricalLigaturesOffSelector },
+ { 'hkna', kAlternateKanaType, kAlternateHorizKanaOnSelector, kAlternateHorizKanaOffSelector, },
+ { 'hlig', kLigaturesType, kHistoricalLigaturesOnSelector, kHistoricalLigaturesOffSelector },
+ { 'hngl', kTransliterationType, kHanjaToHangulSelector, kNoTransliterationSelector },
+ { 'hojo', kCharacterShapeType, kHojoCharactersSelector, 16 },
+ { 'hwid', kTextSpacingType, kHalfWidthTextSelector, 7 },
+ { 'ital', kItalicCJKRomanType, kCJKItalicRomanOnSelector, kCJKItalicRomanOffSelector },
+ { 'jp04', kCharacterShapeType, kJIS2004CharactersSelector, 16 },
+ { 'jp78', kCharacterShapeType, kJIS1978CharactersSelector, 16 },
+ { 'jp83', kCharacterShapeType, kJIS1983CharactersSelector, 16 },
+ { 'jp90', kCharacterShapeType, kJIS1990CharactersSelector, 16 },
+ { 'liga', kLigaturesType, kCommonLigaturesOnSelector, kCommonLigaturesOffSelector },
+ { 'lnum', kNumberCaseType, kUpperCaseNumbersSelector, 2 },
+ { 'mgrk', kMathematicalExtrasType, kMathematicalGreekOnSelector, kMathematicalGreekOffSelector },
+ { 'nlck', kCharacterShapeType, kNLCCharactersSelector, 16 },
+ { 'onum', kNumberCaseType, kLowerCaseNumbersSelector, 2 },
+ { 'ordn', kVerticalPositionType, kOrdinalsSelector, kNormalPositionSelector },
+ { 'palt', kTextSpacingType, kAltProportionalTextSelector, 7 },
+ { 'pcap', kLowerCaseType, kLowerCasePetiteCapsSelector, kDefaultLowerCaseSelector },
+ { 'pkna', kTextSpacingType, kProportionalTextSelector, 7 },
+ { 'pnum', kNumberSpacingType, kProportionalNumbersSelector, 4 },
+ { 'pwid', kTextSpacingType, kProportionalTextSelector, 7 },
+ { 'qwid', kTextSpacingType, kQuarterWidthTextSelector, 7 },
+ { 'ruby', kRubyKanaType, kRubyKanaOnSelector, kRubyKanaOffSelector },
+ { 'sinf', kVerticalPositionType, kScientificInferiorsSelector, kNormalPositionSelector },
+ { 'smcp', kLowerCaseType, kLowerCaseSmallCapsSelector, kDefaultLowerCaseSelector },
+ { 'smpl', kCharacterShapeType, kSimplifiedCharactersSelector, 16 },
+ { 'ss01', kStylisticAlternativesType, kStylisticAltOneOnSelector, kStylisticAltOneOffSelector },
+ { 'ss02', kStylisticAlternativesType, kStylisticAltTwoOnSelector, kStylisticAltTwoOffSelector },
+ { 'ss03', kStylisticAlternativesType, kStylisticAltThreeOnSelector, kStylisticAltThreeOffSelector },
+ { 'ss04', kStylisticAlternativesType, kStylisticAltFourOnSelector, kStylisticAltFourOffSelector },
+ { 'ss05', kStylisticAlternativesType, kStylisticAltFiveOnSelector, kStylisticAltFiveOffSelector },
+ { 'ss06', kStylisticAlternativesType, kStylisticAltSixOnSelector, kStylisticAltSixOffSelector },
+ { 'ss07', kStylisticAlternativesType, kStylisticAltSevenOnSelector, kStylisticAltSevenOffSelector },
+ { 'ss08', kStylisticAlternativesType, kStylisticAltEightOnSelector, kStylisticAltEightOffSelector },
+ { 'ss09', kStylisticAlternativesType, kStylisticAltNineOnSelector, kStylisticAltNineOffSelector },
+ { 'ss10', kStylisticAlternativesType, kStylisticAltTenOnSelector, kStylisticAltTenOffSelector },
+ { 'ss11', kStylisticAlternativesType, kStylisticAltElevenOnSelector, kStylisticAltElevenOffSelector },
+ { 'ss12', kStylisticAlternativesType, kStylisticAltTwelveOnSelector, kStylisticAltTwelveOffSelector },
+ { 'ss13', kStylisticAlternativesType, kStylisticAltThirteenOnSelector, kStylisticAltThirteenOffSelector },
+ { 'ss14', kStylisticAlternativesType, kStylisticAltFourteenOnSelector, kStylisticAltFourteenOffSelector },
+ { 'ss15', kStylisticAlternativesType, kStylisticAltFifteenOnSelector, kStylisticAltFifteenOffSelector },
+ { 'ss16', kStylisticAlternativesType, kStylisticAltSixteenOnSelector, kStylisticAltSixteenOffSelector },
+ { 'ss17', kStylisticAlternativesType, kStylisticAltSeventeenOnSelector, kStylisticAltSeventeenOffSelector },
+ { 'ss18', kStylisticAlternativesType, kStylisticAltEighteenOnSelector, kStylisticAltEighteenOffSelector },
+ { 'ss19', kStylisticAlternativesType, kStylisticAltNineteenOnSelector, kStylisticAltNineteenOffSelector },
+ { 'ss20', kStylisticAlternativesType, kStylisticAltTwentyOnSelector, kStylisticAltTwentyOffSelector },
+ { 'subs', kVerticalPositionType, kInferiorsSelector, kNormalPositionSelector },
+ { 'sups', kVerticalPositionType, kSuperiorsSelector, kNormalPositionSelector },
+ { 'swsh', kContextualAlternatesType, kSwashAlternatesOnSelector, kSwashAlternatesOffSelector },
+ { 'titl', kStyleOptionsType, kTitlingCapsSelector, kNoStyleOptionsSelector },
+ { 'tnam', kCharacterShapeType, kTraditionalNamesCharactersSelector, 16 },
+ { 'tnum', kNumberSpacingType, kMonospacedNumbersSelector, 4 },
+ { 'trad', kCharacterShapeType, kTraditionalCharactersSelector, 16 },
+ { 'twid', kTextSpacingType, kThirdWidthTextSelector, 7 },
+ { 'unic', kLetterCaseType, 14, 15 },
+ { 'valt', kTextSpacingType, kAltProportionalTextSelector, 7 },
+ { 'vert', kVerticalSubstitutionType, kSubstituteVerticalFormsOnSelector, kSubstituteVerticalFormsOffSelector },
+ { 'vhal', kTextSpacingType, kAltHalfWidthTextSelector, 7 },
+ { 'vkna', kAlternateKanaType, kAlternateVertKanaOnSelector, kAlternateVertKanaOffSelector },
+ { 'vpal', kTextSpacingType, kAltProportionalTextSelector, 7 },
+ { 'vrt2', kVerticalSubstitutionType, kSubstituteVerticalFormsOnSelector, kSubstituteVerticalFormsOffSelector },
+ { 'zero', kTypographicExtrasType, kSlashedZeroOnSelector, kSlashedZeroOffSelector },
+};
+
+static int
+_hb_feature_mapping_cmp (const void *key_, const void *entry_)
+{
+ unsigned int key = * (unsigned int *) key_;
+ const feature_mapping_t * entry = (const feature_mapping_t *) entry_;
+ return key < entry->otFeatureTag ? -1 :
+ key > entry->otFeatureTag ? 1 :
+ 0;
+}
+
+hb_bool_t
+_hb_coretext_shape (hb_shape_plan_t *shape_plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer,
+ const hb_feature_t *features,
+ unsigned int num_features)
+{
+ hb_face_t *face = font->face;
+ hb_coretext_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font);
+
+ /*
+ * Set up features.
+ * (copied + modified from code from hb-uniscribe.cc)
+ */
+ hb_auto_array_t<feature_record_t> feature_records;
+ hb_auto_array_t<range_record_t> range_records;
+ if (num_features)
+ {
+ /* Sort features by start/end events. */
+ hb_auto_array_t<feature_event_t> feature_events;
+ for (unsigned int i = 0; i < num_features; i++)
+ {
+ const feature_mapping_t * mapping = (const feature_mapping_t *) bsearch (&features[i].tag,
+ feature_mappings,
+ ARRAY_LENGTH (feature_mappings),
+ sizeof (feature_mappings[0]),
+ _hb_feature_mapping_cmp);
+ if (!mapping)
+ continue;
+
+ active_feature_t feature;
+ feature.rec.feature = mapping->aatFeatureType;
+ feature.rec.setting = features[i].value ? mapping->selectorToEnable : mapping->selectorToDisable;
+ feature.order = i;
+
+ feature_event_t *event;
+
+ event = feature_events.push ();
+ if (unlikely (!event))
+ goto fail_features;
+ event->index = features[i].start;
+ event->start = true;
+ event->feature = feature;
+
+ event = feature_events.push ();
+ if (unlikely (!event))
+ goto fail_features;
+ event->index = features[i].end;
+ event->start = false;
+ event->feature = feature;
+ }
+ feature_events.sort ();
+ /* Add a strategic final event. */
+ {
+ active_feature_t feature;
+ feature.rec.feature = HB_TAG_NONE;
+ feature.rec.setting = 0;
+ feature.order = num_features + 1;
+
+ feature_event_t *event = feature_events.push ();
+ if (unlikely (!event))
+ goto fail_features;
+ event->index = 0; /* This value does magic. */
+ event->start = false;
+ event->feature = feature;
+ }
+
+ /* Scan events and save features for each range. */
+ hb_auto_array_t<active_feature_t> active_features;
+ unsigned int last_index = 0;
+ for (unsigned int i = 0; i < feature_events.len; i++)
+ {
+ feature_event_t *event = &feature_events[i];
+
+ if (event->index != last_index)
+ {
+ /* Save a snapshot of active features and the range. */
+ range_record_t *range = range_records.push ();
+ if (unlikely (!range))
+ goto fail_features;
+
+ unsigned int offset = feature_records.len;
+
+ if (active_features.len)
+ {
+ CFMutableArrayRef features_array = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks);
+
+ /* TODO sort and resolve conflicting features? */
+ /* active_features.sort (); */
+ for (unsigned int j = 0; j < active_features.len; j++)
+ {
+ CFStringRef keys[2] = {
+ kCTFontFeatureTypeIdentifierKey,
+ kCTFontFeatureSelectorIdentifierKey
+ };
+ CFNumberRef values[2] = {
+ CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &active_features[j].rec.feature),
+ CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &active_features[j].rec.setting)
+ };
+ CFDictionaryRef dict = CFDictionaryCreate (kCFAllocatorDefault,
+ (const void **) keys,
+ (const void **) values,
+ 2,
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+ CFRelease (values[0]);
+ CFRelease (values[1]);
+
+ CFArrayAppendValue (features_array, dict);
+ CFRelease (dict);
+
+ }
+
+ CFDictionaryRef attributes = CFDictionaryCreate (kCFAllocatorDefault,
+ (const void **) &kCTFontFeatureSettingsAttribute,
+ (const void **) &features_array,
+ 1,
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+ CFRelease (features_array);
+
+ CTFontDescriptorRef font_desc = CTFontDescriptorCreateWithAttributes (attributes);
+ CFRelease (attributes);
+
+ range->font = CTFontCreateCopyWithAttributes (font_data->ct_font, 0.0, NULL, font_desc);
+
+ CFRelease (font_desc);
+ }
+ else
+ {
+ range->font = NULL;
+ }
+
+ range->index_first = last_index;
+ range->index_last = event->index - 1;
+
+ last_index = event->index;
+ }
+
+ if (event->start) {
+ active_feature_t *feature = active_features.push ();
+ if (unlikely (!feature))
+ goto fail_features;
+ *feature = event->feature;
+ } else {
+ active_feature_t *feature = active_features.find (&event->feature);
+ if (feature)
+ active_features.remove (feature - active_features.array);
+ }
+ }
+
+ if (!range_records.len) /* No active feature found. */
+ goto fail_features;
+ }
+ else
+ {
+ fail_features:
+ num_features = 0;
+ }
+
+#define FAIL(...) \
+ HB_STMT_START { \
+ DEBUG_MSG (CORETEXT, NULL, __VA_ARGS__); \
+ return false; \
+ } HB_STMT_END;
+
+ unsigned int scratch_size;
+ char *scratch = (char *) buffer->get_scratch_buffer (&scratch_size);
+
+#define utf16_index() var1.u32
+
+ UniChar *pchars = (UniChar *) scratch;
+ unsigned int chars_len = 0;
+ for (unsigned int i = 0; i < buffer->len; i++) {
+ hb_codepoint_t c = buffer->info[i].codepoint;
+ buffer->info[i].utf16_index() = chars_len;
+ if (likely (c < 0x10000))
+ pchars[chars_len++] = c;
+ else if (unlikely (c >= 0x110000))
+ pchars[chars_len++] = 0xFFFD;
+ else {
+ pchars[chars_len++] = 0xD800 + ((c - 0x10000) >> 10);
+ pchars[chars_len++] = 0xDC00 + ((c - 0x10000) & ((1 << 10) - 1));
+ }
+ }
+
+#undef utf16_index
+
+ CFStringRef string_ref = CFStringCreateWithCharactersNoCopy (NULL,
+ pchars, chars_len,
+ kCFAllocatorNull);
+
+ CFMutableAttributedStringRef attr_string = CFAttributedStringCreateMutable (NULL, chars_len);
+ CFAttributedStringReplaceString (attr_string, CFRangeMake (0, 0), string_ref);
+ CFRelease (string_ref);
+ CFAttributedStringSetAttribute (attr_string, CFRangeMake (0, chars_len),
+ kCTFontAttributeName, font_data->ct_font);
+
+ if (num_features)
+ {
+ unsigned int *log_clusters = (unsigned int *) (pchars + chars_len);
+
+ /* Need log_clusters to assign features. */
+ chars_len = 0;
+ for (unsigned int i = 0; i < buffer->len; i++)
+ {
+ hb_codepoint_t c = buffer->info[i].codepoint;
+ unsigned int cluster = buffer->info[i].cluster;
+ log_clusters[chars_len++] = cluster;
+ if (c >= 0x10000 && c < 0x110000)
+ log_clusters[chars_len++] = cluster; /* Surrogates. */
+ }
+
+ unsigned int start = 0;
+ range_record_t *last_range = &range_records[0];
+ for (unsigned int k = 0; k < chars_len; k++)
+ {
+ range_record_t *range = last_range;
+ while (log_clusters[k] < range->index_first)
+ range--;
+ while (log_clusters[k] > range->index_last)
+ range++;
+ if (range != last_range)
+ {
+ if (last_range->font)
+ CFAttributedStringSetAttribute (attr_string, CFRangeMake (start, k - start),
+ kCTFontAttributeName, last_range->font);
+
+ start = k;
+ }
+
+ last_range = range;
+ }
+ if (start != chars_len && last_range->font)
+ CFAttributedStringSetAttribute (attr_string, CFRangeMake (start, chars_len - start - 1),
+ kCTFontAttributeName, last_range->font);
+
+ for (unsigned int i = 0; i < range_records.len; i++)
+ if (range_records[i].font)
+ CFRelease (range_records[i].font);
+ }
+
+ CTLineRef line = CTLineCreateWithAttributedString (attr_string);
+ CFRelease (attr_string);
+
+ CFArrayRef glyph_runs = CTLineGetGlyphRuns (line);
+ unsigned int num_runs = CFArrayGetCount (glyph_runs);
+
+ buffer->len = 0;
+
+ const CFRange range_all = CFRangeMake (0, 0);
+
+ for (unsigned int i = 0; i < num_runs; i++) {
+ CTRunRef run = (CTRunRef) CFArrayGetValueAtIndex (glyph_runs, i);
+
+ unsigned int num_glyphs = CTRunGetGlyphCount (run);
+ if (num_glyphs == 0)
+ continue;
+
+ buffer->ensure (buffer->len + num_glyphs);
+
+ /* Testing indicates that CTRunGetGlyphsPtr (almost?) always succeeds,
+ * and so copying data to our own buffer with CTRunGetGlyphs will be
+ * extremely rare. */
+
+ unsigned int scratch_size;
+ char *scratch = (char *) buffer->get_scratch_buffer (&scratch_size);
+
+#define ALLOCATE_ARRAY(Type, name, len) \
+ Type *name = (Type *) scratch; \
+ scratch += (len) * sizeof ((name)[0]); \
+ scratch_size -= (len) * sizeof ((name)[0]);
+
+ const CGGlyph* glyphs = CTRunGetGlyphsPtr (run);
+ if (!glyphs) {
+ ALLOCATE_ARRAY (CGGlyph, glyph_buf, num_glyphs);
+ CTRunGetGlyphs (run, range_all, glyph_buf);
+ glyphs = glyph_buf;
+ }
+
+ const CGPoint* positions = CTRunGetPositionsPtr (run);
+ if (!positions) {
+ ALLOCATE_ARRAY (CGPoint, position_buf, num_glyphs);
+ CTRunGetPositions (run, range_all, position_buf);
+ positions = position_buf;
+ }
+
+ const CFIndex* string_indices = CTRunGetStringIndicesPtr (run);
+ if (!string_indices) {
+ ALLOCATE_ARRAY (CFIndex, index_buf, num_glyphs);
+ CTRunGetStringIndices (run, range_all, index_buf);
+ string_indices = index_buf;
+ }
+
+#undef ALLOCATE_ARRAY
+
+ double run_width = CTRunGetTypographicBounds (run, range_all, NULL, NULL, NULL);
+
+ for (unsigned int j = 0; j < num_glyphs; j++) {
+ double advance = (j + 1 < num_glyphs ? positions[j + 1].x : positions[0].x + run_width) - positions[j].x;
+
+ hb_glyph_info_t *info = &buffer->info[buffer->len];
+
+ info->codepoint = glyphs[j];
+ info->cluster = string_indices[j];
+
+ /* Currently, we do all x-positioning by setting the advance, we never use x-offset. */
+ info->mask = advance;
+ info->var1.u32 = 0;
+ info->var2.u32 = positions[j].y;
+
+ buffer->len++;
+ }
+ }
+
+ buffer->clear_positions ();
+
+ unsigned int count = buffer->len;
+ for (unsigned int i = 0; i < count; ++i) {
+ hb_glyph_info_t *info = &buffer->info[i];
+ hb_glyph_position_t *pos = &buffer->pos[i];
+
+ /* TODO vertical */
+ pos->x_advance = info->mask;
+ pos->x_offset = info->var1.u32;
+ pos->y_offset = info->var2.u32;
+ }
+
+ /* Fix up clusters so that we never return out-of-order indices;
+ * if core text has reordered glyphs, we'll merge them to the
+ * beginning of the reordered cluster.
+ *
+ * This does *not* mean we'll form the same clusters as Uniscribe
+ * or the native OT backend, only that the cluster indices will be
+ * monotonic in the output buffer. */
+ if (HB_DIRECTION_IS_FORWARD (buffer->props.direction)) {
+ unsigned int prev_cluster = 0;
+ for (unsigned int i = 0; i < count; i++) {
+ unsigned int curr_cluster = buffer->info[i].cluster;
+ if (curr_cluster < prev_cluster) {
+ for (unsigned int j = i; j > 0; j--) {
+ if (buffer->info[j - 1].cluster > curr_cluster)
+ buffer->info[j - 1].cluster = curr_cluster;
+ else
+ break;
+ }
+ }
+ prev_cluster = curr_cluster;
+ }
+ } else {
+ unsigned int prev_cluster = (unsigned int)-1;
+ for (unsigned int i = 0; i < count; i++) {
+ unsigned int curr_cluster = buffer->info[i].cluster;
+ if (curr_cluster > prev_cluster) {
+ for (unsigned int j = i; j > 0; j--) {
+ if (buffer->info[j - 1].cluster < curr_cluster)
+ buffer->info[j - 1].cluster = curr_cluster;
+ else
+ break;
+ }
+ }
+ prev_cluster = curr_cluster;
+ }
+ }
+
+ CFRelease (line);
+
+ return true;
+}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-coretext.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-coretext.h
index c4954fa1b2c..c4954fa1b2c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-coretext.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-coretext.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-gobject-structs.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-deprecated.h
index cec48542275..30ae4b1caf7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-gobject-structs.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-deprecated.h
@@ -1,5 +1,5 @@
/*
- * Copyright © 2011 Google, Inc.
+ * Copyright © 2013 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
@@ -24,40 +24,28 @@
* Google Author(s): Behdad Esfahbod
*/
-#include "hb-private.hh"
+#ifndef HB_H_IN
+#error "Include <hb.h> instead."
+#endif
+
+#ifndef HB_DEPRECATED_H
+#define HB_DEPRECATED_H
+
+#include "hb-common.h"
+#include "hb-unicode.h"
+#include "hb-font.h"
+
+HB_BEGIN_DECLS
+
+#ifndef HB_DISABLE_DEPRECATED
+
+#define HB_SCRIPT_CANADIAN_ABORIGINAL HB_SCRIPT_CANADIAN_SYLLABICS
+
+#define HB_BUFFER_FLAGS_DEFAULT HB_BUFFER_FLAG_DEFAULT
+#define HB_BUFFER_SERIALIZE_FLAGS_DEFAULT HB_BUFFER_SERIALIZE_FLAG_DEFAULT
-/* g++ didn't like older gtype.h gcc-only code path. */
-#include <glib.h>
-#if !GLIB_CHECK_VERSION(2,29,16)
-#undef __GNUC__
-#undef __GNUC_MINOR__
-#define __GNUC__ 2
-#define __GNUC_MINOR__ 6
#endif
-#include "hb-gobject.h"
-
-#define _HB_DEFINE_BOXED_TYPE(Name,underscore_name,copy_func,free_func) \
-GType \
-underscore_name##_get_type (void) \
-{ \
- static volatile gsize type = 0; \
- if (g_once_init_enter (&type)) { \
- GType t = g_boxed_type_register_static (g_intern_static_string (#Name), \
- (GBoxedCopyFunc) copy_func, \
- (GBoxedFreeFunc) free_func); \
- g_once_init_leave (&type, t); \
- } \
- return type; \
-}
-
-#define HB_DEFINE_BOXED_TYPE(name) \
- _HB_DEFINE_BOXED_TYPE (hb_##name, hb_gobject_##name, hb_##name##_reference, hb_##name##_destroy);
-
-HB_DEFINE_BOXED_TYPE (buffer)
-HB_DEFINE_BOXED_TYPE (blob)
-HB_DEFINE_BOXED_TYPE (face)
-HB_DEFINE_BOXED_TYPE (font)
-HB_DEFINE_BOXED_TYPE (font_funcs)
-HB_DEFINE_BOXED_TYPE (unicode_funcs)
+HB_END_DECLS
+#endif /* HB_DEPRECATED_H */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-face-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-face-private.hh
new file mode 100644
index 00000000000..b33be0e5fce
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-face-private.hh
@@ -0,0 +1,108 @@
+/*
+ * Copyright © 2009 Red Hat, Inc.
+ * Copyright © 2011 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.
+ *
+ * Red Hat Author(s): Behdad Esfahbod
+ * Google Author(s): Behdad Esfahbod
+ */
+
+#ifndef HB_FACE_PRIVATE_HH
+#define HB_FACE_PRIVATE_HH
+
+#include "hb-private.hh"
+
+#include "hb-font.h"
+#include "hb-object-private.hh"
+#include "hb-shaper-private.hh"
+#include "hb-shape-plan-private.hh"
+
+
+/*
+ * hb_face_t
+ */
+
+struct hb_face_t {
+ hb_object_header_t header;
+ ASSERT_POD ();
+
+ hb_bool_t immutable;
+
+ hb_reference_table_func_t reference_table_func;
+ void *user_data;
+ hb_destroy_func_t destroy;
+
+ unsigned int index;
+ mutable unsigned int upem;
+ mutable unsigned int num_glyphs;
+
+ struct hb_shaper_data_t shaper_data;
+
+ struct plan_node_t {
+ hb_shape_plan_t *shape_plan;
+ plan_node_t *next;
+ } *shape_plans;
+
+
+ inline hb_blob_t *reference_table (hb_tag_t tag) const
+ {
+ hb_blob_t *blob;
+
+ if (unlikely (!this || !reference_table_func))
+ return hb_blob_get_empty ();
+
+ blob = reference_table_func (/*XXX*/const_cast<hb_face_t *> (this), tag, user_data);
+ if (unlikely (!blob))
+ return hb_blob_get_empty ();
+
+ return blob;
+ }
+
+ inline HB_PURE_FUNC unsigned int get_upem (void) const
+ {
+ if (unlikely (!upem))
+ load_upem ();
+ return upem;
+ }
+
+ inline unsigned int get_num_glyphs (void) const
+ {
+ if (unlikely (num_glyphs == (unsigned int) -1))
+ load_num_glyphs ();
+ return num_glyphs;
+ }
+
+ private:
+ HB_INTERNAL void load_upem (void) const;
+ HB_INTERNAL void load_num_glyphs (void) const;
+};
+
+extern HB_INTERNAL const hb_face_t _hb_face_nil;
+
+#define HB_SHAPER_DATA_CREATE_FUNC_EXTRA_ARGS
+#define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_PROTOTYPE(shaper, face);
+#include "hb-shaper-list.hh"
+#undef HB_SHAPER_IMPLEMENT
+#undef HB_SHAPER_DATA_CREATE_FUNC_EXTRA_ARGS
+
+
+#endif /* HB_FACE_PRIVATE_HH */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-face.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-face.cc
new file mode 100644
index 00000000000..d8b9ed8c3f0
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-face.cc
@@ -0,0 +1,311 @@
+/*
+ * Copyright © 2009 Red Hat, Inc.
+ * Copyright © 2012 Google, Inc.
+ *
+ * This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ * Red Hat Author(s): Behdad Esfahbod
+ * Google Author(s): Behdad Esfahbod
+ */
+
+#include "hb-private.hh"
+
+#include "hb-ot-layout-private.hh"
+
+#include "hb-font-private.hh"
+#include "hb-blob.h"
+#include "hb-open-file-private.hh"
+#include "hb-ot-head-table.hh"
+#include "hb-ot-maxp-table.hh"
+
+#include "hb-cache-private.hh"
+
+#include <string.h>
+
+
+/*
+ * hb_face_t
+ */
+
+const hb_face_t _hb_face_nil = {
+ HB_OBJECT_HEADER_STATIC,
+
+ true, /* immutable */
+
+ NULL, /* reference_table_func */
+ NULL, /* user_data */
+ NULL, /* destroy */
+
+ 0, /* index */
+ 1000, /* upem */
+ 0, /* num_glyphs */
+
+ {
+#define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_INVALID,
+#include "hb-shaper-list.hh"
+#undef HB_SHAPER_IMPLEMENT
+ },
+
+ NULL, /* shape_plans */
+};
+
+
+hb_face_t *
+hb_face_create_for_tables (hb_reference_table_func_t reference_table_func,
+ void *user_data,
+ hb_destroy_func_t destroy)
+{
+ hb_face_t *face;
+
+ if (!reference_table_func || !(face = hb_object_create<hb_face_t> ())) {
+ if (destroy)
+ destroy (user_data);
+ return hb_face_get_empty ();
+ }
+
+ face->reference_table_func = reference_table_func;
+ face->user_data = user_data;
+ face->destroy = destroy;
+
+ face->upem = 0;
+ face->num_glyphs = (unsigned int) -1;
+
+ return face;
+}
+
+
+typedef struct hb_face_for_data_closure_t {
+ hb_blob_t *blob;
+ unsigned int index;
+} hb_face_for_data_closure_t;
+
+static hb_face_for_data_closure_t *
+_hb_face_for_data_closure_create (hb_blob_t *blob, unsigned int index)
+{
+ hb_face_for_data_closure_t *closure;
+
+ closure = (hb_face_for_data_closure_t *) malloc (sizeof (hb_face_for_data_closure_t));
+ if (unlikely (!closure))
+ return NULL;
+
+ closure->blob = blob;
+ closure->index = index;
+
+ return closure;
+}
+
+static void
+_hb_face_for_data_closure_destroy (hb_face_for_data_closure_t *closure)
+{
+ hb_blob_destroy (closure->blob);
+ free (closure);
+}
+
+static hb_blob_t *
+_hb_face_for_data_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data)
+{
+ hb_face_for_data_closure_t *data = (hb_face_for_data_closure_t *) user_data;
+
+ if (tag == HB_TAG_NONE)
+ return hb_blob_reference (data->blob);
+
+ const OT::OpenTypeFontFile &ot_file = *OT::Sanitizer<OT::OpenTypeFontFile>::lock_instance (data->blob);
+ const OT::OpenTypeFontFace &ot_face = ot_file.get_face (data->index);
+
+ const OT::OpenTypeTable &table = ot_face.get_table_by_tag (tag);
+
+ hb_blob_t *blob = hb_blob_create_sub_blob (data->blob, table.offset, table.length);
+
+ return blob;
+}
+
+hb_face_t *
+hb_face_create (hb_blob_t *blob,
+ unsigned int index)
+{
+ hb_face_t *face;
+
+ if (unlikely (!blob || !hb_blob_get_length (blob)))
+ return hb_face_get_empty ();
+
+ hb_face_for_data_closure_t *closure = _hb_face_for_data_closure_create (OT::Sanitizer<OT::OpenTypeFontFile>::sanitize (hb_blob_reference (blob)), index);
+
+ if (unlikely (!closure))
+ return hb_face_get_empty ();
+
+ face = hb_face_create_for_tables (_hb_face_for_data_reference_table,
+ closure,
+ (hb_destroy_func_t) _hb_face_for_data_closure_destroy);
+
+ hb_face_set_index (face, index);
+
+ return face;
+}
+
+hb_face_t *
+hb_face_get_empty (void)
+{
+ return const_cast<hb_face_t *> (&_hb_face_nil);
+}
+
+
+hb_face_t *
+hb_face_reference (hb_face_t *face)
+{
+ return hb_object_reference (face);
+}
+
+void
+hb_face_destroy (hb_face_t *face)
+{
+ if (!hb_object_destroy (face)) return;
+
+ for (hb_face_t::plan_node_t *node = face->shape_plans; node; )
+ {
+ hb_face_t::plan_node_t *next = node->next;
+ hb_shape_plan_destroy (node->shape_plan);
+ free (node);
+ node = next;
+ }
+
+#define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_DESTROY(shaper, face);
+#include "hb-shaper-list.hh"
+#undef HB_SHAPER_IMPLEMENT
+
+ if (face->destroy)
+ face->destroy (face->user_data);
+
+ free (face);
+}
+
+hb_bool_t
+hb_face_set_user_data (hb_face_t *face,
+ hb_user_data_key_t *key,
+ void * data,
+ hb_destroy_func_t destroy,
+ hb_bool_t replace)
+{
+ return hb_object_set_user_data (face, key, data, destroy, replace);
+}
+
+void *
+hb_face_get_user_data (hb_face_t *face,
+ hb_user_data_key_t *key)
+{
+ return hb_object_get_user_data (face, key);
+}
+
+void
+hb_face_make_immutable (hb_face_t *face)
+{
+ if (hb_object_is_inert (face))
+ return;
+
+ face->immutable = true;
+}
+
+hb_bool_t
+hb_face_is_immutable (hb_face_t *face)
+{
+ return face->immutable;
+}
+
+
+hb_blob_t *
+hb_face_reference_table (hb_face_t *face,
+ hb_tag_t tag)
+{
+ return face->reference_table (tag);
+}
+
+hb_blob_t *
+hb_face_reference_blob (hb_face_t *face)
+{
+ return face->reference_table (HB_TAG_NONE);
+}
+
+void
+hb_face_set_index (hb_face_t *face,
+ unsigned int index)
+{
+ if (hb_object_is_inert (face))
+ return;
+
+ face->index = index;
+}
+
+unsigned int
+hb_face_get_index (hb_face_t *face)
+{
+ return face->index;
+}
+
+void
+hb_face_set_upem (hb_face_t *face,
+ unsigned int upem)
+{
+ if (hb_object_is_inert (face))
+ return;
+
+ face->upem = upem;
+}
+
+unsigned int
+hb_face_get_upem (hb_face_t *face)
+{
+ return face->get_upem ();
+}
+
+void
+hb_face_t::load_upem (void) const
+{
+ hb_blob_t *head_blob = OT::Sanitizer<OT::head>::sanitize (reference_table (HB_OT_TAG_head));
+ const OT::head *head_table = OT::Sanitizer<OT::head>::lock_instance (head_blob);
+ upem = head_table->get_upem ();
+ hb_blob_destroy (head_blob);
+}
+
+void
+hb_face_set_glyph_count (hb_face_t *face,
+ unsigned int glyph_count)
+{
+ if (hb_object_is_inert (face))
+ return;
+
+ face->num_glyphs = glyph_count;
+}
+
+unsigned int
+hb_face_get_glyph_count (hb_face_t *face)
+{
+ return face->get_num_glyphs ();
+}
+
+void
+hb_face_t::load_num_glyphs (void) const
+{
+ hb_blob_t *maxp_blob = OT::Sanitizer<OT::maxp>::sanitize (reference_table (HB_OT_TAG_maxp));
+ const OT::maxp *maxp_table = OT::Sanitizer<OT::maxp>::lock_instance (maxp_blob);
+ num_glyphs = maxp_table->get_num_glyphs ();
+ hb_blob_destroy (maxp_blob);
+}
+
+
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-face.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-face.h
new file mode 100644
index 00000000000..f682c468de5
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-face.h
@@ -0,0 +1,117 @@
+/*
+ * Copyright © 2009 Red Hat, 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.
+ *
+ * Red Hat Author(s): Behdad Esfahbod
+ */
+
+#ifndef HB_H_IN
+#error "Include <hb.h> instead."
+#endif
+
+#ifndef HB_FACE_H
+#define HB_FACE_H
+
+#include "hb-common.h"
+#include "hb-blob.h"
+
+HB_BEGIN_DECLS
+
+
+/*
+ * hb_face_t
+ */
+
+typedef struct hb_face_t hb_face_t;
+
+hb_face_t *
+hb_face_create (hb_blob_t *blob,
+ unsigned int index);
+
+typedef hb_blob_t * (*hb_reference_table_func_t) (hb_face_t *face, hb_tag_t tag, void *user_data);
+
+/* calls destroy() when not needing user_data anymore */
+hb_face_t *
+hb_face_create_for_tables (hb_reference_table_func_t reference_table_func,
+ void *user_data,
+ hb_destroy_func_t destroy);
+
+hb_face_t *
+hb_face_get_empty (void);
+
+hb_face_t *
+hb_face_reference (hb_face_t *face);
+
+void
+hb_face_destroy (hb_face_t *face);
+
+hb_bool_t
+hb_face_set_user_data (hb_face_t *face,
+ hb_user_data_key_t *key,
+ void * data,
+ hb_destroy_func_t destroy,
+ hb_bool_t replace);
+
+
+void *
+hb_face_get_user_data (hb_face_t *face,
+ hb_user_data_key_t *key);
+
+void
+hb_face_make_immutable (hb_face_t *face);
+
+hb_bool_t
+hb_face_is_immutable (hb_face_t *face);
+
+
+hb_blob_t *
+hb_face_reference_table (hb_face_t *face,
+ hb_tag_t tag);
+
+hb_blob_t *
+hb_face_reference_blob (hb_face_t *face);
+
+void
+hb_face_set_index (hb_face_t *face,
+ unsigned int index);
+
+unsigned int
+hb_face_get_index (hb_face_t *face);
+
+void
+hb_face_set_upem (hb_face_t *face,
+ unsigned int upem);
+
+unsigned int
+hb_face_get_upem (hb_face_t *face);
+
+void
+hb_face_set_glyph_count (hb_face_t *face,
+ unsigned int glyph_count);
+
+unsigned int
+hb_face_get_glyph_count (hb_face_t *face);
+
+
+HB_END_DECLS
+
+#endif /* HB_FACE_H */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-fallback-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-fallback-shape.cc
index 1a1fcfbda1e..1a1fcfbda1e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-fallback-shape.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-fallback-shape.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-font-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-font-private.hh
index 3a42f07663b..620d05e8f92 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-font-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-font-private.hh
@@ -33,8 +33,8 @@
#include "hb-font.h"
#include "hb-object-private.hh"
+#include "hb-face-private.hh"
#include "hb-shaper-private.hh"
-#include "hb-shape-plan-private.hh"
@@ -84,71 +84,6 @@ struct hb_font_funcs_t {
};
-/*
- * hb_face_t
- */
-
-struct hb_face_t {
- hb_object_header_t header;
- ASSERT_POD ();
-
- hb_bool_t immutable;
-
- hb_reference_table_func_t reference_table_func;
- void *user_data;
- hb_destroy_func_t destroy;
-
- unsigned int index;
- mutable unsigned int upem;
- mutable unsigned int num_glyphs;
-
- struct hb_shaper_data_t shaper_data;
-
- struct plan_node_t {
- hb_shape_plan_t *shape_plan;
- plan_node_t *next;
- } *shape_plans;
-
-
- inline hb_blob_t *reference_table (hb_tag_t tag) const
- {
- hb_blob_t *blob;
-
- if (unlikely (!this || !reference_table_func))
- return hb_blob_get_empty ();
-
- blob = reference_table_func (/*XXX*/const_cast<hb_face_t *> (this), tag, user_data);
- if (unlikely (!blob))
- return hb_blob_get_empty ();
-
- return blob;
- }
-
- inline unsigned int get_upem (void) const
- {
- if (unlikely (!upem))
- load_upem ();
- return upem;
- }
-
- inline unsigned int get_num_glyphs (void) const
- {
- if (unlikely (num_glyphs == (unsigned int) -1))
- load_num_glyphs ();
- return num_glyphs;
- }
-
- private:
- HB_INTERNAL void load_upem (void) const;
- HB_INTERNAL void load_num_glyphs (void) const;
-};
-
-#define HB_SHAPER_DATA_CREATE_FUNC_EXTRA_ARGS
-#define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_PROTOTYPE(shaper, face);
-#include "hb-shaper-list.hh"
-#undef HB_SHAPER_IMPLEMENT
-#undef HB_SHAPER_DATA_CREATE_FUNC_EXTRA_ARGS
-
/*
* hb_font_t
@@ -426,7 +361,8 @@ struct hb_font_t {
{
if (get_glyph_name (glyph, s, size)) return;
- snprintf (s, size, "gid%u", glyph);
+ if (size && snprintf (s, size, "gid%u", glyph) < 0)
+ *s = '\0';
}
/* Parses gidDDD and uniUUUU strings automatically. */
@@ -461,7 +397,11 @@ struct hb_font_t {
}
private:
- inline hb_position_t em_scale (int16_t v, int scale) { return v * (int64_t) scale / hb_face_get_upem (this->face); }
+ inline hb_position_t em_scale (int16_t v, int scale)
+ {
+ unsigned int upem = face->get_upem ();
+ return (v * (int64_t) scale + upem / 2) / upem;
+ }
};
#define HB_SHAPER_DATA_CREATE_FUNC_EXTRA_ARGS
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-font.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-font.cc
index b59fdebaea7..c2f6f6ddd55 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-font.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-font.cc
@@ -41,7 +41,6 @@
#include <string.h>
-
/*
* hb_font_funcs_t
*/
@@ -507,274 +506,6 @@ hb_font_glyph_from_string (hb_font_t *font,
/*
- * hb_face_t
- */
-
-static const hb_face_t _hb_face_nil = {
- HB_OBJECT_HEADER_STATIC,
-
- true, /* immutable */
-
- NULL, /* reference_table_func */
- NULL, /* user_data */
- NULL, /* destroy */
-
- 0, /* index */
- 1000, /* upem */
- 0, /* num_glyphs */
-
- {
-#define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_INVALID,
-#include "hb-shaper-list.hh"
-#undef HB_SHAPER_IMPLEMENT
- },
-
- NULL, /* shape_plans */
-};
-
-
-hb_face_t *
-hb_face_create_for_tables (hb_reference_table_func_t reference_table_func,
- void *user_data,
- hb_destroy_func_t destroy)
-{
- hb_face_t *face;
-
- if (!reference_table_func || !(face = hb_object_create<hb_face_t> ())) {
- if (destroy)
- destroy (user_data);
- return hb_face_get_empty ();
- }
-
- face->reference_table_func = reference_table_func;
- face->user_data = user_data;
- face->destroy = destroy;
-
- face->upem = 0;
- face->num_glyphs = (unsigned int) -1;
-
- return face;
-}
-
-
-typedef struct hb_face_for_data_closure_t {
- hb_blob_t *blob;
- unsigned int index;
-} hb_face_for_data_closure_t;
-
-static hb_face_for_data_closure_t *
-_hb_face_for_data_closure_create (hb_blob_t *blob, unsigned int index)
-{
- hb_face_for_data_closure_t *closure;
-
- closure = (hb_face_for_data_closure_t *) malloc (sizeof (hb_face_for_data_closure_t));
- if (unlikely (!closure))
- return NULL;
-
- closure->blob = blob;
- closure->index = index;
-
- return closure;
-}
-
-static void
-_hb_face_for_data_closure_destroy (hb_face_for_data_closure_t *closure)
-{
- hb_blob_destroy (closure->blob);
- free (closure);
-}
-
-static hb_blob_t *
-_hb_face_for_data_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data)
-{
- hb_face_for_data_closure_t *data = (hb_face_for_data_closure_t *) user_data;
-
- if (tag == HB_TAG_NONE)
- return hb_blob_reference (data->blob);
-
- const OT::OpenTypeFontFile &ot_file = *OT::Sanitizer<OT::OpenTypeFontFile>::lock_instance (data->blob);
- const OT::OpenTypeFontFace &ot_face = ot_file.get_face (data->index);
-
- const OT::OpenTypeTable &table = ot_face.get_table_by_tag (tag);
-
- hb_blob_t *blob = hb_blob_create_sub_blob (data->blob, table.offset, table.length);
-
- return blob;
-}
-
-hb_face_t *
-hb_face_create (hb_blob_t *blob,
- unsigned int index)
-{
- hb_face_t *face;
-
- if (unlikely (!blob || !hb_blob_get_length (blob)))
- return hb_face_get_empty ();
-
- hb_face_for_data_closure_t *closure = _hb_face_for_data_closure_create (OT::Sanitizer<OT::OpenTypeFontFile>::sanitize (hb_blob_reference (blob)), index);
-
- if (unlikely (!closure))
- return hb_face_get_empty ();
-
- face = hb_face_create_for_tables (_hb_face_for_data_reference_table,
- closure,
- (hb_destroy_func_t) _hb_face_for_data_closure_destroy);
-
- hb_face_set_index (face, index);
-
- return face;
-}
-
-hb_face_t *
-hb_face_get_empty (void)
-{
- return const_cast<hb_face_t *> (&_hb_face_nil);
-}
-
-
-hb_face_t *
-hb_face_reference (hb_face_t *face)
-{
- return hb_object_reference (face);
-}
-
-void
-hb_face_destroy (hb_face_t *face)
-{
- if (!hb_object_destroy (face)) return;
-
- for (hb_face_t::plan_node_t *node = face->shape_plans; node; )
- {
- hb_face_t::plan_node_t *next = node->next;
- hb_shape_plan_destroy (node->shape_plan);
- free (node);
- node = next;
- }
-
-#define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_DESTROY(shaper, face);
-#include "hb-shaper-list.hh"
-#undef HB_SHAPER_IMPLEMENT
-
- if (face->destroy)
- face->destroy (face->user_data);
-
- free (face);
-}
-
-hb_bool_t
-hb_face_set_user_data (hb_face_t *face,
- hb_user_data_key_t *key,
- void * data,
- hb_destroy_func_t destroy,
- hb_bool_t replace)
-{
- return hb_object_set_user_data (face, key, data, destroy, replace);
-}
-
-void *
-hb_face_get_user_data (hb_face_t *face,
- hb_user_data_key_t *key)
-{
- return hb_object_get_user_data (face, key);
-}
-
-void
-hb_face_make_immutable (hb_face_t *face)
-{
- if (hb_object_is_inert (face))
- return;
-
- face->immutable = true;
-}
-
-hb_bool_t
-hb_face_is_immutable (hb_face_t *face)
-{
- return face->immutable;
-}
-
-
-hb_blob_t *
-hb_face_reference_table (hb_face_t *face,
- hb_tag_t tag)
-{
- return face->reference_table (tag);
-}
-
-hb_blob_t *
-hb_face_reference_blob (hb_face_t *face)
-{
- return face->reference_table (HB_TAG_NONE);
-}
-
-void
-hb_face_set_index (hb_face_t *face,
- unsigned int index)
-{
- if (hb_object_is_inert (face))
- return;
-
- face->index = index;
-}
-
-unsigned int
-hb_face_get_index (hb_face_t *face)
-{
- return face->index;
-}
-
-void
-hb_face_set_upem (hb_face_t *face,
- unsigned int upem)
-{
- if (hb_object_is_inert (face))
- return;
-
- face->upem = upem;
-}
-
-unsigned int
-hb_face_get_upem (hb_face_t *face)
-{
- return face->get_upem ();
-}
-
-void
-hb_face_t::load_upem (void) const
-{
- hb_blob_t *head_blob = OT::Sanitizer<OT::head>::sanitize (reference_table (HB_OT_TAG_head));
- const OT::head *head_table = OT::Sanitizer<OT::head>::lock_instance (head_blob);
- upem = head_table->get_upem ();
- hb_blob_destroy (head_blob);
-}
-
-void
-hb_face_set_glyph_count (hb_face_t *face,
- unsigned int glyph_count)
-{
- if (hb_object_is_inert (face))
- return;
-
- face->num_glyphs = glyph_count;
-}
-
-unsigned int
-hb_face_get_glyph_count (hb_face_t *face)
-{
- return face->get_num_glyphs ();
-}
-
-void
-hb_face_t::load_num_glyphs (void) const
-{
- hb_blob_t *maxp_blob = OT::Sanitizer<OT::maxp>::sanitize (reference_table (HB_OT_TAG_maxp));
- const OT::maxp *maxp_table = OT::Sanitizer<OT::maxp>::lock_instance (maxp_blob);
- num_glyphs = maxp_table->get_num_glyphs ();
- hb_blob_destroy (maxp_blob);
-}
-
-
-/*
* hb_font_t
*/
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-font.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-font.h
index 88d489551e8..3a0c001b98e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-font.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-font.h
@@ -32,86 +32,13 @@
#define HB_FONT_H
#include "hb-common.h"
-#include "hb-blob.h"
+#include "hb-face.h"
HB_BEGIN_DECLS
-typedef struct hb_face_t hb_face_t;
typedef struct hb_font_t hb_font_t;
-/*
- * hb_face_t
- */
-
-hb_face_t *
-hb_face_create (hb_blob_t *blob,
- unsigned int index);
-
-typedef hb_blob_t * (*hb_reference_table_func_t) (hb_face_t *face, hb_tag_t tag, void *user_data);
-
-/* calls destroy() when not needing user_data anymore */
-hb_face_t *
-hb_face_create_for_tables (hb_reference_table_func_t reference_table_func,
- void *user_data,
- hb_destroy_func_t destroy);
-
-hb_face_t *
-hb_face_get_empty (void);
-
-hb_face_t *
-hb_face_reference (hb_face_t *face);
-
-void
-hb_face_destroy (hb_face_t *face);
-
-hb_bool_t
-hb_face_set_user_data (hb_face_t *face,
- hb_user_data_key_t *key,
- void * data,
- hb_destroy_func_t destroy,
- hb_bool_t replace);
-
-
-void *
-hb_face_get_user_data (hb_face_t *face,
- hb_user_data_key_t *key);
-
-void
-hb_face_make_immutable (hb_face_t *face);
-
-hb_bool_t
-hb_face_is_immutable (hb_face_t *face);
-
-
-hb_blob_t *
-hb_face_reference_table (hb_face_t *face,
- hb_tag_t tag);
-
-hb_blob_t *
-hb_face_reference_blob (hb_face_t *face);
-
-void
-hb_face_set_index (hb_face_t *face,
- unsigned int index);
-
-unsigned int
-hb_face_get_index (hb_face_t *face);
-
-void
-hb_face_set_upem (hb_face_t *face,
- unsigned int upem);
-
-unsigned int
-hb_face_get_upem (hb_face_t *face);
-
-void
-hb_face_set_glyph_count (hb_face_t *face,
- unsigned int glyph_count);
-
-unsigned int
-hb_face_get_glyph_count (hb_face_t *face);
-
/*
* hb_font_funcs_t
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ft.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ft.cc
index a4f4bbdc01c..a4f4bbdc01c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ft.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ft.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ft.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ft.h
index 696251e143f..696251e143f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ft.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ft.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-glib.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-glib.cc
index 676e6601628..c35d9966c26 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-glib.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-glib.cc
@@ -77,7 +77,7 @@ glib_script_to_script[] =
HB_SCRIPT_THAANA,
HB_SCRIPT_THAI,
HB_SCRIPT_TIBETAN,
- HB_SCRIPT_CANADIAN_ABORIGINAL,
+ HB_SCRIPT_CANADIAN_SYLLABICS,
HB_SCRIPT_YI,
HB_SCRIPT_TAGALOG,
HB_SCRIPT_HANUNOO,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-glib.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-glib.h
index 63a9d3366c5..63a9d3366c5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-glib.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-glib.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-gobject-enums.cc.tmpl b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-enums.cc.tmpl
index 05abd898d4f..ca458a3846c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-gobject-enums.cc.tmpl
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-enums.cc.tmpl
@@ -45,13 +45,12 @@
/*** END file-production ***/
/*** BEGIN value-header ***/
-inline static /* TODO(behdad) disable these for now until we fix them... */
GType
@enum_name@_get_type (void)
{
- static volatile gsize g_define_type_id__volatile = 0;
+ static gsize type_id = 0;
- if (g_once_init_enter (&g_define_type_id__volatile))
+ if (g_once_init_enter (&type_id))
{
static const G@Type@Value values[] = {
/*** END value-header ***/
@@ -63,12 +62,12 @@ GType
/*** BEGIN value-tail ***/
{ 0, NULL, NULL }
};
- GType g_define_type_id =
+ GType id =
g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+ g_once_init_leave (&type_id, id);
}
- return g_define_type_id__volatile;
+ return type_id;
}
/*** END value-tail ***/
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-enums.h.tmpl b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-enums.h.tmpl
new file mode 100644
index 00000000000..6ecda06c2a6
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-enums.h.tmpl
@@ -0,0 +1,55 @@
+/*** BEGIN file-header ***/
+/*
+ * 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_GOBJECT_H_IN
+#error "Include <hb-gobject.h> instead."
+#endif
+
+#ifndef HB_GOBJECT_ENUMS_H
+#define HB_GOBJECT_ENUMS_H
+
+#include "hb.h"
+
+#include <glib-object.h>
+
+HB_BEGIN_DECLS
+
+
+/*** END file-header ***/
+
+/*** BEGIN value-header ***/
+GType @enum_name@_get_type (void) G_GNUC_CONST;
+#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())
+
+/*** END value-header ***/
+
+/*** BEGIN file-tail ***/
+
+HB_END_DECLS
+
+#endif /* HB_GOBJECT_ENUMS_H */
+/*** END file-tail ***/
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-structs.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-structs.cc
new file mode 100644
index 00000000000..652554214c2
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-structs.cc
@@ -0,0 +1,113 @@
+/*
+ * Copyright © 2011 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-private.hh"
+
+/* g++ didn't like older gtype.h gcc-only code path. */
+#include <glib.h>
+#if !GLIB_CHECK_VERSION(2,29,16)
+#undef __GNUC__
+#undef __GNUC_MINOR__
+#define __GNUC__ 2
+#define __GNUC_MINOR__ 6
+#endif
+
+#include "hb-gobject.h"
+
+#define HB_DEFINE_BOXED_TYPE(name,copy_func,free_func) \
+GType \
+hb_gobject_##name##_get_type (void) \
+{ \
+ static gsize type_id = 0; \
+ if (g_once_init_enter (&type_id)) { \
+ GType id = g_boxed_type_register_static (g_intern_static_string ("hb_" #name "_t"), \
+ (GBoxedCopyFunc) copy_func, \
+ (GBoxedFreeFunc) free_func); \
+ g_once_init_leave (&type_id, id); \
+ } \
+ return type_id; \
+}
+
+#define HB_DEFINE_OBJECT_TYPE(name) \
+ HB_DEFINE_BOXED_TYPE (name, hb_##name##_reference, hb_##name##_destroy);
+
+HB_DEFINE_OBJECT_TYPE (buffer)
+HB_DEFINE_OBJECT_TYPE (blob)
+HB_DEFINE_OBJECT_TYPE (face)
+HB_DEFINE_OBJECT_TYPE (font)
+HB_DEFINE_OBJECT_TYPE (font_funcs)
+HB_DEFINE_OBJECT_TYPE (set)
+HB_DEFINE_OBJECT_TYPE (shape_plan)
+HB_DEFINE_OBJECT_TYPE (unicode_funcs)
+
+
+static hb_feature_t *feature_reference (hb_feature_t *g)
+{
+ hb_feature_t *c = (hb_feature_t *) calloc (1, sizeof (hb_feature_t));
+ if (unlikely (!c)) return NULL;
+ *c = *g;
+ return c;
+}
+static void feature_destroy (hb_feature_t *g) { free (g); }
+HB_DEFINE_BOXED_TYPE (feature, feature_reference, feature_destroy)
+
+static hb_glyph_info_t *glyph_info_reference (hb_glyph_info_t *g)
+{
+ hb_glyph_info_t *c = (hb_glyph_info_t *) calloc (1, sizeof (hb_glyph_info_t));
+ if (unlikely (!c)) return NULL;
+ *c = *g;
+ return c;
+}
+static void glyph_info_destroy (hb_glyph_info_t *g) { free (g); }
+HB_DEFINE_BOXED_TYPE (glyph_info, glyph_info_reference, glyph_info_destroy)
+
+static hb_glyph_position_t *glyph_position_reference (hb_glyph_position_t *g)
+{
+ hb_glyph_position_t *c = (hb_glyph_position_t *) calloc (1, sizeof (hb_glyph_position_t));
+ if (unlikely (!c)) return NULL;
+ *c = *g;
+ return c;
+}
+static void glyph_position_destroy (hb_glyph_position_t *g) { free (g); }
+HB_DEFINE_BOXED_TYPE (glyph_position, glyph_position_reference, glyph_position_destroy)
+
+static hb_language_t language_reference (hb_language_t l) { return l; }
+static void language_destroy (hb_language_t l) { }
+HB_DEFINE_BOXED_TYPE (language, language_reference, language_destroy)
+
+static hb_segment_properties_t *segment_properties_reference (hb_segment_properties_t *g)
+{
+ hb_segment_properties_t *c = (hb_segment_properties_t *) calloc (1, sizeof (hb_segment_properties_t));
+ if (unlikely (!c)) return NULL;
+ *c = *g;
+ return c;
+}
+static void segment_properties_destroy (hb_segment_properties_t *g) { free (g); }
+HB_DEFINE_BOXED_TYPE (segment_properties, segment_properties_reference, segment_properties_destroy)
+
+static hb_user_data_key_t user_data_key_reference (hb_user_data_key_t l) { return l; }
+static void user_data_key_destroy (hb_user_data_key_t l) { }
+HB_DEFINE_BOXED_TYPE (user_data_key, user_data_key_reference, user_data_key_destroy)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-structs.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-structs.h
new file mode 100644
index 00000000000..48af088ed85
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-structs.h
@@ -0,0 +1,87 @@
+/*
+ * Copyright © 2011 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_GOBJECT_H_IN
+#error "Include <hb-gobject.h> instead."
+#endif
+
+#ifndef HB_GOBJECT_STRUCTS_H
+#define HB_GOBJECT_STRUCTS_H
+
+#include "hb.h"
+
+#include <glib-object.h>
+
+HB_BEGIN_DECLS
+
+
+/* Object types */
+
+GType hb_gobject_blob_get_type (void);
+#define HB_GOBJECT_TYPE_BLOB (hb_gobject_blob_get_type ())
+
+GType hb_gobject_buffer_get_type (void);
+#define HB_GOBJECT_TYPE_BUFFER (hb_gobject_buffer_get_type ())
+
+GType hb_gobject_face_get_type (void);
+#define HB_GOBJECT_TYPE_FACE (hb_gobject_face_get_type ())
+
+GType hb_gobject_font_get_type (void);
+#define HB_GOBJECT_TYPE_FONT (hb_gobject_font_get_type ())
+
+GType hb_gobject_font_funcs_get_type (void);
+#define HB_GOBJECT_TYPE_FONT_FUNCS (hb_gobject_font_funcs_get_type ())
+
+GType hb_gobject_set_get_type (void);
+#define HB_GOBJECT_TYPE_SET (hb_gobject_set_get_type ())
+
+GType hb_gobject_shape_plan_get_type (void);
+#define HB_GOBJECT_TYPE_SHAPE_PLAN (hb_gobject_shape_plan_get_type ())
+
+GType hb_gobject_unicode_funcs_get_type (void);
+#define HB_GOBJECT_TYPE_UNICODE_FUNCS (hb_gobject_unicode_funcs_get_type ())
+
+/* Value types */
+
+GType hb_gobject_feature_get_type (void);
+#define HB_GOBJECT_TYPE_FEATURE (hb_gobject_feature_get_type ())
+
+GType hb_gobject_glyph_info_get_type (void);
+#define HB_GOBJECT_TYPE_GLYPH_INFO (hb_gobject_glyph_info_get_type ())
+
+GType hb_gobject_glyph_position_get_type (void);
+#define HB_GOBJECT_TYPE_GLYPH_POSITION (hb_gobject_glyph_position_get_type ())
+
+GType hb_gobject_segment_properties_get_type (void);
+#define HB_GOBJECT_TYPE_SEGMENT_PROPERTIES (hb_gobject_segment_properties_get_type ())
+
+GType hb_gobject_user_data_key_get_type (void);
+#define HB_GOBJECT_TYPE_USER_DATA_KEY (hb_gobject_user_data_key_get_type ())
+
+
+HB_END_DECLS
+
+#endif /* HB_GOBJECT_H */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-gobject.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject.h
index 4f23fdd385d..ea1bd25df82 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-gobject.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject.h
@@ -26,44 +26,15 @@
#ifndef HB_GOBJECT_H
#define HB_GOBJECT_H
+#define HB_GOBJECT_H_IN
#include "hb.h"
-#include <glib-object.h>
+#include "hb-gobject-enums.h"
+#include "hb-gobject-structs.h"
HB_BEGIN_DECLS
-
-
-/* Objects */
-
-#define HB_GOBJECT_TYPE_BLOB hb_gobject_blob_get_type ()
-GType
-hb_gobject_blob_get_type (void);
-
-#define HB_GOBJECT_TYPE_BUFFER hb_gobject_buffer_get_type ()
-GType
-hb_gobject_buffer_get_type (void);
-
-#define HB_GOBJECT_TYPE_FACE hb_gobject_face_get_type ()
-GType
-hb_gobject_face_get_type (void);
-
-#define HB_GOBJECT_TYPE_FONT hb_gobject_font_get_type ()
-GType
-hb_gobject_font_get_type (void);
-
-#define HB_GOBJECT_TYPE_FONT_FUNCS hb_gobject_font_funcs_get_type ()
-GType
-hb_gobject_font_funcs_get_type (void);
-
-#define HB_GOBJECT_TYPE_UNICODE_FUNCS hb_gobject_unicode_funcs_get_type ()
-GType
-hb_gobject_unicode_funcs_get_type (void);
-
-
-/* Enums */
-
-
HB_END_DECLS
+#undef HB_GOBJECT_H_IN
#endif /* HB_GOBJECT_H */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-graphite2.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-graphite2.cc
index cce860694cc..cce860694cc 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-graphite2.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-graphite2.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-graphite2.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-graphite2.h
index bea68f939b4..bea68f939b4 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-graphite2.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-graphite2.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-icu-le.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-icu-le.cc
index 634354e2358..634354e2358 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-icu-le.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-icu-le.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-icu.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-icu.cc
index c177be2c4b2..c177be2c4b2 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-icu.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-icu.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-icu.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-icu.h
index f2f35f0f2ce..f2f35f0f2ce 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-icu.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-icu.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-mutex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-mutex-private.hh
index 0fb21c2e86e..0fb21c2e86e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-mutex-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-mutex-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-object-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-object-private.hh
index 8a9ae34dbee..8a9ae34dbee 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-object-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-object-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-old.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-old.cc
index a7ea8ed9bbe..a7ea8ed9bbe 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-old.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-old.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-open-file-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-open-file-private.hh
index 250504ae20b..250504ae20b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-open-file-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-open-file-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-open-type-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-open-type-private.hh
index 6a8b98be684..ee3a21dc3b1 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-open-type-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-open-type-private.hh
@@ -642,15 +642,21 @@ struct LongOffset : ULONG
/* CheckSum */
struct CheckSum : ULONG
{
- static uint32_t CalcTableChecksum (ULONG *Table, uint32_t Length)
+ /* This is reference implementation from the spec. */
+ static inline uint32_t CalcTableChecksum (const ULONG *Table, uint32_t Length)
{
uint32_t Sum = 0L;
- ULONG *EndPtr = Table+((Length+3) & ~3) / ULONG::static_size;
+ const ULONG *EndPtr = Table+((Length+3) & ~3) / ULONG::static_size;
while (Table < EndPtr)
Sum += *Table++;
return Sum;
}
+
+ /* Note: data should be 4byte aligned and have 4byte padding at the end. */
+ inline void set_for_data (const void *data, unsigned int length)
+ { set (CalcTableChecksum ((const ULONG *) data, length)); }
+
public:
DEFINE_SIZE_STATIC (4);
};
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-head-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-head-table.hh
index 3a9451295de..3a9451295de 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-head-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-head-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-hhea-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-hhea-table.hh
index 2b89c4e0208..2b89c4e0208 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-hhea-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-hhea-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-hmtx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-hmtx-table.hh
index b94337d0be7..b94337d0be7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-hmtx-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-hmtx-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-common-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-common-private.hh
index d139b56ab86..2f6e80468eb 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-common-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-common-private.hh
@@ -871,16 +871,16 @@ struct Coverage
inline void init (const Coverage &c_) {
format = c_.u.format;
switch (format) {
- case 1: return u.format1.init (c_.u.format1);
- case 2: return u.format2.init (c_.u.format2);
- default:return;
+ case 1: u.format1.init (c_.u.format1); return;
+ case 2: u.format2.init (c_.u.format2); return;
+ default: return;
}
}
inline bool more (void) {
switch (format) {
case 1: return u.format1.more ();
case 2: return u.format2.more ();
- default:return true;
+ default:return false;
}
}
inline void next (void) {
@@ -894,14 +894,14 @@ struct Coverage
switch (format) {
case 1: return u.format1.get_glyph ();
case 2: return u.format2.get_glyph ();
- default:return true;
+ default:return 0;
}
}
inline uint16_t get_coverage (void) {
switch (format) {
case 1: return u.format1.get_coverage ();
case 2: return u.format2.get_coverage ();
- default:return true;
+ default:return -1;
}
}
@@ -955,6 +955,19 @@ struct ClassDefFormat1
inline bool intersects_class (const hb_set_t *glyphs, unsigned int klass) const {
unsigned int count = classValue.len;
+ if (klass == 0)
+ {
+ /* Match if there's any glyph that is not listed! */
+ hb_codepoint_t g = -1;
+ if (!hb_set_next (glyphs, &g))
+ return false;
+ if (g < startGlyph)
+ return true;
+ g = startGlyph + count - 1;
+ if (hb_set_next (glyphs, &g))
+ return true;
+ /* Fall through. */
+ }
for (unsigned int i = 0; i < count; i++)
if (classValue[i] == klass && glyphs->has (startGlyph + i))
return true;
@@ -998,6 +1011,22 @@ struct ClassDefFormat2
inline bool intersects_class (const hb_set_t *glyphs, unsigned int klass) const {
unsigned int count = rangeRecord.len;
+ if (klass == 0)
+ {
+ /* Match if there's any glyph that is not listed! */
+ hb_codepoint_t g = (hb_codepoint_t) -1;
+ for (unsigned int i = 0; i < count; i++)
+ {
+ if (!hb_set_next (glyphs, &g))
+ break;
+ if (g < rangeRecord[i].start)
+ return true;
+ g = rangeRecord[i].end;
+ }
+ if (g != (hb_codepoint_t) -1 && hb_set_next (glyphs, &g))
+ return true;
+ /* Fall through. */
+ }
for (unsigned int i = 0; i < count; i++)
if (rangeRecord[i].value == klass && rangeRecord[i].intersects (glyphs))
return true;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-gdef-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-gdef-table.hh
index ff2d09c51f0..ff2d09c51f0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-gdef-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-gdef-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-gpos-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-gpos-table.hh
index 2cf90b7b5f7..2cf90b7b5f7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-gpos-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-gpos-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-gsub-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-gsub-table.hh
index 6ab1a2b9211..6ab1a2b9211 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-gsub-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-gsub-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-gsubgpos-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-gsubgpos-private.hh
index 2b950098270..316f506f0d3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-gsubgpos-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-gsubgpos-private.hh
@@ -977,7 +977,7 @@ static inline void recurse_lookups (context_t *c,
const LookupRecord lookupRecord[] /* Array of LookupRecords--in design order */)
{
for (unsigned int i = 0; i < lookupCount; i++)
- c->recurse (lookupRecord->lookupListIndex);
+ c->recurse (lookupRecord[i].lookupListIndex);
}
static inline bool apply_lookup (hb_apply_context_t *c,
@@ -1009,6 +1009,8 @@ static inline bool apply_lookup (hb_apply_context_t *c,
unsigned int i = 0;
if (lookupCount && 0 == lookupRecord->sequenceIndex)
{
+ unsigned int old_pos = c->buffer->idx;
+
/* Apply a lookup */
bool done = c->recurse (lookupRecord->lookupListIndex);
@@ -1020,6 +1022,8 @@ static inline bool apply_lookup (hb_apply_context_t *c,
goto not_applied;
else
{
+ if (c->table_index == 1)
+ c->buffer->idx = old_pos + 1;
/* Reinitialize iterator. */
hb_apply_context_t::skipping_forward_iterator_t tmp (c, c->buffer->idx - 1, count - i);
tmp.set_syllable (syllable);
@@ -1041,6 +1045,8 @@ static inline bool apply_lookup (hb_apply_context_t *c,
if (lookupCount && i == lookupRecord->sequenceIndex)
{
+ unsigned int old_pos = c->buffer->idx;
+
/* Apply a lookup */
bool done = c->recurse (lookupRecord->lookupListIndex);
@@ -1052,6 +1058,8 @@ static inline bool apply_lookup (hb_apply_context_t *c,
goto not_applied2;
else
{
+ if (c->table_index == 1)
+ c->buffer->idx = old_pos + 1;
/* Reinitialize iterator. */
hb_apply_context_t::skipping_forward_iterator_t tmp (c, c->buffer->idx - 1, count - i);
tmp.set_syllable (syllable);
@@ -1659,7 +1667,7 @@ static inline void chain_context_closure_lookup (hb_closure_context_t *c,
&& intersects_array (c,
inputCount ? inputCount - 1 : 0, input,
lookup_context.funcs.intersects, lookup_context.intersects_data[1])
- && intersects_array (c,
+ && intersects_array (c,
lookaheadCount, lookahead,
lookup_context.funcs.intersects, lookup_context.intersects_data[2]))
recurse_lookups (c,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-private.hh
index c5ba8b4b4d7..c5ba8b4b4d7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout.cc
index 520deff7105..520deff7105 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout.h
index 134f1a6c164..134f1a6c164 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-layout.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-layout.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-map-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-map-private.hh
index 0e718a6f1f5..0e718a6f1f5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-map-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-map-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-map.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-map.cc
index 43856fa37ee..43856fa37ee 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-map.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-map.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-maxp-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-maxp-table.hh
index 0ce3ebcc2a6..0ce3ebcc2a6 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-maxp-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-maxp-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-name-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-name-table.hh
index 75a1b94ea31..e36b0f7c971 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-name-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-name-table.hh
@@ -98,6 +98,9 @@ struct name
return length;
}
+ inline unsigned int get_size (void) const
+ { return min_size + count * nameRecord[0].min_size; }
+
inline bool sanitize_records (hb_sanitize_context_t *c) {
TRACE_SANITIZE (this);
char *string_pool = (char *) this + stringOffset;
@@ -116,7 +119,6 @@ struct name
}
/* We only implement format 0 for now. */
- protected:
USHORT format; /* Format selector (=0/1). */
USHORT count; /* Number of name records. */
Offset stringOffset; /* Offset to start of string storage (from start of table). */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-arabic-fallback.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-arabic-fallback.hh
index 6b2b87e3f28..6b2b87e3f28 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-arabic-fallback.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-arabic-fallback.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-arabic-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-arabic-table.hh
index 730a275bf0a..730a275bf0a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-arabic-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-arabic-table.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-arabic.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-arabic.cc
index 7f8778a8e72..a57e81a5ecf 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-arabic.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-arabic.cc
@@ -193,7 +193,6 @@ collect_features_arabic (hb_ot_shape_planner_t *plan)
map->add_gsub_pause (NULL);
map->add_global_bool_feature (HB_TAG('c','s','w','h'));
- map->add_global_bool_feature (HB_TAG('d','l','i','g'));
map->add_global_bool_feature (HB_TAG('m','s','e','t'));
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-default.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-default.cc
index d6afa0e1c11..d6afa0e1c11 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-default.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-default.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-indic-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-indic-machine.hh
index 9bae3a3b8c3..c251160880c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-indic-machine.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-indic-machine.hh
@@ -32,7 +32,7 @@
#include "hb-private.hh"
-#line 36 "hb-ot-shape-complex-indic-machine.hh.tmp"
+#line 36 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
static const unsigned char _indic_syllable_machine_trans_keys[] = {
1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u,
5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u,
@@ -1269,7 +1269,7 @@ find_syllables (hb_buffer_t *buffer)
int cs;
hb_glyph_info_t *info = buffer->info;
-#line 1273 "hb-ot-shape-complex-indic-machine.hh.tmp"
+#line 1273 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
{
cs = indic_syllable_machine_start;
ts = 0;
@@ -1286,7 +1286,7 @@ find_syllables (hb_buffer_t *buffer)
unsigned int last = 0;
unsigned int syllable_serial = 1;
-#line 1290 "hb-ot-shape-complex-indic-machine.hh.tmp"
+#line 1290 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
{
int _slen;
int _trans;
@@ -1300,7 +1300,7 @@ _resume:
#line 1 "NONE"
{ts = p;}
break;
-#line 1304 "hb-ot-shape-complex-indic-machine.hh.tmp"
+#line 1304 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
}
_keys = _indic_syllable_machine_trans_keys + (cs<<1);
@@ -1411,7 +1411,7 @@ _eof_trans:
#line 87 "../../src/hb-ot-shape-complex-indic-machine.rl"
{act = 5;}
break;
-#line 1415 "hb-ot-shape-complex-indic-machine.hh.tmp"
+#line 1415 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
}
_again:
@@ -1420,7 +1420,7 @@ _again:
#line 1 "NONE"
{ts = 0;}
break;
-#line 1424 "hb-ot-shape-complex-indic-machine.hh.tmp"
+#line 1424 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
}
if ( ++p != pe )
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-indic-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-indic-machine.rl
index f9f07d801d9..f9f07d801d9 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-indic-machine.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-indic-machine.rl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-indic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-indic-private.hh
index 39268b14533..39268b14533 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-indic-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-indic-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-indic-table.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-indic-table.cc
index 18a022bc507..18a022bc507 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-indic-table.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-indic-table.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-indic.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-indic.cc
index d3c475b6abb..d3c475b6abb 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-indic.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-indic.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-myanmar-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-myanmar-machine.hh
index 797bfc5bea0..797bfc5bea0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-myanmar-machine.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-myanmar-machine.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-myanmar-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-myanmar-machine.rl
index 51d42dd64ab..51d42dd64ab 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-myanmar-machine.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-myanmar-machine.rl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-myanmar.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-myanmar.cc
index e5af8930d87..29f29bb556b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-myanmar.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-myanmar.cc
@@ -104,17 +104,6 @@ static void
override_features_myanmar (hb_ot_shape_planner_t *plan)
{
plan->map.add_feature (HB_TAG('l','i','g','a'), 0, F_GLOBAL);
-
- /*
- * Note:
- *
- * Spec says 'mark' is used, and the mmrtext.ttf font from
- * Windows 8 has lookups for it. But testing suggests that
- * Windows 8 Uniscribe is NOT applying it. It *is* applying
- * 'mkmk' however.
- */
- if (hb_options ().uniscribe_bug_compatible)
- plan->map.add_feature (HB_TAG('m','a','r','k'), 0, F_GLOBAL);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-private.hh
index 62151baa512..a099e05d748 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-private.hh
@@ -161,6 +161,8 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
/* Unicode-1.1 additions */
case HB_SCRIPT_ARABIC:
+
+ /* Unicode-3.0 additions */
case HB_SCRIPT_MONGOLIAN:
case HB_SCRIPT_SYRIAC:
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-sea-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-sea-machine.hh
index 86b7ae7d5ca..86b7ae7d5ca 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-sea-machine.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-sea-machine.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-sea-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-sea-machine.rl
index 46140fc4d5f..46140fc4d5f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-sea-machine.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-sea-machine.rl
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-sea.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-sea.cc
index 9c0c303e3df..9c0c303e3df 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-sea.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-sea.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-thai.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-thai.cc
index 45945339d6b..45945339d6b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-complex-thai.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-complex-thai.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-fallback-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-fallback-private.hh
index ec653513f1b..ec653513f1b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-fallback-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-fallback-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-fallback.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-fallback.cc
index 284d030d5f4..284d030d5f4 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-fallback.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-fallback.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-normalize-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-normalize-private.hh
index 085d48511d0..085d48511d0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-normalize-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-normalize-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-normalize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-normalize.cc
index 3fee809cf93..3fee809cf93 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-normalize.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-normalize.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-private.hh
index 817147199fd..817147199fd 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape.cc
index 6a0c7866b3f..c23240c80c7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-shape.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-shape.cc
@@ -58,17 +58,8 @@ static hb_tag_t horizontal_features[] = {
HB_TAG('r','c','l','t'),
};
-/* Note:
- * Technically speaking, vrt2 and vert are mutually exclusive.
- * According to the spec, valt and vpal are also mutually exclusive.
- * But we apply them all for now.
- */
static hb_tag_t vertical_features[] = {
- HB_TAG('v','a','l','t'),
HB_TAG('v','e','r','t'),
- HB_TAG('v','k','r','n'),
- HB_TAG('v','p','a','l'),
- HB_TAG('v','r','t','2'),
};
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-tag.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-tag.cc
index 91ebec76ee3..91ebec76ee3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-tag.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-tag.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-tag.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-tag.h
index 1bf12ab3c09..1bf12ab3c09 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot-tag.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot-tag.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot.h
index 80739063991..80739063991 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ot.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ot.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-private.hh
index 13465c634d3..4152e275523 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-private.hh
@@ -321,14 +321,22 @@ struct hb_prealloced_array_t
inline void pop (void)
{
len--;
- /* TODO: shrink array if needed */
+ }
+
+ inline void remove (unsigned int i)
+ {
+ if (unlikely (i >= len))
+ return;
+ memmove (static_cast<void *> (&array[i]),
+ static_cast<void *> (&array[i + 1]),
+ (len - i - 1) * sizeof (Type));
+ len--;
}
inline void shrink (unsigned int l)
{
if (l < len)
len = l;
- /* TODO: shrink array if needed */
}
template <typename T>
@@ -376,7 +384,7 @@ struct hb_prealloced_array_t
}
};
-#define HB_AUTO_ARRAY_PREALLOCED 64
+#define HB_AUTO_ARRAY_PREALLOCED 16
template <typename Type>
struct hb_auto_array_t : hb_prealloced_array_t <Type, HB_AUTO_ARRAY_PREALLOCED>
{
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-set-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-set-private.hh
index adfa88f18ec..adfa88f18ec 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-set-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-set-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-set.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-set.cc
index 3c9573fbceb..3c9573fbceb 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-set.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-set.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-set.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-set.h
index 291e24974e6..291e24974e6 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-set.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-set.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shape-plan-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shape-plan-private.hh
index dd014e38d01..dd014e38d01 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shape-plan-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shape-plan-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shape-plan.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shape-plan.cc
index a6d2d262100..a6d2d262100 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shape-plan.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shape-plan.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shape-plan.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shape-plan.h
index 8f54552f90b..8f54552f90b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shape-plan.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shape-plan.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shape.cc
index c28fdfa2543..80d8c1306bb 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shape.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shape.cc
@@ -181,18 +181,18 @@ hb_feature_to_string (hb_feature_t *feature,
{
s[len++] = '[';
if (feature->start)
- len += snprintf (s + len, ARRAY_LENGTH (s) - len, "%d", feature->start);
+ len += MAX (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%d", feature->start));
if (feature->end != feature->start + 1) {
s[len++] = ':';
if (feature->end != (unsigned int) -1)
- len += snprintf (s + len, ARRAY_LENGTH (s) - len, "%d", feature->end);
+ len += MAX (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%d", feature->end));
}
s[len++] = ']';
}
if (feature->value > 1)
{
s[len++] = '=';
- len += snprintf (s + len, ARRAY_LENGTH (s) - len, "%d", feature->value);
+ len += MAX (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%d", feature->value));
}
assert (len < ARRAY_LENGTH (s));
len = MIN (len, size - 1);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shape.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shape.h
index 10a35cb517e..10a35cb517e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shape.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shape.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shaper-impl-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shaper-impl-private.hh
index 7844081e95b..7844081e95b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shaper-impl-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shaper-impl-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shaper-list.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shaper-list.hh
index b9c029e58f1..b9c029e58f1 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shaper-list.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shaper-list.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shaper-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shaper-private.hh
index 29c4493943d..29c4493943d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shaper-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shaper-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shaper.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shaper.cc
index 44f718aa702..44f718aa702 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-shaper.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-shaper.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-tt-font.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-tt-font.cc
index c503a404380..c503a404380 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-tt-font.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-tt-font.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ucdn.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ucdn.cc
index 61e6ad36229..7d24559de67 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-ucdn.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-ucdn.cc
@@ -49,7 +49,7 @@ static const hb_script_t ucdn_script_translate[] =
HB_SCRIPT_HANGUL,
HB_SCRIPT_ETHIOPIC,
HB_SCRIPT_CHEROKEE,
- HB_SCRIPT_CANADIAN_ABORIGINAL,
+ HB_SCRIPT_CANADIAN_SYLLABICS,
HB_SCRIPT_OGHAM,
HB_SCRIPT_RUNIC,
HB_SCRIPT_KHMER,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-unicode-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-unicode-private.hh
index dd4d00138e1..dd4d00138e1 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-unicode-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-unicode-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-unicode.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-unicode.cc
index b7e098737c7..b7e098737c7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-unicode.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-unicode.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-unicode.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-unicode.h
index 2e10d98a3b3..2e10d98a3b3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-unicode.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-unicode.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-uniscribe.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-uniscribe.cc
index 4d27b9bae82..65a63f3be54 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-uniscribe.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-uniscribe.cc
@@ -1,5 +1,5 @@
/*
- * Copyright © 2011,2012 Google, Inc.
+ * Copyright © 2011,2012,2013 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
@@ -32,9 +32,11 @@
#include <windows.h>
#include <usp10.h>
+#include <rpc.h>
#include "hb-uniscribe.h"
+#include "hb-open-file-private.hh"
#include "hb-ot-name-table.hh"
#include "hb-ot-tag.h"
@@ -201,7 +203,7 @@ struct hb_uniscribe_shaper_funcs_t {
this->ScriptShapeOpenType = NULL;
this->ScriptPlaceOpenType = NULL;
- hinstLib = GetModuleHandle("usp10.dll");
+ hinstLib = GetModuleHandle (TEXT ("usp10.dll"));
if (hinstLib)
{
this->ScriptItemizeOpenType = (SIOT) GetProcAddress (hinstLib, "ScriptItemizeOpenType");
@@ -227,7 +229,6 @@ free_uniscribe_funcs (void)
free (uniscribe_funcs);
}
-
static hb_uniscribe_shaper_funcs_t *
hb_uniscribe_shaper_get_funcs (void)
{
@@ -256,6 +257,39 @@ retry:
}
+struct active_feature_t {
+ OPENTYPE_FEATURE_RECORD rec;
+ unsigned int order;
+
+ static int cmp (const active_feature_t *a, const active_feature_t *b) {
+ return a->rec.tagFeature < b->rec.tagFeature ? -1 : a->rec.tagFeature > b->rec.tagFeature ? 1 :
+ a->order < b->order ? -1 : a->order > b->order ? 1 :
+ a->rec.lParameter < b->rec.lParameter ? -1 : a->rec.lParameter > b->rec.lParameter ? 1 :
+ 0;
+ }
+ bool operator== (const active_feature_t *f) {
+ return cmp (this, f) == 0;
+ }
+};
+
+struct feature_event_t {
+ unsigned int index;
+ bool start;
+ active_feature_t feature;
+
+ static int cmp (const feature_event_t *a, const feature_event_t *b) {
+ return a->index < b->index ? -1 : a->index > b->index ? 1 :
+ a->start < b->start ? -1 : a->start > b->start ? 1 :
+ active_feature_t::cmp (&a->feature, &b->feature);
+ }
+};
+
+struct range_record_t {
+ TEXTRANGE_PROPERTIES props;
+ unsigned int index_first; /* == start */
+ unsigned int index_last; /* == end - 1 */
+};
+
HB_SHAPER_DATA_ENSURE_DECLARE(uniscribe, face)
HB_SHAPER_DATA_ENSURE_DECLARE(uniscribe, font)
@@ -267,8 +301,131 @@ HB_SHAPER_DATA_ENSURE_DECLARE(uniscribe, font)
struct hb_uniscribe_shaper_face_data_t {
HANDLE fh;
hb_uniscribe_shaper_funcs_t *funcs;
+ wchar_t face_name[LF_FACESIZE];
};
+/* face_name should point to a wchar_t[LF_FACESIZE] object. */
+static void
+_hb_generate_unique_face_name (wchar_t *face_name, unsigned int *plen)
+{
+ /* We'll create a private name for the font from a UUID using a simple,
+ * somewhat base64-like encoding scheme */
+ const char *enc = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-";
+ UUID id;
+ UuidCreate ((UUID*) &id);
+ unsigned int name_str_len = 0;
+ face_name[name_str_len++] = 'F';
+ face_name[name_str_len++] = '_';
+ unsigned char *p = (unsigned char *) &id;
+ for (unsigned int i = 0; i < 16; i += 2)
+ {
+ /* Spread the 16 bits from two bytes of the UUID across three chars of face_name,
+ * using the bits in groups of 5,5,6 to select chars from enc.
+ * This will generate 24 characters; with the 'F_' prefix we already provided,
+ * the name will be 26 chars (plus the NUL terminator), so will always fit within
+ * face_name (LF_FACESIZE = 32). */
+ face_name[name_str_len++] = enc[p[i] >> 3];
+ face_name[name_str_len++] = enc[((p[i] << 2) | (p[i + 1] >> 6)) & 0x1f];
+ face_name[name_str_len++] = enc[p[i + 1] & 0x3f];
+ }
+ face_name[name_str_len] = 0;
+ if (plen)
+ *plen = name_str_len;
+}
+
+/* Destroys blob. */
+static hb_blob_t *
+_hb_rename_font (hb_blob_t *blob, wchar_t *new_name)
+{
+ /* Create a copy of the font data, with the 'name' table replaced by a
+ * table that names the font with our private F_* name created above.
+ * For simplicity, we just append a new 'name' table and update the
+ * sfnt directory; the original table is left in place, but unused.
+ *
+ * The new table will contain just 5 name IDs: family, style, unique,
+ * full, PS. All of them point to the same name data with our unique name.
+ */
+
+ blob = OT::Sanitizer<OT::OpenTypeFontFile>::sanitize (blob);
+
+ unsigned int length, new_length, name_str_len;
+ const char *orig_sfnt_data = hb_blob_get_data (blob, &length);
+
+ _hb_generate_unique_face_name (new_name, &name_str_len);
+
+ static const uint16_t name_IDs[] = { 1, 2, 3, 4, 6 };
+
+ unsigned int name_table_length = OT::name::min_size +
+ ARRAY_LENGTH (name_IDs) * OT::NameRecord::static_size +
+ name_str_len * 2; /* for name data in UTF16BE form */
+ unsigned int name_table_offset = (length + 3) & ~3;
+
+ new_length = name_table_offset + ((name_table_length + 3) & ~3);
+ void *new_sfnt_data = calloc (1, new_length);
+ if (!new_sfnt_data)
+ {
+ hb_blob_destroy (blob);
+ return NULL;
+ }
+
+ memcpy(new_sfnt_data, orig_sfnt_data, length);
+
+ OT::name &name = OT::StructAtOffset<OT::name> (new_sfnt_data, name_table_offset);
+ name.format.set (0);
+ name.count.set (ARRAY_LENGTH (name_IDs));
+ name.stringOffset.set (name.get_size ());
+ for (unsigned int i = 0; i < ARRAY_LENGTH (name_IDs); i++)
+ {
+ OT::NameRecord &record = name.nameRecord[i];
+ record.platformID.set (3);
+ record.encodingID.set (1);
+ record.languageID.set (0x0409); /* English */
+ record.nameID.set (name_IDs[i]);
+ record.length.set (name_str_len * 2);
+ record.offset.set (0);
+ }
+
+ /* Copy string data from new_name, converting wchar_t to UTF16BE. */
+ unsigned char *p = &OT::StructAfter<unsigned char> (name);
+ for (unsigned int i = 0; i < name_str_len; i++)
+ {
+ *p++ = new_name[i] >> 8;
+ *p++ = new_name[i] & 0xff;
+ }
+
+ /* Adjust name table entry to point to new name table */
+ const OT::OpenTypeFontFile &file = * (OT::OpenTypeFontFile *) (new_sfnt_data);
+ unsigned int face_count = file.get_face_count ();
+ for (unsigned int face_index = 0; face_index < face_count; face_index++)
+ {
+ /* Note: doing multiple edits (ie. TTC) can be unsafe. There may be
+ * toe-stepping. But we don't really care. */
+ const OT::OpenTypeFontFace &face = file.get_face (face_index);
+ unsigned int index;
+ if (face.find_table_index (HB_OT_TAG_name, &index))
+ {
+ OT::TableRecord &record = const_cast<OT::TableRecord &> (face.get_table (index));
+ record.checkSum.set_for_data (&name, name_table_length);
+ record.offset.set (name_table_offset);
+ record.length.set (name_table_length);
+ }
+ else if (face_index == 0) /* Fail if first face doesn't have 'name' table. */
+ {
+ free (new_sfnt_data);
+ hb_blob_destroy (blob);
+ return NULL;
+ }
+ }
+
+ /* The checkSumAdjustment field in the 'head' table is now wrong,
+ * but that doesn't actually seem to cause any problems so we don't
+ * bother. */
+
+ hb_blob_destroy (blob);
+ return hb_blob_create ((const char *) new_sfnt_data, new_length,
+ HB_MEMORY_MODE_WRITABLE, NULL, free);
+}
+
hb_uniscribe_shaper_face_data_t *
_hb_uniscribe_shaper_face_data_create (hb_face_t *face)
{
@@ -284,15 +441,22 @@ _hb_uniscribe_shaper_face_data_create (hb_face_t *face)
}
hb_blob_t *blob = hb_face_reference_blob (face);
- unsigned int blob_length;
- const char *blob_data = hb_blob_get_data (blob, &blob_length);
- if (unlikely (!blob_length))
+ if (unlikely (!hb_blob_get_length (blob)))
DEBUG_MSG (UNISCRIBE, face, "Face has empty blob");
+ blob = _hb_rename_font (blob, data->face_name);
+ if (unlikely (!blob))
+ {
+ free (data);
+ return NULL;
+ }
+
DWORD num_fonts_installed;
- data->fh = AddFontMemResourceEx ((void *) blob_data, blob_length, 0, &num_fonts_installed);
- hb_blob_destroy (blob);
- if (unlikely (!data->fh)) {
+ data->fh = AddFontMemResourceEx ((void *) hb_blob_get_data (blob, NULL),
+ hb_blob_get_length (blob),
+ 0, &num_fonts_installed);
+ if (unlikely (!data->fh))
+ {
DEBUG_MSG (UNISCRIBE, face, "Face AddFontMemResourceEx() failed");
free (data);
return NULL;
@@ -328,26 +492,10 @@ populate_log_font (LOGFONTW *lf,
lf->lfHeight = -font->y_scale;
lf->lfCharSet = DEFAULT_CHARSET;
- hb_blob_t *blob = OT::Sanitizer<OT::name>::sanitize (hb_face_reference_table (font->face, HB_TAG ('n','a','m','e')));
- const OT::name *name_table = OT::Sanitizer<OT::name>::lock_instance (blob);
- unsigned int len = name_table->get_name (3, 1, 0x409, 4,
- lf->lfFaceName,
- sizeof (lf->lfFaceName[0]) * LF_FACESIZE)
- / sizeof (lf->lfFaceName[0]);
- hb_blob_destroy (blob);
-
- if (unlikely (!len)) {
- DEBUG_MSG (UNISCRIBE, NULL, "Didn't find English name table entry");
- return false;
- }
- if (unlikely (len >= LF_FACESIZE)) {
- DEBUG_MSG (UNISCRIBE, NULL, "Font name too long");
- return false;
- }
+ hb_face_t *face = font->face;
+ hb_uniscribe_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face);
- for (unsigned int i = 0; i < len; i++)
- lf->lfFaceName[i] = hb_be_uint16 (lf->lfFaceName[i]);
- lf->lfFaceName[len] = 0;
+ memcpy (lf->lfFaceName, face_data->face_name, sizeof (lf->lfFaceName));
return true;
}
@@ -451,6 +599,125 @@ _hb_uniscribe_shape (hb_shape_plan_t *shape_plan,
hb_uniscribe_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font);
hb_uniscribe_shaper_funcs_t *funcs = face_data->funcs;
+ /*
+ * Set up features.
+ */
+ hb_auto_array_t<OPENTYPE_FEATURE_RECORD> feature_records;
+ hb_auto_array_t<range_record_t> range_records;
+ if (num_features)
+ {
+ /* Sort features by start/end events. */
+ hb_auto_array_t<feature_event_t> feature_events;
+ for (unsigned int i = 0; i < num_features; i++)
+ {
+ active_feature_t feature;
+ feature.rec.tagFeature = hb_uint32_swap (features[i].tag);
+ feature.rec.lParameter = features[i].value;
+ feature.order = i;
+
+ feature_event_t *event;
+
+ event = feature_events.push ();
+ if (unlikely (!event))
+ goto fail_features;
+ event->index = features[i].start;
+ event->start = true;
+ event->feature = feature;
+
+ event = feature_events.push ();
+ if (unlikely (!event))
+ goto fail_features;
+ event->index = features[i].end;
+ event->start = false;
+ event->feature = feature;
+ }
+ feature_events.sort ();
+ /* Add a strategic final event. */
+ {
+ active_feature_t feature;
+ feature.rec.tagFeature = 0;
+ feature.rec.lParameter = 0;
+ feature.order = num_features + 1;
+
+ feature_event_t *event = feature_events.push ();
+ if (unlikely (!event))
+ goto fail_features;
+ event->index = 0; /* This value does magic. */
+ event->start = false;
+ event->feature = feature;
+ }
+
+ /* Scan events and save features for each range. */
+ hb_auto_array_t<active_feature_t> active_features;
+ unsigned int last_index = 0;
+ for (unsigned int i = 0; i < feature_events.len; i++)
+ {
+ feature_event_t *event = &feature_events[i];
+
+ if (event->index != last_index)
+ {
+ /* Save a snapshot of active features and the range. */
+ range_record_t *range = range_records.push ();
+ if (unlikely (!range))
+ goto fail_features;
+
+ unsigned int offset = feature_records.len;
+
+ active_features.sort ();
+ for (unsigned int j = 0; j < active_features.len; j++)
+ {
+ if (!j || active_features[j].rec.tagFeature != feature_records[feature_records.len - 1].tagFeature)
+ {
+ OPENTYPE_FEATURE_RECORD *feature = feature_records.push ();
+ if (unlikely (!feature))
+ goto fail_features;
+ *feature = active_features[j].rec;
+ }
+ else
+ {
+ /* Overrides value for existing feature. */
+ feature_records[feature_records.len - 1].lParameter = active_features[j].rec.lParameter;
+ }
+ }
+
+ /* Will convert to pointer after all is ready, since feature_records.array
+ * may move as we grow it. */
+ range->props.potfRecords = reinterpret_cast<OPENTYPE_FEATURE_RECORD *> (offset);
+ range->props.cotfRecords = feature_records.len - offset;
+ range->index_first = last_index;
+ range->index_last = event->index - 1;
+
+ last_index = event->index;
+ }
+
+ if (event->start) {
+ active_feature_t *feature = active_features.push ();
+ if (unlikely (!feature))
+ goto fail_features;
+ *feature = event->feature;
+ } else {
+ active_feature_t *feature = active_features.find (&event->feature);
+ if (feature)
+ active_features.remove (feature - active_features.array);
+ }
+ }
+
+ if (!range_records.len) /* No active feature found. */
+ goto fail_features;
+
+ /* Fixup the pointers. */
+ for (unsigned int i = 0; i < range_records.len; i++)
+ {
+ range_record_t *range = &range_records[i];
+ range->props.potfRecords = feature_records.array + reinterpret_cast<unsigned int> (range->props.potfRecords);
+ }
+ }
+ else
+ {
+ fail_features:
+ num_features = 0;
+ }
+
#define FAIL(...) \
HB_STMT_START { \
DEBUG_MSG (UNISCRIBE, NULL, __VA_ARGS__); \
@@ -475,7 +742,8 @@ retry:
WCHAR *pchars = (WCHAR *) scratch;
unsigned int chars_len = 0;
- for (unsigned int i = 0; i < buffer->len; i++) {
+ for (unsigned int i = 0; i < buffer->len; i++)
+ {
hb_codepoint_t c = buffer->info[i].codepoint;
buffer->info[i].utf16_index() = chars_len;
if (likely (c < 0x10000))
@@ -492,6 +760,20 @@ retry:
ALLOCATE_ARRAY (WORD, log_clusters, chars_len);
ALLOCATE_ARRAY (SCRIPT_CHARPROP, char_props, chars_len);
+ if (num_features)
+ {
+ /* Need log_clusters to assign features. */
+ chars_len = 0;
+ for (unsigned int i = 0; i < buffer->len; i++)
+ {
+ hb_codepoint_t c = buffer->info[i].codepoint;
+ unsigned int cluster = buffer->info[i].cluster;
+ log_clusters[chars_len++] = cluster;
+ if (c >= 0x10000 && c < 0x110000)
+ log_clusters[chars_len++] = cluster; /* Surrogates. */
+ }
+ }
+
/* On Windows, we don't care about alignment...*/
unsigned int glyphs_size = scratch_size / (sizeof (WORD) +
sizeof (SCRIPT_GLYPHPROP) +
@@ -543,33 +825,68 @@ retry:
#undef MAX_ITEMS
- int *range_char_counts = NULL;
- TEXTRANGE_PROPERTIES **range_properties = NULL;
- int range_count = 0;
- if (num_features) {
- /* TODO setup ranges */
- }
-
OPENTYPE_TAG language_tag = hb_uint32_swap (hb_ot_tag_from_language (buffer->props.language));
+ hb_auto_array_t<TEXTRANGE_PROPERTIES*> range_properties;
+ hb_auto_array_t<int> range_char_counts;
unsigned int glyphs_offset = 0;
unsigned int glyphs_len;
bool backward = HB_DIRECTION_IS_BACKWARD (buffer->props.direction);
- for (unsigned int j = 0; j < item_count; j++)
+ for (unsigned int i = 0; i < item_count; i++)
{
- unsigned int i = backward ? item_count - 1 - j : j;
unsigned int chars_offset = items[i].iCharPos;
unsigned int item_chars_len = items[i + 1].iCharPos - chars_offset;
+ if (num_features)
+ {
+ range_properties.shrink (0);
+ range_char_counts.shrink (0);
+
+ range_record_t *last_range = &range_records[0];
+
+ for (unsigned int k = chars_offset; k < chars_offset + item_chars_len; k++)
+ {
+ range_record_t *range = last_range;
+ while (log_clusters[k] < range->index_first)
+ range--;
+ while (log_clusters[k] > range->index_last)
+ range++;
+ if (!range_properties.len ||
+ &range->props != range_properties[range_properties.len - 1])
+ {
+ TEXTRANGE_PROPERTIES **props = range_properties.push ();
+ int *c = range_char_counts.push ();
+ if (unlikely (!props || !c))
+ {
+ range_properties.shrink (0);
+ range_char_counts.shrink (0);
+ break;
+ }
+ *props = &range->props;
+ *c = 1;
+ }
+ else
+ {
+ range_char_counts[range_char_counts.len - 1]++;
+ }
+
+ last_range = range;
+ }
+ }
+
+ /* Asking for glyphs in logical order circumvents at least
+ * one bug in Uniscribe. */
+ items[i].a.fLogicalOrder = true;
+
retry_shape:
hr = funcs->ScriptShapeOpenType (font_data->hdc,
&font_data->script_cache,
&items[i].a,
script_tags[i],
language_tag,
- range_char_counts,
- range_properties,
- range_count,
+ range_char_counts.array,
+ range_properties.array,
+ range_properties.len,
wchars + chars_offset,
item_chars_len,
glyphs_size - glyphs_offset,
@@ -609,9 +926,9 @@ retry:
&items[i].a,
script_tags[i],
language_tag,
- range_char_counts,
- range_properties,
- range_count,
+ range_char_counts.array,
+ range_properties.array,
+ range_properties.len,
wchars + chars_offset,
log_clusters + chars_offset,
char_props + chars_offset,
@@ -626,6 +943,14 @@ retry:
if (unlikely (FAILED (hr)))
FAIL ("ScriptPlaceOpenType() failed: 0x%08xL", hr);
+ if (DEBUG_ENABLED (UNISCRIBE))
+ fprintf (stderr, "Item %d RTL %d LayoutRTL %d LogicalOrder %d ScriptTag %c%c%c%c\n",
+ i,
+ items[i].a.fRTL,
+ items[i].a.fLayoutRTL,
+ items[i].a.fLogicalOrder,
+ HB_UNTAG (hb_uint32_swap (script_tags[i])));
+
glyphs_offset += glyphs_len;
}
glyphs_len = glyphs_offset;
@@ -640,15 +965,9 @@ retry:
uint32_t *p = &vis_clusters[log_clusters[buffer->info[i].utf16_index()]];
*p = MIN (*p, buffer->info[i].cluster);
}
- if (!backward) {
- for (unsigned int i = 1; i < glyphs_len; i++)
- if (vis_clusters[i] == -1)
- vis_clusters[i] = vis_clusters[i - 1];
- } else {
- for (int i = glyphs_len - 2; i >= 0; i--)
- if (vis_clusters[i] == -1)
- vis_clusters[i] = vis_clusters[i + 1];
- }
+ for (unsigned int i = 1; i < glyphs_len; i++)
+ if (vis_clusters[i] == -1)
+ vis_clusters[i] = vis_clusters[i - 1];
#undef utf16_index
@@ -682,10 +1001,13 @@ retry:
/* TODO vertical */
pos->x_advance = info->mask;
- pos->x_offset = info->var1.u32;
+ pos->x_offset = backward ? -info->var1.u32 : info->var1.u32;
pos->y_offset = info->var2.u32;
}
+ if (backward)
+ hb_buffer_reverse (buffer);
+
/* Wow, done! */
return true;
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-uniscribe.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-uniscribe.h
index 51887c8794b..51887c8794b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-uniscribe.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-uniscribe.h
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-utf-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-utf-private.hh
index b9a6519d28e..b9a6519d28e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-utf-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-utf-private.hh
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-version.h.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-version.h.in
index 43634f91ce8..43634f91ce8 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-version.h.in
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-version.h.in
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-warning.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-warning.cc
index 4f1f65f5a21..4f1f65f5a21 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-warning.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-warning.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb.h
index 52c479cc2e5..c5a938a3818 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb.h
@@ -31,6 +31,8 @@
#include "hb-blob.h"
#include "hb-buffer.h"
#include "hb-common.h"
+#include "hb-deprecated.h"
+#include "hb-face.h"
#include "hb-font.h"
#include "hb-set.h"
#include "hb-shape.h"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/main.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/main.cc
index b362744e213..b362744e213 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/main.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/main.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/test-buffer-serialize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/test-buffer-serialize.cc
index 3577dbf688e..827b0513b37 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/test-buffer-serialize.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/test-buffer-serialize.cc
@@ -114,7 +114,7 @@ main (int argc, char **argv)
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);
+ HB_BUFFER_SERIALIZE_FLAG_DEFAULT);
puts (out);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/test-size-params.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/test-size-params.cc
index 947b5669a14..947b5669a14 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/test-size-params.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/test-size-params.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/test-would-substitute.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/test-would-substitute.cc
index 4731e265607..4731e265607 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/test-would-substitute.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/test-would-substitute.cc
diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/test.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/test.cc
index 1acb6ead70b..1acb6ead70b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/test.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/test.cc
diff --git a/Build/source/libs/harfbuzz/include/Makefile.am b/Build/source/libs/harfbuzz/include/Makefile.am
index 0eecce258fe..87ca20a52dd 100644
--- a/Build/source/libs/harfbuzz/include/Makefile.am
+++ b/Build/source/libs/harfbuzz/include/Makefile.am
@@ -15,6 +15,8 @@ hdr_links = \
$(HARFBUZZ_SRC)/hb-blob.h \
$(HARFBUZZ_SRC)/hb-buffer.h \
$(HARFBUZZ_SRC)/hb-common.h \
+ $(HARFBUZZ_SRC)/hb-deprecated.h \
+ $(HARFBUZZ_SRC)/hb-face.h \
$(HARFBUZZ_SRC)/hb-font.h \
$(HARFBUZZ_SRC)/hb-set.h \
$(HARFBUZZ_SRC)/hb-shape.h \
diff --git a/Build/source/libs/harfbuzz/include/Makefile.in b/Build/source/libs/harfbuzz/include/Makefile.in
index 22fb733a25c..04e93cc7689 100644
--- a/Build/source/libs/harfbuzz/include/Makefile.in
+++ b/Build/source/libs/harfbuzz/include/Makefile.in
@@ -244,6 +244,7 @@ HARFBUZZ_SRC = $(top_srcdir)/$(HARFBUZZ_TREE)/src
HARFBUZZ_BLD = $(top_builddir)
hdr_links = $(HARFBUZZ_SRC)/hb.h $(HARFBUZZ_SRC)/hb-blob.h \
$(HARFBUZZ_SRC)/hb-buffer.h $(HARFBUZZ_SRC)/hb-common.h \
+ $(HARFBUZZ_SRC)/hb-deprecated.h $(HARFBUZZ_SRC)/hb-face.h \
$(HARFBUZZ_SRC)/hb-font.h $(HARFBUZZ_SRC)/hb-set.h \
$(HARFBUZZ_SRC)/hb-shape.h $(HARFBUZZ_SRC)/hb-shape-plan.h \
$(HARFBUZZ_SRC)/hb-unicode.h $(HARFBUZZ_BLD)/hb-version.h \
diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac
index cb80076b3ce..e0ecc8dfcda 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.19])
+m4_define([harfbuzz_version], [0.9.20])