diff options
Diffstat (limited to 'Build/source/libs')
-rw-r--r-- | Build/source/libs/harfbuzz/ChangeLog | 5 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/Makefile.am | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/Makefile.in | 11 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/configure | 32 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-common.h | 317 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.19/src/hb-coretext.cc | 352 | ||||
-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-x | Build/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.make | 302 | ||||
-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-x | Build/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-x | Build/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-x | Build/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-x | Build/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-x | Build/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-x | Build/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-x | Build/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-x | Build/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.in | 12 | ||||
-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.h | 333 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-coretext.cc | 757 | ||||
-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.hh | 108 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-face.cc | 311 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-face.h | 117 | ||||
-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.tmpl | 55 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-structs.cc | 113 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.20/src/hb-gobject-structs.h | 87 | ||||
-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.am | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/include/Makefile.in | 1 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/version.ac | 2 |
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]) |