diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2014-07-10 07:21:55 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2014-07-10 07:21:55 +0000 |
commit | 1c10dcb19acce6c92495df3521ec8462699bfb61 (patch) | |
tree | c67013c487d3e3a90c8573fd21ceadbe71b1367b /Build | |
parent | 5e1c96bef29aeaaaa4c1aabb42336268c73ee974 (diff) |
harfbuzz 0.9.30
git-svn-id: svn://tug.org/texlive/trunk@34564 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build')
-rw-r--r-- | Build/source/libs/README | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/ChangeLog | 5 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/Makefile.in | 5 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/config.h.in | 3 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/configure | 265 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/configure.ac | 15 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-arabic-table.hh | 942 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30-PATCHES/ChangeLog (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29-PATCHES/ChangeLog) | 7 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30-PATCHES/TL-Changes (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29-PATCHES/TL-Changes) | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30-PATCHES/patch-01-cygwin (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29-PATCHES/patch-01-cygwin) | 8 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/AUTHORS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/AUTHORS) | 1 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/Android.mk (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/Android.mk) | 38 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/ChangeLog (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/ChangeLog) | 1074 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/Makefile.am (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/Makefile.am) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/NEWS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/NEWS) | 17 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/README (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/README) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/THANKS (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/THANKS) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/TODO (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/TODO) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.30/autogen.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/autogen.sh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/config.h.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/config.h.in) | 3 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/configure.ac (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/configure.ac) | 9 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/gtk-doc.make (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/gtk-doc.make) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/harfbuzz.doap (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/harfbuzz.doap) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/Makefile.am (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/Makefile.am) | 2 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-c-linkage-decls.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-c-linkage-decls.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-defs.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-defs.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-header-guards.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-header-guards.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-includes.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-includes.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-libstdc++.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-libstdc++.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-static-inits.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-static-inits.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-symbols.sh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-symbols.sh) | 0 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/gen-arabic-table.py (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/gen-arabic-table.py) | 156 | ||||
-rwxr-xr-x | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/gen-indic-table.py (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/gen-indic-table.py) | 79 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/harfbuzz-gobject.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/harfbuzz-gobject.pc.in) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/harfbuzz-icu.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/harfbuzz-icu.pc.in) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/harfbuzz.pc.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/harfbuzz.pc.in) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-atomic-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-atomic-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-blob.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-blob.cc) | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-blob.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-blob.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-deserialize-json.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-deserialize-json.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-deserialize-json.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-deserialize-json.rl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-deserialize-text.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-deserialize-text.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-deserialize-text.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-deserialize-text.rl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-serialize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-serialize.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-cache-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-cache-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-common.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-common.cc) | 22 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-common.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-common.h) | 27 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-coretext.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-coretext.cc) | 6 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-coretext.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-coretext.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-deprecated.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-deprecated.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-face-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-face-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-face.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-face.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-face.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-face.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-fallback-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-fallback-shape.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-font-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-font-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-font.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-font.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-font.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-font.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ft.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ft.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ft.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ft.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-glib.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-glib.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-glib.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-glib.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-gobject-enums.cc.tmpl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-gobject-enums.cc.tmpl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-gobject-enums.h.tmpl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-gobject-enums.h.tmpl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-gobject-structs.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-gobject-structs.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-gobject-structs.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-gobject-structs.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-gobject.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-gobject.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-graphite2.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-graphite2.cc) | 5 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-graphite2.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-graphite2.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-icu.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-icu.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-icu.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-icu.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-mutex-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-mutex-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-object-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-object-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-open-file-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-open-file-private.hh) | 8 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-open-type-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-open-type-private.hh) | 96 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-cmap-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-cmap-table.hh) | 219 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-font.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-font.cc) | 20 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-font.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-font.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-head-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-head-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-hhea-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-hhea-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-hmtx-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-hmtx-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-common-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-common-private.hh) | 23 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-gdef-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-gdef-table.hh) | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-gpos-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-gpos-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-gsub-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-gsub-table.hh) | 46 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-gsubgpos-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-gsubgpos-private.hh) | 28 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-jstf-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-jstf-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-private.hh) | 24 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout.cc) | 34 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout.h) | 8 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-map-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-map-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-map.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-map.cc) | 54 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-maxp-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-maxp-table.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-name-table.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-name-table.hh) | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-arabic-fallback.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-arabic-fallback.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-arabic-table.hh | 383 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-arabic.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-arabic.cc) | 44 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-default.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-default.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-hangul.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-hangul.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-hebrew.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-hebrew.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-indic-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-indic-machine.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-indic-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-indic-machine.rl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-indic-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-indic-private.hh) | 95 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-indic-table.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-indic-table.cc) | 721 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-indic.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-indic.cc) | 90 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-myanmar-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-myanmar-machine.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-myanmar-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-myanmar-machine.rl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-myanmar.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-myanmar.cc) | 2 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-private.hh) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-sea-machine.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-sea-machine.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-sea-machine.rl (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-sea-machine.rl) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-sea.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-sea.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-thai.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-thai.cc) | 5 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-tibetan.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-tibetan.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-fallback-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-fallback-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-fallback.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-fallback.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-normalize-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-normalize-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-normalize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-normalize.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape.cc) | 50 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape.h) | 21 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-tag.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-tag.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-tag.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-tag.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-private.hh) | 155 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-set-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-set-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-set.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-set.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-set.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-set.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shape-plan-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shape-plan-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shape-plan.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shape-plan.cc) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shape-plan.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shape-plan.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shape.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shape.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shape.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shaper-impl-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shaper-impl-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shaper-list.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shaper-list.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shaper-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shaper-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shaper.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shaper.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ucdn.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ucdn.cc) | 23 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-unicode-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-unicode-private.hh) | 66 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-unicode.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-unicode.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-unicode.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-unicode.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-uniscribe.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-uniscribe.cc) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-uniscribe.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-uniscribe.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-utf-private.hh (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-utf-private.hh) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-version.h.in (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-version.h.in) | 10 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-warning.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-warning.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb.h (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb.h) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/main.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/main.cc) | 4 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/test-buffer-serialize.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/test-buffer-serialize.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/test-size-params.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/test-size-params.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/test-would-substitute.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/test-would-substitute.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/test.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/test.cc) | 0 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/include/Makefile.in | 1 | ||||
-rw-r--r-- | Build/source/libs/harfbuzz/version.ac | 2 |
156 files changed, 3106 insertions, 1837 deletions
diff --git a/Build/source/libs/README b/Build/source/libs/README index 2839de6120f..92cb1e98cf5 100644 --- a/Build/source/libs/README +++ b/Build/source/libs/README @@ -24,7 +24,7 @@ gmp 6.0.0 - checked 25mar14 graphite2 1.2.4 - checked 2dec13 http://sourceforge.net/projects/silgraphite/files/graphite2/ -harfbuzz 0.9.29 - checked 29may14 +harfbuzz 0.9.30 - checked 10jul14 http://www.freedesktop.org/software/harfbuzz/release/ icu 53.1 (release) - checked 3apr14 diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog index 8addc050aba..23af93f40e6 100644 --- a/Build/source/libs/harfbuzz/ChangeLog +++ b/Build/source/libs/harfbuzz/ChangeLog @@ -1,3 +1,8 @@ +2014-07-10 Peter Breitenlohner <peb@mppmu.mpg.de> + + Import harfbuzz-0.9.30. + * configure.ac, version.ac: Adjust. + 2014-06-16 Peter Breitenlohner <peb@mppmu.mpg.de> Import harfbuzz-0.9.29. diff --git a/Build/source/libs/harfbuzz/Makefile.in b/Build/source/libs/harfbuzz/Makefile.in index 4282c9a5f99..9b4a0e97262 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.29/src/hb-version.h.in \ + $(top_srcdir)/harfbuzz-0.9.30/src/hb-version.h.in \ $(am__dist_check_SCRIPTS_DIST) \ $(top_srcdir)/../../build-aux/depcomp \ $(top_srcdir)/../../build-aux/test-driver ChangeLog \ @@ -501,6 +501,7 @@ am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ +AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -777,7 +778,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.29/src/hb-version.h.in +hb-version.h: $(top_builddir)/config.status $(top_srcdir)/harfbuzz-0.9.30/src/hb-version.h.in cd $(top_builddir) && $(SHELL) ./config.status $@ clean-noinstLIBRARIES: diff --git a/Build/source/libs/harfbuzz/config.h.in b/Build/source/libs/harfbuzz/config.h.in index 3c0840e14d9..a552483d244 100644 --- a/Build/source/libs/harfbuzz/config.h.in +++ b/Build/source/libs/harfbuzz/config.h.in @@ -1,5 +1,8 @@ /* config.h.in. Generated from configure.ac by autoheader. */ +/* The normal alignment of `struct{char;}', in bytes. */ +#undef ALIGNOF_STRUCT_CHAR__ + /* Define to 1 if you have the `atexit' function. */ #undef HAVE_ATEXIT diff --git a/Build/source/libs/harfbuzz/configure b/Build/source/libs/harfbuzz/configure index fc9f93ae1cc..eda4f24019f 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.29. +# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 0.9.30. # # 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.29' -PACKAGE_STRING='harfbuzz (TeX Live) 0.9.29' +PACKAGE_VERSION='0.9.30' +PACKAGE_STRING='harfbuzz (TeX Live) 0.9.30' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' -ac_unique_file="harfbuzz-0.9.29/src/harfbuzz.pc.in" +ac_unique_file="harfbuzz-0.9.30/src/harfbuzz.pc.in" # Factoring default headers for most tests. ac_includes_default="\ #include <stdio.h> @@ -629,6 +629,7 @@ LIBOBJS HARFBUZZ_TREE build_FALSE build_TRUE +AM_CXXFLAGS EGREP GREP CPP @@ -1324,7 +1325,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures harfbuzz (TeX Live) 0.9.29 to adapt to many kinds of systems. +\`configure' configures harfbuzz (TeX Live) 0.9.30 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1395,7 +1396,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of harfbuzz (TeX Live) 0.9.29:";; + short | recursive ) echo "Configuration of harfbuzz (TeX Live) 0.9.30:";; esac cat <<\_ACEOF @@ -1508,7 +1509,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -harfbuzz (TeX Live) configure 0.9.29 +harfbuzz (TeX Live) configure 0.9.30 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1911,11 +1912,194 @@ $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile + +# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES +# -------------------------------------------- +# Tries to find the compile-time value of EXPR in a program that includes +# INCLUDES, setting VAR accordingly. Returns whether the value could be +# computed +ac_fn_c_compute_int () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= 0)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=0 ac_mid=0 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid; break +else + as_fn_arith $ac_mid + 1 && ac_lo=$as_val + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) < 0)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=-1 ac_mid=-1 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=$ac_mid; break +else + as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + ac_lo= ac_hi= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid +else + as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in #(( +?*) eval "$3=\$ac_lo"; ac_retval=0 ;; +'') ac_retval=1 ;; +esac + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +static long int longval () { return $2; } +static unsigned long int ulongval () { return $2; } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (($2) < 0) + { + long int i = longval (); + if (i != ($2)) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ($2)) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + echo >>conftest.val; read $3 <conftest.val; ac_retval=0 +else + ac_retval=1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f conftest.val + + fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_compute_int 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.29, which was +It was created by harfbuzz (TeX Live) $as_me 0.9.30, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3838,7 +4022,7 @@ fi # Define the identity of the package. PACKAGE='harfbuzz--tex-live-' - VERSION='0.9.29' + VERSION='0.9.30' cat >>confdefs.h <<_ACEOF @@ -4040,8 +4224,8 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags HB_VERSION_MAJOR=0 HB_VERSION_MINOR=9 -HB_VERSION_MICRO=29 -HB_VERSION=0.9.29 +HB_VERSION_MICRO=30 +HB_VERSION=0.9.30 ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -6348,6 +6532,55 @@ fi done +# Compiler flags + +# The cast to long int works around a bug in the HP C Compiler, +# see AC_CHECK_SIZEOF for more information. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking alignment of struct{char;}" >&5 +$as_echo_n "checking alignment of struct{char;}... " >&6; } +if ${ac_cv_alignof_struct_char__+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_struct_char__" "$ac_includes_default +#ifndef offsetof +# define offsetof(type, member) ((char *) &((type *) 0)->member - (char *) 0) +#endif +typedef struct { char x; struct{char;} y; } ac__type_alignof_;"; then : + +else + if test "$ac_cv_type_struct_char__" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute alignment of struct{char;} +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_alignof_struct_char__=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_struct_char__" >&5 +$as_echo "$ac_cv_alignof_struct_char__" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define ALIGNOF_STRUCT_CHAR__ $ac_cv_alignof_struct_char__ +_ACEOF + + +if test "x$GCC" = "xyes"; then + case "$host" in + arm-*-*) + if test "x$ac_cv_alignof_struct_char__" != x1; then + # Request byte alignment + AM_CXXFLAGS="-mstructure-size-boundary=8" + fi + ;; + esac +fi + + ac_config_headers="$ac_config_headers config.h" @@ -6408,14 +6641,14 @@ $as_echo "#define HAVE_INTEL_ATOMIC_PRIMITIVES 1" >>confdefs.h fi -HARFBUZZ_TREE=harfbuzz-0.9.29 +HARFBUZZ_TREE=harfbuzz-0.9.30 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.29/src/hb-version.h.in" +ac_config_files="$ac_config_files Makefile include/Makefile hb-version.h:harfbuzz-0.9.30/src/hb-version.h.in" cat >confcache <<\_ACEOF @@ -6964,7 +7197,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.29, which was +This file was extended by harfbuzz (TeX Live) $as_me 0.9.30, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -7030,7 +7263,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.29 +harfbuzz (TeX Live) config.status 0.9.30 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -7163,7 +7396,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.29/src/hb-version.h.in" ;; + "hb-version.h") CONFIG_FILES="$CONFIG_FILES hb-version.h:harfbuzz-0.9.30/src/hb-version.h.in" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac diff --git a/Build/source/libs/harfbuzz/configure.ac b/Build/source/libs/harfbuzz/configure.ac index 97e703248fd..75730a222b9 100644 --- a/Build/source/libs/harfbuzz/configure.ac +++ b/Build/source/libs/harfbuzz/configure.ac @@ -33,6 +33,21 @@ KPSE_ICU_FLAGS AC_CHECK_FUNCS([atexit mprotect sysconf getpagesize sched_yield mmap _setmode isatty]) AC_CHECK_HEADERS([unistd.h sys/mman.h sched.h io.h]) +# Compiler flags +AC_CANONICAL_HOST +AC_CHECK_ALIGNOF([struct{char;}]) +if test "x$GCC" = "xyes"; then + case "$host" in + arm-*-*) + if test "x$ac_cv_alignof_struct_char__" != x1; then + # Request byte alignment + AM_CXXFLAGS="-mstructure-size-boundary=8" + fi + ;; + esac +fi +AC_SUBST([AM_CXXFLAGS]) + AC_CONFIG_HEADERS([config.h]) AM_CONDITIONAL([build], [test "x$enable_build" != xno]) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-arabic-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-arabic-table.hh deleted file mode 100644 index 730a275bf0a..00000000000 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-arabic-table.hh +++ /dev/null @@ -1,942 +0,0 @@ -/* == Start of generated table == */ -/* - * The following table is generated by running: - * - * ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt - * - * on files with these headers: - * - * # ArabicShaping-6.2.0.txt - * # Date: 2012-05-15, 21:05:00 GMT [KW] - * UnicodeData.txt does not have a header. - */ - -#ifndef HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH -#define HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH - - -static const uint8_t joining_table[] = -{ - - /* Arabic Characters */ - - JOINING_TYPE_U, /* 0600; ARABIC NUMBER SIGN; U; No_Joining_Group */ - JOINING_TYPE_U, /* 0601; ARABIC SIGN SANAH; U; No_Joining_Group */ - JOINING_TYPE_U, /* 0602; ARABIC FOOTNOTE MARKER; U; No_Joining_Group */ - JOINING_TYPE_U, /* 0603; ARABIC SIGN SAFHA; U; No_Joining_Group */ - JOINING_TYPE_U, /* 0604; ARABIC SIGN SAMVAT; U; No_Joining_Group */ - JOINING_TYPE_X, /* 0605 */ - JOINING_TYPE_X, /* 0606 */ - JOINING_TYPE_X, /* 0607 */ - JOINING_TYPE_U, /* 0608; ARABIC RAY; U; No_Joining_Group */ - JOINING_TYPE_X, /* 0609 */ - JOINING_TYPE_X, /* 060A */ - JOINING_TYPE_U, /* 060B; AFGHANI SIGN; U; No_Joining_Group */ - JOINING_TYPE_X, /* 060C */ - JOINING_TYPE_X, /* 060D */ - JOINING_TYPE_X, /* 060E */ - JOINING_TYPE_X, /* 060F */ - JOINING_TYPE_X, /* 0610 */ - JOINING_TYPE_X, /* 0611 */ - JOINING_TYPE_X, /* 0612 */ - JOINING_TYPE_X, /* 0613 */ - JOINING_TYPE_X, /* 0614 */ - JOINING_TYPE_X, /* 0615 */ - JOINING_TYPE_X, /* 0616 */ - JOINING_TYPE_X, /* 0617 */ - JOINING_TYPE_X, /* 0618 */ - JOINING_TYPE_X, /* 0619 */ - JOINING_TYPE_X, /* 061A */ - JOINING_TYPE_X, /* 061B */ - JOINING_TYPE_X, /* 061C */ - JOINING_TYPE_X, /* 061D */ - JOINING_TYPE_X, /* 061E */ - JOINING_TYPE_X, /* 061F */ - JOINING_TYPE_D, /* 0620; DOTLESS YEH WITH SEPARATE RING BELOW; D; YEH */ - JOINING_TYPE_U, /* 0621; HAMZA; U; No_Joining_Group */ - JOINING_TYPE_R, /* 0622; ALEF WITH MADDA ABOVE; R; ALEF */ - JOINING_TYPE_R, /* 0623; ALEF WITH HAMZA ABOVE; R; ALEF */ - JOINING_TYPE_R, /* 0624; WAW WITH HAMZA ABOVE; R; WAW */ - JOINING_TYPE_R, /* 0625; ALEF WITH HAMZA BELOW; R; ALEF */ - JOINING_TYPE_D, /* 0626; DOTLESS YEH WITH HAMZA ABOVE; D; YEH */ - JOINING_TYPE_R, /* 0627; ALEF; R; ALEF */ - JOINING_TYPE_D, /* 0628; BEH; D; BEH */ - JOINING_TYPE_R, /* 0629; TEH MARBUTA; R; TEH MARBUTA */ - JOINING_TYPE_D, /* 062A; DOTLESS BEH WITH 2 DOTS ABOVE; D; BEH */ - JOINING_TYPE_D, /* 062B; DOTLESS BEH WITH 3 DOTS ABOVE; D; BEH */ - JOINING_TYPE_D, /* 062C; HAH WITH DOT BELOW; D; HAH */ - JOINING_TYPE_D, /* 062D; HAH; D; HAH */ - JOINING_TYPE_D, /* 062E; HAH WITH DOT ABOVE; D; HAH */ - JOINING_TYPE_R, /* 062F; DAL; R; DAL */ - JOINING_TYPE_R, /* 0630; DAL WITH DOT ABOVE; R; DAL */ - JOINING_TYPE_R, /* 0631; REH; R; REH */ - JOINING_TYPE_R, /* 0632; REH WITH DOT ABOVE; R; REH */ - JOINING_TYPE_D, /* 0633; SEEN; D; SEEN */ - JOINING_TYPE_D, /* 0634; SEEN WITH 3 DOTS ABOVE; D; SEEN */ - JOINING_TYPE_D, /* 0635; SAD; D; SAD */ - JOINING_TYPE_D, /* 0636; SAD WITH DOT ABOVE; D; SAD */ - JOINING_TYPE_D, /* 0637; TAH; D; TAH */ - JOINING_TYPE_D, /* 0638; TAH WITH DOT ABOVE; D; TAH */ - JOINING_TYPE_D, /* 0639; AIN; D; AIN */ - JOINING_TYPE_D, /* 063A; AIN WITH DOT ABOVE; D; AIN */ - JOINING_TYPE_D, /* 063B; KEHEH WITH 2 DOTS ABOVE; D; GAF */ - JOINING_TYPE_D, /* 063C; KEHEH WITH 3 DOTS BELOW; D; GAF */ - JOINING_TYPE_D, /* 063D; FARSI YEH WITH INVERTED V ABOVE; D; FARSI YEH */ - JOINING_TYPE_D, /* 063E; FARSI YEH WITH 2 DOTS ABOVE; D; FARSI YEH */ - JOINING_TYPE_D, /* 063F; FARSI YEH WITH 3 DOTS ABOVE; D; FARSI YEH */ - JOINING_TYPE_C, /* 0640; TATWEEL; C; No_Joining_Group */ - JOINING_TYPE_D, /* 0641; FEH; D; FEH */ - JOINING_TYPE_D, /* 0642; QAF; D; QAF */ - JOINING_TYPE_D, /* 0643; KAF; D; KAF */ - JOINING_TYPE_D, /* 0644; LAM; D; LAM */ - JOINING_TYPE_D, /* 0645; MEEM; D; MEEM */ - JOINING_TYPE_D, /* 0646; NOON; D; NOON */ - JOINING_TYPE_D, /* 0647; HEH; D; HEH */ - JOINING_TYPE_R, /* 0648; WAW; R; WAW */ - JOINING_TYPE_D, /* 0649; DOTLESS YEH; D; YEH */ - JOINING_TYPE_D, /* 064A; YEH; D; YEH */ - JOINING_TYPE_X, /* 064B */ - JOINING_TYPE_X, /* 064C */ - JOINING_TYPE_X, /* 064D */ - JOINING_TYPE_X, /* 064E */ - JOINING_TYPE_X, /* 064F */ - JOINING_TYPE_X, /* 0650 */ - JOINING_TYPE_X, /* 0651 */ - JOINING_TYPE_X, /* 0652 */ - JOINING_TYPE_X, /* 0653 */ - JOINING_TYPE_X, /* 0654 */ - JOINING_TYPE_X, /* 0655 */ - JOINING_TYPE_X, /* 0656 */ - JOINING_TYPE_X, /* 0657 */ - JOINING_TYPE_X, /* 0658 */ - JOINING_TYPE_X, /* 0659 */ - JOINING_TYPE_X, /* 065A */ - JOINING_TYPE_X, /* 065B */ - JOINING_TYPE_X, /* 065C */ - JOINING_TYPE_X, /* 065D */ - JOINING_TYPE_X, /* 065E */ - JOINING_TYPE_X, /* 065F */ - JOINING_TYPE_X, /* 0660 */ - JOINING_TYPE_X, /* 0661 */ - JOINING_TYPE_X, /* 0662 */ - JOINING_TYPE_X, /* 0663 */ - JOINING_TYPE_X, /* 0664 */ - JOINING_TYPE_X, /* 0665 */ - JOINING_TYPE_X, /* 0666 */ - JOINING_TYPE_X, /* 0667 */ - JOINING_TYPE_X, /* 0668 */ - JOINING_TYPE_X, /* 0669 */ - JOINING_TYPE_X, /* 066A */ - JOINING_TYPE_X, /* 066B */ - JOINING_TYPE_X, /* 066C */ - JOINING_TYPE_X, /* 066D */ - JOINING_TYPE_D, /* 066E; DOTLESS BEH; D; BEH */ - JOINING_TYPE_D, /* 066F; DOTLESS QAF; D; QAF */ - JOINING_TYPE_X, /* 0670 */ - JOINING_TYPE_R, /* 0671; ALEF WITH WASLA ABOVE; R; ALEF */ - JOINING_TYPE_R, /* 0672; ALEF WITH WAVY HAMZA ABOVE; R; ALEF */ - JOINING_TYPE_R, /* 0673; ALEF WITH WAVY HAMZA BELOW; R; ALEF */ - JOINING_TYPE_U, /* 0674; HIGH HAMZA; U; No_Joining_Group */ - JOINING_TYPE_R, /* 0675; HIGH HAMZA ALEF; R; ALEF */ - JOINING_TYPE_R, /* 0676; HIGH HAMZA WAW; R; WAW */ - JOINING_TYPE_R, /* 0677; HIGH HAMZA WAW WITH DAMMA ABOVE; R; WAW */ - JOINING_TYPE_D, /* 0678; HIGH HAMZA DOTLESS YEH; D; YEH */ - JOINING_TYPE_D, /* 0679; DOTLESS BEH WITH TAH ABOVE; D; BEH */ - JOINING_TYPE_D, /* 067A; DOTLESS BEH WITH VERTICAL 2 DOTS ABOVE; D; BEH */ - JOINING_TYPE_D, /* 067B; DOTLESS BEH WITH VERTICAL 2 DOTS BELOW; D; BEH */ - JOINING_TYPE_D, /* 067C; DOTLESS BEH WITH ATTACHED RING BELOW AND 2 DOTS ABOVE; D; BEH */ - JOINING_TYPE_D, /* 067D; DOTLESS BEH WITH INVERTED 3 DOTS ABOVE; D; BEH */ - JOINING_TYPE_D, /* 067E; DOTLESS BEH WITH 3 DOTS BELOW; D; BEH */ - JOINING_TYPE_D, /* 067F; DOTLESS BEH WITH 4 DOTS ABOVE; D; BEH */ - JOINING_TYPE_D, /* 0680; DOTLESS BEH WITH 4 DOTS BELOW; D; BEH */ - JOINING_TYPE_D, /* 0681; HAH WITH HAMZA ABOVE; D; HAH */ - JOINING_TYPE_D, /* 0682; HAH WITH VERTICAL 2 DOTS ABOVE; D; HAH */ - JOINING_TYPE_D, /* 0683; HAH WITH 2 DOTS BELOW; D; HAH */ - JOINING_TYPE_D, /* 0684; HAH WITH VERTICAL 2 DOTS BELOW; D; HAH */ - JOINING_TYPE_D, /* 0685; HAH WITH 3 DOTS ABOVE; D; HAH */ - JOINING_TYPE_D, /* 0686; HAH WITH 3 DOTS BELOW; D; HAH */ - JOINING_TYPE_D, /* 0687; HAH WITH 4 DOTS BELOW; D; HAH */ - JOINING_TYPE_R, /* 0688; DAL WITH TAH ABOVE; R; DAL */ - JOINING_TYPE_R, /* 0689; DAL WITH ATTACHED RING BELOW; R; DAL */ - JOINING_TYPE_R, /* 068A; DAL WITH DOT BELOW; R; DAL */ - JOINING_TYPE_R, /* 068B; DAL WITH DOT BELOW AND TAH ABOVE; R; DAL */ - JOINING_TYPE_R, /* 068C; DAL WITH 2 DOTS ABOVE; R; DAL */ - JOINING_TYPE_R, /* 068D; DAL WITH 2 DOTS BELOW; R; DAL */ - JOINING_TYPE_R, /* 068E; DAL WITH 3 DOTS ABOVE; R; DAL */ - JOINING_TYPE_R, /* 068F; DAL WITH INVERTED 3 DOTS ABOVE; R; DAL */ - JOINING_TYPE_R, /* 0690; DAL WITH 4 DOTS ABOVE; R; DAL */ - JOINING_TYPE_R, /* 0691; REH WITH TAH ABOVE; R; REH */ - JOINING_TYPE_R, /* 0692; REH WITH V ABOVE; R; REH */ - JOINING_TYPE_R, /* 0693; REH WITH ATTACHED RING BELOW; R; REH */ - JOINING_TYPE_R, /* 0694; REH WITH DOT BELOW; R; REH */ - JOINING_TYPE_R, /* 0695; REH WITH V BELOW; R; REH */ - JOINING_TYPE_R, /* 0696; REH WITH DOT BELOW AND DOT WITHIN; R; REH */ - JOINING_TYPE_R, /* 0697; REH WITH 2 DOTS ABOVE; R; REH */ - JOINING_TYPE_R, /* 0698; REH WITH 3 DOTS ABOVE; R; REH */ - JOINING_TYPE_R, /* 0699; REH WITH 4 DOTS ABOVE; R; REH */ - JOINING_TYPE_D, /* 069A; SEEN WITH DOT BELOW AND DOT ABOVE; D; SEEN */ - JOINING_TYPE_D, /* 069B; SEEN WITH 3 DOTS BELOW; D; SEEN */ - JOINING_TYPE_D, /* 069C; SEEN WITH 3 DOTS BELOW AND 3 DOTS ABOVE; D; SEEN */ - JOINING_TYPE_D, /* 069D; SAD WITH 2 DOTS BELOW; D; SAD */ - JOINING_TYPE_D, /* 069E; SAD WITH 3 DOTS ABOVE; D; SAD */ - JOINING_TYPE_D, /* 069F; TAH WITH 3 DOTS ABOVE; D; TAH */ - JOINING_TYPE_D, /* 06A0; AIN WITH 3 DOTS ABOVE; D; AIN */ - JOINING_TYPE_D, /* 06A1; DOTLESS FEH; D; FEH */ - JOINING_TYPE_D, /* 06A2; DOTLESS FEH WITH DOT BELOW; D; FEH */ - JOINING_TYPE_D, /* 06A3; FEH WITH DOT BELOW; D; FEH */ - JOINING_TYPE_D, /* 06A4; DOTLESS FEH WITH 3 DOTS ABOVE; D; FEH */ - JOINING_TYPE_D, /* 06A5; DOTLESS FEH WITH 3 DOTS BELOW; D; FEH */ - JOINING_TYPE_D, /* 06A6; DOTLESS FEH WITH 4 DOTS ABOVE; D; FEH */ - JOINING_TYPE_D, /* 06A7; DOTLESS QAF WITH DOT ABOVE; D; QAF */ - JOINING_TYPE_D, /* 06A8; DOTLESS QAF WITH 3 DOTS ABOVE; D; QAF */ - JOINING_TYPE_D, /* 06A9; KEHEH; D; GAF */ - JOINING_TYPE_D, /* 06AA; SWASH KAF; D; SWASH KAF */ - JOINING_TYPE_D, /* 06AB; KEHEH WITH ATTACHED RING BELOW; D; GAF */ - JOINING_TYPE_D, /* 06AC; KAF WITH DOT ABOVE; D; KAF */ - JOINING_TYPE_D, /* 06AD; KAF WITH 3 DOTS ABOVE; D; KAF */ - JOINING_TYPE_D, /* 06AE; KAF WITH 3 DOTS BELOW; D; KAF */ - JOINING_TYPE_D, /* 06AF; GAF; D; GAF */ - JOINING_TYPE_D, /* 06B0; GAF WITH ATTACHED RING BELOW; D; GAF */ - JOINING_TYPE_D, /* 06B1; GAF WITH 2 DOTS ABOVE; D; GAF */ - JOINING_TYPE_D, /* 06B2; GAF WITH 2 DOTS BELOW; D; GAF */ - JOINING_TYPE_D, /* 06B3; GAF WITH VERTICAL 2 DOTS BELOW; D; GAF */ - JOINING_TYPE_D, /* 06B4; GAF WITH 3 DOTS ABOVE; D; GAF */ - JOINING_TYPE_D, /* 06B5; LAM WITH V ABOVE; D; LAM */ - JOINING_TYPE_D, /* 06B6; LAM WITH DOT ABOVE; D; LAM */ - JOINING_TYPE_D, /* 06B7; LAM WITH 3 DOTS ABOVE; D; LAM */ - JOINING_TYPE_D, /* 06B8; LAM WITH 3 DOTS BELOW; D; LAM */ - JOINING_TYPE_D, /* 06B9; NOON WITH DOT BELOW; D; NOON */ - JOINING_TYPE_D, /* 06BA; DOTLESS NOON; D; NOON */ - JOINING_TYPE_D, /* 06BB; DOTLESS NOON WITH TAH ABOVE; D; NOON */ - JOINING_TYPE_D, /* 06BC; NOON WITH ATTACHED RING BELOW; D; NOON */ - JOINING_TYPE_D, /* 06BD; NYA; D; NYA */ - JOINING_TYPE_D, /* 06BE; KNOTTED HEH; D; KNOTTED HEH */ - JOINING_TYPE_D, /* 06BF; HAH WITH 3 DOTS BELOW AND DOT ABOVE; D; HAH */ - JOINING_TYPE_R, /* 06C0; DOTLESS TEH MARBUTA WITH HAMZA ABOVE; R; TEH MARBUTA */ - JOINING_TYPE_D, /* 06C1; HEH GOAL; D; HEH GOAL */ - JOINING_TYPE_D, /* 06C2; HEH GOAL WITH HAMZA ABOVE; D; HEH GOAL */ - JOINING_TYPE_R, /* 06C3; TEH MARBUTA GOAL; R; TEH MARBUTA GOAL */ - JOINING_TYPE_R, /* 06C4; WAW WITH ATTACHED RING WITHIN; R; WAW */ - JOINING_TYPE_R, /* 06C5; WAW WITH BAR; R; WAW */ - JOINING_TYPE_R, /* 06C6; WAW WITH V ABOVE; R; WAW */ - JOINING_TYPE_R, /* 06C7; WAW WITH DAMMA ABOVE; R; WAW */ - JOINING_TYPE_R, /* 06C8; WAW WITH ALEF ABOVE; R; WAW */ - JOINING_TYPE_R, /* 06C9; WAW WITH INVERTED V ABOVE; R; WAW */ - JOINING_TYPE_R, /* 06CA; WAW WITH 2 DOTS ABOVE; R; WAW */ - JOINING_TYPE_R, /* 06CB; WAW WITH 3 DOTS ABOVE; R; WAW */ - JOINING_TYPE_D, /* 06CC; FARSI YEH; D; FARSI YEH */ - JOINING_TYPE_R, /* 06CD; YEH WITH TAIL; R; YEH WITH TAIL */ - JOINING_TYPE_D, /* 06CE; FARSI YEH WITH V ABOVE; D; FARSI YEH */ - JOINING_TYPE_R, /* 06CF; WAW WITH DOT ABOVE; R; WAW */ - JOINING_TYPE_D, /* 06D0; DOTLESS YEH WITH VERTICAL 2 DOTS BELOW; D; YEH */ - JOINING_TYPE_D, /* 06D1; DOTLESS YEH WITH 3 DOTS BELOW; D; YEH */ - JOINING_TYPE_R, /* 06D2; YEH BARREE; R; YEH BARREE */ - JOINING_TYPE_R, /* 06D3; YEH BARREE WITH HAMZA ABOVE; R; YEH BARREE */ - JOINING_TYPE_X, /* 06D4 */ - JOINING_TYPE_R, /* 06D5; DOTLESS TEH MARBUTA; R; TEH MARBUTA */ - JOINING_TYPE_X, /* 06D6 */ - JOINING_TYPE_X, /* 06D7 */ - JOINING_TYPE_X, /* 06D8 */ - JOINING_TYPE_X, /* 06D9 */ - JOINING_TYPE_X, /* 06DA */ - JOINING_TYPE_X, /* 06DB */ - JOINING_TYPE_X, /* 06DC */ - JOINING_TYPE_U, /* 06DD; ARABIC END OF AYAH; U; No_Joining_Group */ - JOINING_TYPE_X, /* 06DE */ - JOINING_TYPE_X, /* 06DF */ - JOINING_TYPE_X, /* 06E0 */ - JOINING_TYPE_X, /* 06E1 */ - JOINING_TYPE_X, /* 06E2 */ - JOINING_TYPE_X, /* 06E3 */ - JOINING_TYPE_X, /* 06E4 */ - JOINING_TYPE_X, /* 06E5 */ - JOINING_TYPE_X, /* 06E6 */ - JOINING_TYPE_X, /* 06E7 */ - JOINING_TYPE_X, /* 06E8 */ - JOINING_TYPE_X, /* 06E9 */ - JOINING_TYPE_X, /* 06EA */ - JOINING_TYPE_X, /* 06EB */ - JOINING_TYPE_X, /* 06EC */ - JOINING_TYPE_X, /* 06ED */ - JOINING_TYPE_R, /* 06EE; DAL WITH INVERTED V ABOVE; R; DAL */ - JOINING_TYPE_R, /* 06EF; REH WITH INVERTED V ABOVE; R; REH */ - JOINING_TYPE_X, /* 06F0 */ - JOINING_TYPE_X, /* 06F1 */ - JOINING_TYPE_X, /* 06F2 */ - JOINING_TYPE_X, /* 06F3 */ - JOINING_TYPE_X, /* 06F4 */ - JOINING_TYPE_X, /* 06F5 */ - JOINING_TYPE_X, /* 06F6 */ - JOINING_TYPE_X, /* 06F7 */ - JOINING_TYPE_X, /* 06F8 */ - JOINING_TYPE_X, /* 06F9 */ - JOINING_TYPE_D, /* 06FA; SEEN WITH DOT BELOW AND 3 DOTS ABOVE; D; SEEN */ - JOINING_TYPE_D, /* 06FB; SAD WITH DOT BELOW AND DOT ABOVE; D; SAD */ - JOINING_TYPE_D, /* 06FC; AIN WITH DOT BELOW AND DOT ABOVE; D; AIN */ - JOINING_TYPE_X, /* 06FD */ - JOINING_TYPE_X, /* 06FE */ - JOINING_TYPE_D, /* 06FF; KNOTTED HEH WITH INVERTED V ABOVE; D; KNOTTED HEH */ - - /* Syriac Characters */ - - JOINING_TYPE_X, /* 0700 */ - JOINING_TYPE_X, /* 0701 */ - JOINING_TYPE_X, /* 0702 */ - JOINING_TYPE_X, /* 0703 */ - JOINING_TYPE_X, /* 0704 */ - JOINING_TYPE_X, /* 0705 */ - JOINING_TYPE_X, /* 0706 */ - JOINING_TYPE_X, /* 0707 */ - JOINING_TYPE_X, /* 0708 */ - JOINING_TYPE_X, /* 0709 */ - JOINING_TYPE_X, /* 070A */ - JOINING_TYPE_X, /* 070B */ - JOINING_TYPE_X, /* 070C */ - JOINING_TYPE_X, /* 070D */ - JOINING_TYPE_X, /* 070E */ - JOINING_TYPE_X, /* 070F */ - JOINING_GROUP_ALAPH, /* 0710; ALAPH; R; ALAPH */ - JOINING_TYPE_X, /* 0711 */ - JOINING_TYPE_D, /* 0712; BETH; D; BETH */ - JOINING_TYPE_D, /* 0713; GAMAL; D; GAMAL */ - JOINING_TYPE_D, /* 0714; GAMAL GARSHUNI; D; GAMAL */ - JOINING_GROUP_DALATH_RISH, /* 0715; DALATH; R; DALATH RISH */ - JOINING_GROUP_DALATH_RISH, /* 0716; DOTLESS DALATH RISH; R; DALATH RISH */ - JOINING_TYPE_R, /* 0717; HE; R; HE */ - JOINING_TYPE_R, /* 0718; WAW; R; SYRIAC WAW */ - JOINING_TYPE_R, /* 0719; ZAIN; R; ZAIN */ - JOINING_TYPE_D, /* 071A; HETH; D; HETH */ - JOINING_TYPE_D, /* 071B; TETH; D; TETH */ - JOINING_TYPE_D, /* 071C; TETH GARSHUNI; D; TETH */ - JOINING_TYPE_D, /* 071D; YUDH; D; YUDH */ - JOINING_TYPE_R, /* 071E; YUDH HE; R; YUDH HE */ - JOINING_TYPE_D, /* 071F; KAPH; D; KAPH */ - JOINING_TYPE_D, /* 0720; LAMADH; D; LAMADH */ - JOINING_TYPE_D, /* 0721; MIM; D; MIM */ - JOINING_TYPE_D, /* 0722; NUN; D; NUN */ - JOINING_TYPE_D, /* 0723; SEMKATH; D; SEMKATH */ - JOINING_TYPE_D, /* 0724; FINAL SEMKATH; D; FINAL SEMKATH */ - JOINING_TYPE_D, /* 0725; E; D; E */ - JOINING_TYPE_D, /* 0726; PE; D; PE */ - JOINING_TYPE_D, /* 0727; REVERSED PE; D; REVERSED PE */ - JOINING_TYPE_R, /* 0728; SADHE; R; SADHE */ - JOINING_TYPE_D, /* 0729; QAPH; D; QAPH */ - JOINING_GROUP_DALATH_RISH, /* 072A; RISH; R; DALATH RISH */ - JOINING_TYPE_D, /* 072B; SHIN; D; SHIN */ - JOINING_TYPE_R, /* 072C; TAW; R; TAW */ - JOINING_TYPE_D, /* 072D; PERSIAN BHETH; D; BETH */ - JOINING_TYPE_D, /* 072E; PERSIAN GHAMAL; D; GAMAL */ - JOINING_GROUP_DALATH_RISH, /* 072F; PERSIAN DHALATH; R; DALATH RISH */ - JOINING_TYPE_X, /* 0730 */ - JOINING_TYPE_X, /* 0731 */ - JOINING_TYPE_X, /* 0732 */ - JOINING_TYPE_X, /* 0733 */ - JOINING_TYPE_X, /* 0734 */ - JOINING_TYPE_X, /* 0735 */ - JOINING_TYPE_X, /* 0736 */ - JOINING_TYPE_X, /* 0737 */ - JOINING_TYPE_X, /* 0738 */ - JOINING_TYPE_X, /* 0739 */ - JOINING_TYPE_X, /* 073A */ - JOINING_TYPE_X, /* 073B */ - JOINING_TYPE_X, /* 073C */ - JOINING_TYPE_X, /* 073D */ - JOINING_TYPE_X, /* 073E */ - JOINING_TYPE_X, /* 073F */ - JOINING_TYPE_X, /* 0740 */ - JOINING_TYPE_X, /* 0741 */ - JOINING_TYPE_X, /* 0742 */ - JOINING_TYPE_X, /* 0743 */ - JOINING_TYPE_X, /* 0744 */ - JOINING_TYPE_X, /* 0745 */ - JOINING_TYPE_X, /* 0746 */ - JOINING_TYPE_X, /* 0747 */ - JOINING_TYPE_X, /* 0748 */ - JOINING_TYPE_X, /* 0749 */ - JOINING_TYPE_X, /* 074A */ - JOINING_TYPE_X, /* 074B */ - JOINING_TYPE_X, /* 074C */ - JOINING_TYPE_R, /* 074D; SOGDIAN ZHAIN; R; ZHAIN */ - JOINING_TYPE_D, /* 074E; SOGDIAN KHAPH; D; KHAPH */ - JOINING_TYPE_D, /* 074F; SOGDIAN FE; D; FE */ - - /* Arabic Supplement Characters */ - - JOINING_TYPE_D, /* 0750; DOTLESS BEH WITH HORIZONTAL 3 DOTS BELOW; D; BEH */ - JOINING_TYPE_D, /* 0751; BEH WITH 3 DOTS ABOVE; D; BEH */ - JOINING_TYPE_D, /* 0752; DOTLESS BEH WITH INVERTED 3 DOTS BELOW; D; BEH */ - JOINING_TYPE_D, /* 0753; DOTLESS BEH WITH INVERTED 3 DOTS BELOW AND 2 DOTS ABOVE; D; BEH */ - JOINING_TYPE_D, /* 0754; DOTLESS BEH WITH 2 DOTS BELOW AND DOT ABOVE; D; BEH */ - JOINING_TYPE_D, /* 0755; DOTLESS BEH WITH INVERTED V BELOW; D; BEH */ - JOINING_TYPE_D, /* 0756; DOTLESS BEH WITH V ABOVE; D; BEH */ - JOINING_TYPE_D, /* 0757; HAH WITH 2 DOTS ABOVE; D; HAH */ - JOINING_TYPE_D, /* 0758; HAH WITH INVERTED 3 DOTS BELOW; D; HAH */ - JOINING_TYPE_R, /* 0759; DAL WITH VERTICAL 2 DOTS BELOW AND TAH ABOVE; R; DAL */ - JOINING_TYPE_R, /* 075A; DAL WITH INVERTED V BELOW; R; DAL */ - JOINING_TYPE_R, /* 075B; REH WITH BAR; R; REH */ - JOINING_TYPE_D, /* 075C; SEEN WITH 4 DOTS ABOVE; D; SEEN */ - JOINING_TYPE_D, /* 075D; AIN WITH 2 DOTS ABOVE; D; AIN */ - JOINING_TYPE_D, /* 075E; AIN WITH INVERTED 3 DOTS ABOVE; D; AIN */ - JOINING_TYPE_D, /* 075F; AIN WITH VERTICAL 2 DOTS ABOVE; D; AIN */ - JOINING_TYPE_D, /* 0760; DOTLESS FEH WITH 2 DOTS BELOW; D; FEH */ - JOINING_TYPE_D, /* 0761; DOTLESS FEH WITH INVERTED 3 DOTS BELOW; D; FEH */ - JOINING_TYPE_D, /* 0762; KEHEH WITH DOT ABOVE; D; GAF */ - JOINING_TYPE_D, /* 0763; KEHEH WITH 3 DOTS ABOVE; D; GAF */ - JOINING_TYPE_D, /* 0764; KEHEH WITH INVERTED 3 DOTS BELOW; D; GAF */ - JOINING_TYPE_D, /* 0765; MEEM WITH DOT ABOVE; D; MEEM */ - JOINING_TYPE_D, /* 0766; MEEM WITH DOT BELOW; D; MEEM */ - JOINING_TYPE_D, /* 0767; NOON WITH 2 DOTS BELOW; D; NOON */ - JOINING_TYPE_D, /* 0768; NOON WITH TAH ABOVE; D; NOON */ - JOINING_TYPE_D, /* 0769; NOON WITH V ABOVE; D; NOON */ - JOINING_TYPE_D, /* 076A; LAM WITH BAR; D; LAM */ - JOINING_TYPE_R, /* 076B; REH WITH VERTICAL 2 DOTS ABOVE; R; REH */ - JOINING_TYPE_R, /* 076C; REH WITH HAMZA ABOVE; R; REH */ - JOINING_TYPE_D, /* 076D; SEEN WITH VERTICAL 2 DOTS ABOVE; D; SEEN */ - JOINING_TYPE_D, /* 076E; HAH WITH TAH BELOW; D; HAH */ - JOINING_TYPE_D, /* 076F; HAH WITH TAH AND 2 DOTS BELOW; D; HAH */ - JOINING_TYPE_D, /* 0770; SEEN WITH 2 DOTS AND TAH ABOVE; D; SEEN */ - JOINING_TYPE_R, /* 0771; REH WITH 2 DOTS AND TAH ABOVE; R; REH */ - JOINING_TYPE_D, /* 0772; HAH WITH TAH ABOVE; D; HAH */ - JOINING_TYPE_R, /* 0773; ALEF WITH DIGIT TWO ABOVE; R; ALEF */ - JOINING_TYPE_R, /* 0774; ALEF WITH DIGIT THREE ABOVE; R; ALEF */ - JOINING_TYPE_D, /* 0775; FARSI YEH WITH DIGIT TWO ABOVE; D; FARSI YEH */ - JOINING_TYPE_D, /* 0776; FARSI YEH WITH DIGIT THREE ABOVE; D; FARSI YEH */ - JOINING_TYPE_D, /* 0777; DOTLESS YEH WITH DIGIT FOUR BELOW; D; YEH */ - JOINING_TYPE_R, /* 0778; WAW WITH DIGIT TWO ABOVE; R; WAW */ - JOINING_TYPE_R, /* 0779; WAW WITH DIGIT THREE ABOVE; R; WAW */ - JOINING_TYPE_D, /* 077A; BURUSHASKI YEH BARREE WITH DIGIT TWO ABOVE; D; BURUSHASKI YEH BARREE */ - JOINING_TYPE_D, /* 077B; BURUSHASKI YEH BARREE WITH DIGIT THREE ABOVE; D; BURUSHASKI YEH BARREE */ - JOINING_TYPE_D, /* 077C; HAH WITH DIGIT FOUR BELOW; D; HAH */ - JOINING_TYPE_D, /* 077D; SEEN WITH DIGIT FOUR ABOVE; D; SEEN */ - JOINING_TYPE_D, /* 077E; SEEN WITH INVERTED V ABOVE; D; SEEN */ - JOINING_TYPE_D, /* 077F; KAF WITH 2 DOTS ABOVE; D; KAF */ - - /* N'Ko Characters */ - - JOINING_TYPE_X, /* 0780 */ - JOINING_TYPE_X, /* 0781 */ - JOINING_TYPE_X, /* 0782 */ - JOINING_TYPE_X, /* 0783 */ - JOINING_TYPE_X, /* 0784 */ - JOINING_TYPE_X, /* 0785 */ - JOINING_TYPE_X, /* 0786 */ - JOINING_TYPE_X, /* 0787 */ - JOINING_TYPE_X, /* 0788 */ - JOINING_TYPE_X, /* 0789 */ - JOINING_TYPE_X, /* 078A */ - JOINING_TYPE_X, /* 078B */ - JOINING_TYPE_X, /* 078C */ - JOINING_TYPE_X, /* 078D */ - JOINING_TYPE_X, /* 078E */ - JOINING_TYPE_X, /* 078F */ - JOINING_TYPE_X, /* 0790 */ - JOINING_TYPE_X, /* 0791 */ - JOINING_TYPE_X, /* 0792 */ - JOINING_TYPE_X, /* 0793 */ - JOINING_TYPE_X, /* 0794 */ - JOINING_TYPE_X, /* 0795 */ - JOINING_TYPE_X, /* 0796 */ - JOINING_TYPE_X, /* 0797 */ - JOINING_TYPE_X, /* 0798 */ - JOINING_TYPE_X, /* 0799 */ - JOINING_TYPE_X, /* 079A */ - JOINING_TYPE_X, /* 079B */ - JOINING_TYPE_X, /* 079C */ - JOINING_TYPE_X, /* 079D */ - JOINING_TYPE_X, /* 079E */ - JOINING_TYPE_X, /* 079F */ - JOINING_TYPE_X, /* 07A0 */ - JOINING_TYPE_X, /* 07A1 */ - JOINING_TYPE_X, /* 07A2 */ - JOINING_TYPE_X, /* 07A3 */ - JOINING_TYPE_X, /* 07A4 */ - JOINING_TYPE_X, /* 07A5 */ - JOINING_TYPE_X, /* 07A6 */ - JOINING_TYPE_X, /* 07A7 */ - JOINING_TYPE_X, /* 07A8 */ - JOINING_TYPE_X, /* 07A9 */ - JOINING_TYPE_X, /* 07AA */ - JOINING_TYPE_X, /* 07AB */ - JOINING_TYPE_X, /* 07AC */ - JOINING_TYPE_X, /* 07AD */ - JOINING_TYPE_X, /* 07AE */ - JOINING_TYPE_X, /* 07AF */ - JOINING_TYPE_X, /* 07B0 */ - JOINING_TYPE_X, /* 07B1 */ - JOINING_TYPE_X, /* 07B2 */ - JOINING_TYPE_X, /* 07B3 */ - JOINING_TYPE_X, /* 07B4 */ - JOINING_TYPE_X, /* 07B5 */ - JOINING_TYPE_X, /* 07B6 */ - JOINING_TYPE_X, /* 07B7 */ - JOINING_TYPE_X, /* 07B8 */ - JOINING_TYPE_X, /* 07B9 */ - JOINING_TYPE_X, /* 07BA */ - JOINING_TYPE_X, /* 07BB */ - JOINING_TYPE_X, /* 07BC */ - JOINING_TYPE_X, /* 07BD */ - JOINING_TYPE_X, /* 07BE */ - JOINING_TYPE_X, /* 07BF */ - JOINING_TYPE_X, /* 07C0 */ - JOINING_TYPE_X, /* 07C1 */ - JOINING_TYPE_X, /* 07C2 */ - JOINING_TYPE_X, /* 07C3 */ - JOINING_TYPE_X, /* 07C4 */ - JOINING_TYPE_X, /* 07C5 */ - JOINING_TYPE_X, /* 07C6 */ - JOINING_TYPE_X, /* 07C7 */ - JOINING_TYPE_X, /* 07C8 */ - JOINING_TYPE_X, /* 07C9 */ - JOINING_TYPE_D, /* 07CA; NKO A; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07CB; NKO EE; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07CC; NKO I; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07CD; NKO E; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07CE; NKO U; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07CF; NKO OO; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07D0; NKO O; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07D1; NKO DAGBASINNA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07D2; NKO N; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07D3; NKO BA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07D4; NKO PA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07D5; NKO TA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07D6; NKO JA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07D7; NKO CHA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07D8; NKO DA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07D9; NKO RA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07DA; NKO RRA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07DB; NKO SA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07DC; NKO GBA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07DD; NKO FA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07DE; NKO KA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07DF; NKO LA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07E0; NKO NA WOLOSO; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07E1; NKO MA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07E2; NKO NYA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07E3; NKO NA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07E4; NKO HA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07E5; NKO WA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07E6; NKO YA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07E7; NKO NYA WOLOSO; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07E8; NKO JONA JA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07E9; NKO JONA CHA; D; No_Joining_Group */ - JOINING_TYPE_D, /* 07EA; NKO JONA RA; D; No_Joining_Group */ - JOINING_TYPE_X, /* 07EB */ - JOINING_TYPE_X, /* 07EC */ - JOINING_TYPE_X, /* 07ED */ - JOINING_TYPE_X, /* 07EE */ - JOINING_TYPE_X, /* 07EF */ - JOINING_TYPE_X, /* 07F0 */ - JOINING_TYPE_X, /* 07F1 */ - JOINING_TYPE_X, /* 07F2 */ - JOINING_TYPE_X, /* 07F3 */ - JOINING_TYPE_X, /* 07F4 */ - JOINING_TYPE_X, /* 07F5 */ - JOINING_TYPE_X, /* 07F6 */ - JOINING_TYPE_X, /* 07F7 */ - JOINING_TYPE_X, /* 07F8 */ - JOINING_TYPE_X, /* 07F9 */ - JOINING_TYPE_C, /* 07FA; NKO LAJANYALAN; C; No_Joining_Group */ - - /* Mandaic Characters */ - - JOINING_TYPE_X, /* 07FB */ - JOINING_TYPE_X, /* 07FC */ - JOINING_TYPE_X, /* 07FD */ - JOINING_TYPE_X, /* 07FE */ - JOINING_TYPE_X, /* 07FF */ - JOINING_TYPE_X, /* 0800 */ - JOINING_TYPE_X, /* 0801 */ - JOINING_TYPE_X, /* 0802 */ - JOINING_TYPE_X, /* 0803 */ - JOINING_TYPE_X, /* 0804 */ - JOINING_TYPE_X, /* 0805 */ - JOINING_TYPE_X, /* 0806 */ - JOINING_TYPE_X, /* 0807 */ - JOINING_TYPE_X, /* 0808 */ - JOINING_TYPE_X, /* 0809 */ - JOINING_TYPE_X, /* 080A */ - JOINING_TYPE_X, /* 080B */ - JOINING_TYPE_X, /* 080C */ - JOINING_TYPE_X, /* 080D */ - JOINING_TYPE_X, /* 080E */ - JOINING_TYPE_X, /* 080F */ - JOINING_TYPE_X, /* 0810 */ - JOINING_TYPE_X, /* 0811 */ - JOINING_TYPE_X, /* 0812 */ - JOINING_TYPE_X, /* 0813 */ - JOINING_TYPE_X, /* 0814 */ - JOINING_TYPE_X, /* 0815 */ - JOINING_TYPE_X, /* 0816 */ - JOINING_TYPE_X, /* 0817 */ - JOINING_TYPE_X, /* 0818 */ - JOINING_TYPE_X, /* 0819 */ - JOINING_TYPE_X, /* 081A */ - JOINING_TYPE_X, /* 081B */ - JOINING_TYPE_X, /* 081C */ - JOINING_TYPE_X, /* 081D */ - JOINING_TYPE_X, /* 081E */ - JOINING_TYPE_X, /* 081F */ - JOINING_TYPE_X, /* 0820 */ - JOINING_TYPE_X, /* 0821 */ - JOINING_TYPE_X, /* 0822 */ - JOINING_TYPE_X, /* 0823 */ - JOINING_TYPE_X, /* 0824 */ - JOINING_TYPE_X, /* 0825 */ - JOINING_TYPE_X, /* 0826 */ - JOINING_TYPE_X, /* 0827 */ - JOINING_TYPE_X, /* 0828 */ - JOINING_TYPE_X, /* 0829 */ - JOINING_TYPE_X, /* 082A */ - JOINING_TYPE_X, /* 082B */ - JOINING_TYPE_X, /* 082C */ - JOINING_TYPE_X, /* 082D */ - JOINING_TYPE_X, /* 082E */ - JOINING_TYPE_X, /* 082F */ - JOINING_TYPE_X, /* 0830 */ - JOINING_TYPE_X, /* 0831 */ - JOINING_TYPE_X, /* 0832 */ - JOINING_TYPE_X, /* 0833 */ - JOINING_TYPE_X, /* 0834 */ - JOINING_TYPE_X, /* 0835 */ - JOINING_TYPE_X, /* 0836 */ - JOINING_TYPE_X, /* 0837 */ - JOINING_TYPE_X, /* 0838 */ - JOINING_TYPE_X, /* 0839 */ - JOINING_TYPE_X, /* 083A */ - JOINING_TYPE_X, /* 083B */ - JOINING_TYPE_X, /* 083C */ - JOINING_TYPE_X, /* 083D */ - JOINING_TYPE_X, /* 083E */ - JOINING_TYPE_X, /* 083F */ - JOINING_TYPE_R, /* 0840; MANDAIC HALQA; R; No_Joining_Group */ - JOINING_TYPE_D, /* 0841; MANDAIC AB; D; No_Joining_Group */ - JOINING_TYPE_D, /* 0842; MANDAIC AG; D; No_Joining_Group */ - JOINING_TYPE_D, /* 0843; MANDAIC AD; D; No_Joining_Group */ - JOINING_TYPE_D, /* 0844; MANDAIC AH; D; No_Joining_Group */ - JOINING_TYPE_D, /* 0845; MANDAIC USHENNA; D; No_Joining_Group */ - JOINING_TYPE_R, /* 0846; MANDAIC AZ; R; No_Joining_Group */ - JOINING_TYPE_D, /* 0847; MANDAIC IT; D; No_Joining_Group */ - JOINING_TYPE_D, /* 0848; MANDAIC ATT; D; No_Joining_Group */ - JOINING_TYPE_R, /* 0849; MANDAIC AKSA; R; No_Joining_Group */ - JOINING_TYPE_D, /* 084A; MANDAIC AK; D; No_Joining_Group */ - JOINING_TYPE_D, /* 084B; MANDAIC AL; D; No_Joining_Group */ - JOINING_TYPE_D, /* 084C; MANDAIC AM; D; No_Joining_Group */ - JOINING_TYPE_D, /* 084D; MANDAIC AN; D; No_Joining_Group */ - JOINING_TYPE_D, /* 084E; MANDAIC AS; D; No_Joining_Group */ - JOINING_TYPE_R, /* 084F; MANDAIC IN; R; No_Joining_Group */ - JOINING_TYPE_D, /* 0850; MANDAIC AP; D; No_Joining_Group */ - JOINING_TYPE_D, /* 0851; MANDAIC ASZ; D; No_Joining_Group */ - JOINING_TYPE_D, /* 0852; MANDAIC AQ; D; No_Joining_Group */ - JOINING_TYPE_D, /* 0853; MANDAIC AR; D; No_Joining_Group */ - JOINING_TYPE_R, /* 0854; MANDAIC ASH; R; No_Joining_Group */ - JOINING_TYPE_D, /* 0855; MANDAIC AT; D; No_Joining_Group */ - JOINING_TYPE_U, /* 0856; MANDAIC DUSHENNA; U; No_Joining_Group */ - JOINING_TYPE_U, /* 0857; MANDAIC KAD; U; No_Joining_Group */ - JOINING_TYPE_U, /* 0858; MANDAIC AIN; U; No_Joining_Group */ - - /* Arabic Extended-A Characters */ - - JOINING_TYPE_X, /* 0859 */ - JOINING_TYPE_X, /* 085A */ - JOINING_TYPE_X, /* 085B */ - JOINING_TYPE_X, /* 085C */ - JOINING_TYPE_X, /* 085D */ - JOINING_TYPE_X, /* 085E */ - JOINING_TYPE_X, /* 085F */ - JOINING_TYPE_X, /* 0860 */ - JOINING_TYPE_X, /* 0861 */ - JOINING_TYPE_X, /* 0862 */ - JOINING_TYPE_X, /* 0863 */ - JOINING_TYPE_X, /* 0864 */ - JOINING_TYPE_X, /* 0865 */ - JOINING_TYPE_X, /* 0866 */ - JOINING_TYPE_X, /* 0867 */ - JOINING_TYPE_X, /* 0868 */ - JOINING_TYPE_X, /* 0869 */ - JOINING_TYPE_X, /* 086A */ - JOINING_TYPE_X, /* 086B */ - JOINING_TYPE_X, /* 086C */ - JOINING_TYPE_X, /* 086D */ - JOINING_TYPE_X, /* 086E */ - JOINING_TYPE_X, /* 086F */ - JOINING_TYPE_X, /* 0870 */ - JOINING_TYPE_X, /* 0871 */ - JOINING_TYPE_X, /* 0872 */ - JOINING_TYPE_X, /* 0873 */ - JOINING_TYPE_X, /* 0874 */ - JOINING_TYPE_X, /* 0875 */ - JOINING_TYPE_X, /* 0876 */ - JOINING_TYPE_X, /* 0877 */ - JOINING_TYPE_X, /* 0878 */ - JOINING_TYPE_X, /* 0879 */ - JOINING_TYPE_X, /* 087A */ - JOINING_TYPE_X, /* 087B */ - JOINING_TYPE_X, /* 087C */ - JOINING_TYPE_X, /* 087D */ - JOINING_TYPE_X, /* 087E */ - JOINING_TYPE_X, /* 087F */ - JOINING_TYPE_X, /* 0880 */ - JOINING_TYPE_X, /* 0881 */ - JOINING_TYPE_X, /* 0882 */ - JOINING_TYPE_X, /* 0883 */ - JOINING_TYPE_X, /* 0884 */ - JOINING_TYPE_X, /* 0885 */ - JOINING_TYPE_X, /* 0886 */ - JOINING_TYPE_X, /* 0887 */ - JOINING_TYPE_X, /* 0888 */ - JOINING_TYPE_X, /* 0889 */ - JOINING_TYPE_X, /* 088A */ - JOINING_TYPE_X, /* 088B */ - JOINING_TYPE_X, /* 088C */ - JOINING_TYPE_X, /* 088D */ - JOINING_TYPE_X, /* 088E */ - JOINING_TYPE_X, /* 088F */ - JOINING_TYPE_X, /* 0890 */ - JOINING_TYPE_X, /* 0891 */ - JOINING_TYPE_X, /* 0892 */ - JOINING_TYPE_X, /* 0893 */ - JOINING_TYPE_X, /* 0894 */ - JOINING_TYPE_X, /* 0895 */ - JOINING_TYPE_X, /* 0896 */ - JOINING_TYPE_X, /* 0897 */ - JOINING_TYPE_X, /* 0898 */ - JOINING_TYPE_X, /* 0899 */ - JOINING_TYPE_X, /* 089A */ - JOINING_TYPE_X, /* 089B */ - JOINING_TYPE_X, /* 089C */ - JOINING_TYPE_X, /* 089D */ - JOINING_TYPE_X, /* 089E */ - JOINING_TYPE_X, /* 089F */ - JOINING_TYPE_D, /* 08A0; DOTLESS BEH WITH V BELOW; D; BEH */ - JOINING_TYPE_X, /* 08A1 */ - JOINING_TYPE_D, /* 08A2; HAH WITH DOT BELOW AND 2 DOTS ABOVE; D; HAH */ - JOINING_TYPE_D, /* 08A3; TAH WITH 2 DOTS ABOVE; D; TAH */ - JOINING_TYPE_D, /* 08A4; DOTLESS FEH WITH DOT BELOW AND 3 DOTS ABOVE; D; FEH */ - JOINING_TYPE_D, /* 08A5; QAF WITH DOT BELOW; D; QAF */ - JOINING_TYPE_D, /* 08A6; LAM WITH DOUBLE BAR; D; LAM */ - JOINING_TYPE_D, /* 08A7; MEEM WITH 3 DOTS ABOVE; D; MEEM */ - JOINING_TYPE_D, /* 08A8; YEH WITH HAMZA ABOVE; D; YEH */ - JOINING_TYPE_D, /* 08A9; YEH WITH DOT ABOVE; D; YEH */ - JOINING_TYPE_R, /* 08AA; REH WITH LOOP; R; REH */ - JOINING_TYPE_R, /* 08AB; WAW WITH DOT WITHIN; R; WAW */ - JOINING_TYPE_R, /* 08AC; ROHINGYA YEH; R; ROHINGYA YEH */ - -}; - -#define JOINING_TABLE_FIRST 0x0600 -#define JOINING_TABLE_LAST 0x08AC - - -static const uint16_t shaping_table[][4] = -{ - {0x0000, 0x0000, 0x0000, 0xFE80}, /* U+0621 ARABIC LETTER HAMZA ISOLATED FORM */ - {0x0000, 0x0000, 0xFE82, 0xFE81}, /* U+0622 ARABIC LETTER ALEF WITH MADDA ABOVE */ - {0x0000, 0x0000, 0xFE84, 0xFE83}, /* U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE */ - {0x0000, 0x0000, 0xFE86, 0xFE85}, /* U+0624 ARABIC LETTER WAW WITH HAMZA ABOVE */ - {0x0000, 0x0000, 0xFE88, 0xFE87}, /* U+0625 ARABIC LETTER ALEF WITH HAMZA BELOW */ - {0xFE8B, 0xFE8C, 0xFE8A, 0xFE89}, /* U+0626 ARABIC LETTER YEH WITH HAMZA ABOVE */ - {0x0000, 0x0000, 0xFE8E, 0xFE8D}, /* U+0627 ARABIC LETTER ALEF */ - {0xFE91, 0xFE92, 0xFE90, 0xFE8F}, /* U+0628 ARABIC LETTER BEH */ - {0x0000, 0x0000, 0xFE94, 0xFE93}, /* U+0629 ARABIC LETTER TEH MARBUTA */ - {0xFE97, 0xFE98, 0xFE96, 0xFE95}, /* U+062A ARABIC LETTER TEH */ - {0xFE9B, 0xFE9C, 0xFE9A, 0xFE99}, /* U+062B ARABIC LETTER THEH */ - {0xFE9F, 0xFEA0, 0xFE9E, 0xFE9D}, /* U+062C ARABIC LETTER JEEM */ - {0xFEA3, 0xFEA4, 0xFEA2, 0xFEA1}, /* U+062D ARABIC LETTER HAH */ - {0xFEA7, 0xFEA8, 0xFEA6, 0xFEA5}, /* U+062E ARABIC LETTER KHAH */ - {0x0000, 0x0000, 0xFEAA, 0xFEA9}, /* U+062F ARABIC LETTER DAL */ - {0x0000, 0x0000, 0xFEAC, 0xFEAB}, /* U+0630 ARABIC LETTER THAL */ - {0x0000, 0x0000, 0xFEAE, 0xFEAD}, /* U+0631 ARABIC LETTER REH */ - {0x0000, 0x0000, 0xFEB0, 0xFEAF}, /* U+0632 ARABIC LETTER ZAIN */ - {0xFEB3, 0xFEB4, 0xFEB2, 0xFEB1}, /* U+0633 ARABIC LETTER SEEN */ - {0xFEB7, 0xFEB8, 0xFEB6, 0xFEB5}, /* U+0634 ARABIC LETTER SHEEN */ - {0xFEBB, 0xFEBC, 0xFEBA, 0xFEB9}, /* U+0635 ARABIC LETTER SAD */ - {0xFEBF, 0xFEC0, 0xFEBE, 0xFEBD}, /* U+0636 ARABIC LETTER DAD */ - {0xFEC3, 0xFEC4, 0xFEC2, 0xFEC1}, /* U+0637 ARABIC LETTER TAH */ - {0xFEC7, 0xFEC8, 0xFEC6, 0xFEC5}, /* U+0638 ARABIC LETTER ZAH */ - {0xFECB, 0xFECC, 0xFECA, 0xFEC9}, /* U+0639 ARABIC LETTER AIN */ - {0xFECF, 0xFED0, 0xFECE, 0xFECD}, /* U+063A ARABIC LETTER GHAIN */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+063B */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+063C */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+063D */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+063E */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+063F */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0640 */ - {0xFED3, 0xFED4, 0xFED2, 0xFED1}, /* U+0641 ARABIC LETTER FEH */ - {0xFED7, 0xFED8, 0xFED6, 0xFED5}, /* U+0642 ARABIC LETTER QAF */ - {0xFEDB, 0xFEDC, 0xFEDA, 0xFED9}, /* U+0643 ARABIC LETTER KAF */ - {0xFEDF, 0xFEE0, 0xFEDE, 0xFEDD}, /* U+0644 ARABIC LETTER LAM */ - {0xFEE3, 0xFEE4, 0xFEE2, 0xFEE1}, /* U+0645 ARABIC LETTER MEEM */ - {0xFEE7, 0xFEE8, 0xFEE6, 0xFEE5}, /* U+0646 ARABIC LETTER NOON */ - {0xFEEB, 0xFEEC, 0xFEEA, 0xFEE9}, /* U+0647 ARABIC LETTER HEH */ - {0x0000, 0x0000, 0xFEEE, 0xFEED}, /* U+0648 ARABIC LETTER WAW */ - {0xFBE8, 0xFBE9, 0xFEF0, 0xFEEF}, /* U+0649 ARABIC LETTER */ - {0xFEF3, 0xFEF4, 0xFEF2, 0xFEF1}, /* U+064A ARABIC LETTER YEH */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+064B */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+064C */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+064D */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+064E */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+064F */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0650 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0651 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0652 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0653 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0654 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0655 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0656 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0657 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0658 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0659 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+065A */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+065B */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+065C */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+065D */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+065E */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+065F */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0660 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0661 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0662 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0663 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0664 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0665 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0666 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0667 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0668 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0669 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+066A */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+066B */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+066C */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+066D */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+066E */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+066F */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0670 */ - {0x0000, 0x0000, 0xFB51, 0xFB50}, /* U+0671 ARABIC LETTER ALEF WASLA */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0672 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0673 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0674 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0675 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0676 */ - {0x0000, 0x0000, 0x0000, 0xFBDD}, /* U+0677 ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0678 */ - {0xFB68, 0xFB69, 0xFB67, 0xFB66}, /* U+0679 ARABIC LETTER TTEH */ - {0xFB60, 0xFB61, 0xFB5F, 0xFB5E}, /* U+067A ARABIC LETTER TTEHEH */ - {0xFB54, 0xFB55, 0xFB53, 0xFB52}, /* U+067B ARABIC LETTER BEEH */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+067C */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+067D */ - {0xFB58, 0xFB59, 0xFB57, 0xFB56}, /* U+067E ARABIC LETTER PEH */ - {0xFB64, 0xFB65, 0xFB63, 0xFB62}, /* U+067F ARABIC LETTER TEHEH */ - {0xFB5C, 0xFB5D, 0xFB5B, 0xFB5A}, /* U+0680 ARABIC LETTER BEHEH */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0681 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0682 */ - {0xFB78, 0xFB79, 0xFB77, 0xFB76}, /* U+0683 ARABIC LETTER NYEH */ - {0xFB74, 0xFB75, 0xFB73, 0xFB72}, /* U+0684 ARABIC LETTER DYEH */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0685 */ - {0xFB7C, 0xFB7D, 0xFB7B, 0xFB7A}, /* U+0686 ARABIC LETTER TCHEH */ - {0xFB80, 0xFB81, 0xFB7F, 0xFB7E}, /* U+0687 ARABIC LETTER TCHEHEH */ - {0x0000, 0x0000, 0xFB89, 0xFB88}, /* U+0688 ARABIC LETTER DDAL */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0689 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+068A */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+068B */ - {0x0000, 0x0000, 0xFB85, 0xFB84}, /* U+068C ARABIC LETTER DAHAL */ - {0x0000, 0x0000, 0xFB83, 0xFB82}, /* U+068D ARABIC LETTER DDAHAL */ - {0x0000, 0x0000, 0xFB87, 0xFB86}, /* U+068E ARABIC LETTER DUL */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+068F */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0690 */ - {0x0000, 0x0000, 0xFB8D, 0xFB8C}, /* U+0691 ARABIC LETTER RREH */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0692 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0693 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0694 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0695 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0696 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0697 */ - {0x0000, 0x0000, 0xFB8B, 0xFB8A}, /* U+0698 ARABIC LETTER JEH */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0699 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+069A */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+069B */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+069C */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+069D */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+069E */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+069F */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06A0 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06A1 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06A2 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06A3 */ - {0xFB6C, 0xFB6D, 0xFB6B, 0xFB6A}, /* U+06A4 ARABIC LETTER VEH */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06A5 */ - {0xFB70, 0xFB71, 0xFB6F, 0xFB6E}, /* U+06A6 ARABIC LETTER PEHEH */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06A7 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06A8 */ - {0xFB90, 0xFB91, 0xFB8F, 0xFB8E}, /* U+06A9 ARABIC LETTER KEHEH */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06AA */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06AB */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06AC */ - {0xFBD5, 0xFBD6, 0xFBD4, 0xFBD3}, /* U+06AD ARABIC LETTER NG */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06AE */ - {0xFB94, 0xFB95, 0xFB93, 0xFB92}, /* U+06AF ARABIC LETTER GAF */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B0 */ - {0xFB9C, 0xFB9D, 0xFB9B, 0xFB9A}, /* U+06B1 ARABIC LETTER NGOEH */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B2 */ - {0xFB98, 0xFB99, 0xFB97, 0xFB96}, /* U+06B3 ARABIC LETTER GUEH */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B4 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B5 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B6 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B7 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B8 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B9 */ - {0x0000, 0x0000, 0xFB9F, 0xFB9E}, /* U+06BA ARABIC LETTER NOON GHUNNA */ - {0xFBA2, 0xFBA3, 0xFBA1, 0xFBA0}, /* U+06BB ARABIC LETTER RNOON */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06BC */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06BD */ - {0xFBAC, 0xFBAD, 0xFBAB, 0xFBAA}, /* U+06BE ARABIC LETTER HEH DOACHASHMEE */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06BF */ - {0x0000, 0x0000, 0xFBA5, 0xFBA4}, /* U+06C0 ARABIC LETTER HEH WITH YEH ABOVE */ - {0xFBA8, 0xFBA9, 0xFBA7, 0xFBA6}, /* U+06C1 ARABIC LETTER HEH GOAL */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06C2 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06C3 */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06C4 */ - {0x0000, 0x0000, 0xFBE1, 0xFBE0}, /* U+06C5 ARABIC LETTER KIRGHIZ OE */ - {0x0000, 0x0000, 0xFBDA, 0xFBD9}, /* U+06C6 ARABIC LETTER OE */ - {0x0000, 0x0000, 0xFBD8, 0xFBD7}, /* U+06C7 ARABIC LETTER U */ - {0x0000, 0x0000, 0xFBDC, 0xFBDB}, /* U+06C8 ARABIC LETTER YU */ - {0x0000, 0x0000, 0xFBE3, 0xFBE2}, /* U+06C9 ARABIC LETTER KIRGHIZ YU */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06CA */ - {0x0000, 0x0000, 0xFBDF, 0xFBDE}, /* U+06CB ARABIC LETTER VE */ - {0xFBFE, 0xFBFF, 0xFBFD, 0xFBFC}, /* U+06CC ARABIC LETTER FARSI YEH */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06CD */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06CE */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06CF */ - {0xFBE6, 0xFBE7, 0xFBE5, 0xFBE4}, /* U+06D0 ARABIC LETTER E */ - {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06D1 */ - {0x0000, 0x0000, 0xFBAF, 0xFBAE}, /* U+06D2 ARABIC LETTER YEH BARREE */ - {0x0000, 0x0000, 0xFBB1, 0xFBB0}, /* U+06D3 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE */ -}; - -#define SHAPING_TABLE_FIRST 0x0621 -#define SHAPING_TABLE_LAST 0x06D3 - - -static const struct ligature_set_t { - uint16_t first; - struct ligature_pairs_t { - uint16_t second; - uint16_t ligature; - } ligatures[4]; -} ligature_table[] = -{ - { 0xFEDF, { - { 0xFE88, 0xFEF9 }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM */ - { 0xFE82, 0xFEF5 }, /* ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM */ - { 0xFE8E, 0xFEFB }, /* ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM */ - { 0xFE84, 0xFEF7 }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM */ - }}, - { 0xFEE0, { - { 0xFE88, 0xFEFA }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM */ - { 0xFE82, 0xFEF6 }, /* ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM */ - { 0xFE8E, 0xFEFC }, /* ARABIC LIGATURE LAM WITH ALEF FINAL FORM */ - { 0xFE84, 0xFEF8 }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM */ - }}, -}; - - -#endif /* HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH */ - -/* == End of generated table == */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29-PATCHES/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-0.9.30-PATCHES/ChangeLog index ae6fb04efdd..d468c1c50ff 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29-PATCHES/ChangeLog +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30-PATCHES/ChangeLog @@ -1,3 +1,10 @@ +2014-07-10 Peter Breitenlohner <peb@mppmu.mpg.de> + + Imported harfbuzz-0.9.30 source tree from: + http://www.freedesktop.org/software/harfbuzz/release/ + + * patch-01-cygwin: Adapted. + 2014-06-23 Peter Breitenlohner <peb@mppmu.mpg.de> * patch-01-cygwin (new): Avoid 'not supported' warnings. diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29-PATCHES/TL-Changes b/Build/source/libs/harfbuzz/harfbuzz-0.9.30-PATCHES/TL-Changes index c004b338705..78dc71a9302 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29-PATCHES/TL-Changes +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30-PATCHES/TL-Changes @@ -1,4 +1,4 @@ -Changes applied to the harfbuzz-0.9.29/ tree as obtained from: +Changes applied to the harfbuzz-0.9.30/ tree as obtained from: http://www.freedesktop.org/software/harfbuzz/release/ Removed: diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29-PATCHES/patch-01-cygwin b/Build/source/libs/harfbuzz/harfbuzz-0.9.30-PATCHES/patch-01-cygwin index bd6a81f4c32..211d79cda2a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29-PATCHES/patch-01-cygwin +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30-PATCHES/patch-01-cygwin @@ -1,7 +1,7 @@ -diff -ur harfbuzz-0.9.29.orig/src/hb-private.hh harfbuzz-0.9.29/src/hb-private.hh ---- harfbuzz-0.9.29.orig/src/hb-private.hh 2014-05-08 23:54:36.000000000 +0200 -+++ harfbuzz-0.9.29/src/hb-private.hh 2014-06-23 19:09:17.000000000 +0200 -@@ -179,7 +179,7 @@ +diff -ur harfbuzz-0.9.30.orig/src/hb-private.hh harfbuzz-0.9.30/src/hb-private.hh +--- harfbuzz-0.9.30.orig/src/hb-private.hh 2014-06-27 21:17:01.000000000 +0200 ++++ harfbuzz-0.9.30/src/hb-private.hh 2014-07-10 08:37:35.000000000 +0200 +@@ -87,7 +87,7 @@ #endif #ifndef HB_INTERNAL diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/AUTHORS b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/AUTHORS index c611d7d4769..81cdc4cf37f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/AUTHORS +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/AUTHORS @@ -4,5 +4,6 @@ Martin Hosken Jonathan Kew Lars Knoll Werner Lemberg +Roozbeh Pournader Owen Taylor David Turner diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/Android.mk b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/Android.mk index 757d136e509..610b40ab4b0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/Android.mk +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/Android.mk @@ -21,7 +21,6 @@ HARFBUZZ_SRC_FILES = \ src/hb-buffer-serialize.cc \ 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 \ @@ -29,77 +28,64 @@ HARFBUZZ_SRC_FILES = \ src/hb-shape.cc \ src/hb-shape-plan.cc \ src/hb-shaper.cc \ - src/hb-tt-font.cc \ src/hb-unicode.cc \ src/hb-warning.cc \ + src/hb-ot-font.cc \ src/hb-ot-layout.cc \ src/hb-ot-map.cc \ src/hb-ot-shape.cc \ src/hb-ot-shape-complex-arabic.cc \ src/hb-ot-shape-complex-default.cc \ + src/hb-ot-shape-complex-hangul.cc \ + src/hb-ot-shape-complex-hebrew.cc \ src/hb-ot-shape-complex-indic.cc \ src/hb-ot-shape-complex-indic-table.cc \ src/hb-ot-shape-complex-myanmar.cc \ src/hb-ot-shape-complex-sea.cc \ src/hb-ot-shape-complex-thai.cc \ + src/hb-ot-shape-complex-tibetan.cc \ src/hb-ot-shape-normalize.cc \ - src/hb-ot-shape-fallback.cc + src/hb-ot-shape-fallback.cc \ + $(NULL) ############################################################# -# build the harfbuzz library +# build the harfbuzz shared library # - include $(CLEAR_VARS) - LOCAL_ARM_MODE := arm - LOCAL_MODULE_TAGS := optional - LOCAL_SRC_FILES:= \ $(HARFBUZZ_SRC_FILES) \ src/hb-icu.cc - LOCAL_CPP_EXTENSION := .cc - LOCAL_SHARED_LIBRARIES := \ libcutils \ libicuuc \ libicui18n \ libutils - LOCAL_C_INCLUDES += \ $(LOCAL_PATH)/src \ external/icu4c/common - LOCAL_CFLAGS += -DHB_NO_MT -DHAVE_OT -DHAVE_ICU - -LOCAL_LDLIBS += -lpthread - LOCAL_MODULE:= libharfbuzz_ng - include $(BUILD_SHARED_LIBRARY) ############################################################# # build the harfbuzz static library # include $(CLEAR_VARS) - LOCAL_ARM_MODE := arm LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES:= \ $(HARFBUZZ_SRC_FILES) \ src/hb-ucdn.cc \ src/hb-ucdn/ucdn.c - -LOCAL_CPP_EXTENSION := .cc -LOCAL_STATIC_LIBRARIES := libft2 -LOCAL_C_INCLUDES := \ - $(LOCAL_PATH)/src \ - external/freetype/include +LOCAL_CPP_EXTENSION := .cc +LOCAL_STATIC_LIBRARIES := libft2 +LOCAL_C_INCLUDES += \ + $(LOCAL_PATH)/src \ + external/freetype/include LOCAL_CFLAGS += -DHB_NO_MT -DHAVE_OT -DHAVE_UCDN -DHAVE_FREETYPE -LOCAL_LDLIBS += -lpthread - LOCAL_MODULE:= libharfbuzz_ng include $(BUILD_STATIC_LIBRARY) - diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/ChangeLog index b845aba673a..37d59ffef05 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/ChangeLog +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/ChangeLog @@ -1,3 +1,1077 @@ +commit ea001374b86c4f1b24246c08a3d66d2a0e95a827 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 9 17:28:43 2014 -0400 + + 0.9.30 + + NEWS | 17 +++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 18 insertions(+), 1 deletion(-) + +commit 8b16ff12590200afb08e8821e3f14d2fdf8efbda +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 9 17:40:52 2014 -0400 + + [uniscribe] Fix build after recent changes to Offset + + src/hb-ot-name-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 73f7f8919ea1f09b8c5b29f231ac84105cde2145 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 9 17:17:18 2014 -0400 + + Define _POSIX_C_SOURCE only if it is not defined + + Fixes https://github.com/behdad/harfbuzz/pull/45 + + src/hb-blob.cc | 2 ++ + 1 file changed, 2 insertions(+) + +commit 6bd5646f1b865a76304a67e03a6161afcfef293f +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 9 17:07:06 2014 -0400 + + [tests] Remove bash'ish + + Apparently on travis-ci, bash is linked to dash, which doesn't + understand "let". Failing tests were not being noticed. See eg: + + https://travis-ci.org/behdad/harfbuzz/jobs/29544211 + + Don't rely on bash. + + test/shaping/run-tests.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 0afedaa96c81b63774a4a0ef9b4cb4995d24ec9e +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 9 17:00:48 2014 -0400 + + [util/hb-shape] Fix crash; oops + + util/hb-shape.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0cd94491b99aed438ad79a55cdfced8d1b657179 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 9 16:51:38 2014 -0400 + + [ucdn] Update to Unicode 7.0.0 data + + From http://github.com/behdad/ucdn + + src/hb-ucdn.cc | 23 + + src/hb-ucdn/README | 1 + + src/hb-ucdn/ucdn.c | 2 +- + src/hb-ucdn/ucdn.h | 27 + + src/hb-ucdn/unicodedata_db.h | 3711 + ++++++++++++++++++++++-------------------- + 5 files changed, 2039 insertions(+), 1725 deletions(-) + +commit 9d4ede3a97fff544a5ec2a671e49a92a79645b61 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 9 16:19:55 2014 -0400 + + [Android.mk] Update source list + + Android.mk | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 7e1ab1f6d812a55f75d4844f7981d5604481049c +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 9 16:13:40 2014 -0400 + + [Android.mk] Whitespace + + Android.mk | 26 ++++++-------------------- + 1 file changed, 6 insertions(+), 20 deletions(-) + +commit 5c6695c42470e0a15e9029ebe8ecbebf3fa4f95b +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 9 16:07:12 2014 -0400 + + [Android.mk] Remove -lpthread; we build with -DHB_NO_MT + + Android.mk | 3 --- + 1 file changed, 3 deletions(-) + +commit 9109f1e944dd4bd4ae8057b75c8a31e9d31797aa +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Jul 8 20:02:29 2014 -0400 + + [util/hb-shape] Accept an empty output-format that would skip output + + Useful for benchmarking, to avoid buffer serialization overhead (which + seems to by far dominate shaping!) + + util/hb-shape.cc | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 8656408572c2685f278a3b742ee69c767c29788c +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Jul 8 18:10:20 2014 -0400 + + [util] Fix hb-view rendering with --font-funcs=ot + + util/helper-cairo.cc | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +commit 8650def73500204b79c651f58b1be3f94a41973d +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Jul 5 15:50:18 2014 -0400 + + [util] Add option to set font function implementation to use + + Supports ft and ot right now. hb-view currently not rendering + with ot. + Will fix after some clean up. + + util/options.cc | 76 + ++++++++++++++++++++++++++++++++++++++++++++++++++------- + util/options.hh | 21 ++++++++++++++++ + 2 files changed, 88 insertions(+), 9 deletions(-) + +commit 2306ad46dce1c53b0b1bfabdc04d70e3b99eabb7 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jul 4 18:09:29 2014 -0400 + + [util] Fix memory issue + + util/options.cc | 6 ++---- + util/options.hh | 9 +++++++++ + 2 files changed, 11 insertions(+), 4 deletions(-) + +commit 14a4a9d649798d32c31f79b4045a885626dffc7f +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Jul 1 15:51:54 2014 -0400 + + Add Roozbeh to AUTHORS + + He's been my shadow for all Indic-related changes in the last + few months. + + AUTHORS | 1 + + 1 file changed, 1 insertion(+) + +commit 68f724484b1663255ee249481624e552d2e2313f +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Jun 30 15:46:53 2014 -0400 + + [indic] Remove some more now-unused special-cases + + src/hb-ot-shape-complex-indic.cc | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit e79c9489802f99dc7eb8b4c2765c4c71b5f80e60 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Jun 30 15:39:39 2014 -0400 + + [indic] Remove special-casing of U+1CF2,1CF3 + + These were introduced in a498565cedf0441ae723c5e5969f637d792a15e7, + but IndicSyllabicCategory has had the correct value already, so the + special code was never needed. + + src/hb-ot-shape-complex-indic.cc | 6 ------ + 1 file changed, 6 deletions(-) + +commit d743ce78e10758b7dbaf0cfd191309e5ef646881 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Jun 30 15:24:02 2014 -0400 + + [indic-table] Update to Unicode 7.0 data + + Touch code just enough to preserve previous syllable structure + and functionality as closely as possible. Many further cleanups + coming later. + + src/gen-indic-table.py | 4 + + src/hb-ot-shape-complex-indic-private.hh | 23 +- + src/hb-ot-shape-complex-indic-table.cc | 468 + ++++++++++++++++++++++--------- + src/hb-ot-shape-complex-indic.cc | 21 -- + src/hb-ot-shape-complex-myanmar.cc | 2 - + 5 files changed, 355 insertions(+), 163 deletions(-) + +commit 5fa21b3ab7175f55f89cb194b544d5d4bd06a481 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Jun 30 14:30:54 2014 -0400 + + [indic-table] Fix category frequency counts in comments + + src/gen-indic-table.py | 2 +- + src/hb-ot-shape-complex-indic-table.cc | 46 + +++++++++++++++++----------------- + 2 files changed, 24 insertions(+), 24 deletions(-) + +commit 5c4e3e9a57b6b735e7d72cbd5f4070cf024d7015 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Jun 30 14:25:18 2014 -0400 + + Whitespace + + src/hb-ot-shape-complex-indic-private.hh | 76 + ++++++++++++++++---------------- + 1 file changed, 38 insertions(+), 38 deletions(-) + +commit af528b6674bccac3efd13f8b33fcdc6aeb178f4c +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 27 18:07:00 2014 -0400 + + Fix typo; ouch! + + src/hb-ot-cmap-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7d4ada66c96a748ce92f8e8edac149361c3dc829 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 27 17:30:59 2014 -0400 + + Mark unsed members with a "Z" suffix + + There may be more. There are members that are by definition + redundant or reserved and not needed, NOT what we *currently* + don't use. + + I'm sure there's more... + + src/hb-open-file-private.hh | 6 +++--- + src/hb-ot-cmap-table.hh | 24 ++++++++++++------------ + src/hb-ot-layout-common-private.hh | 2 +- + 3 files changed, 16 insertions(+), 16 deletions(-) + +commit 23afcff1d14e57f5ce30a4100698d4f2dc530958 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 27 17:22:36 2014 -0400 + + [ot-font] Implement Unicode variation selectors + + src/hb-ot-font.cc | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +commit a5a4736916b6035e6413d4619f9e7287e683d51b +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 27 17:03:22 2014 -0400 + + [cmap] Implement subtable format 14 + + src/hb-ot-cmap-table.hh | 147 + +++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 133 insertions(+), 14 deletions(-) + +commit 586b60622c33878f9ca4826b4ef07369d32bf039 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 27 15:39:47 2014 -0400 + + Minor: final bits of cleanup + + src/hb-open-type-private.hh | 1 + + src/hb-ot-layout-common-private.hh | 4 ++-- + 2 files changed, 3 insertions(+), 2 deletions(-) + +commit 51d9ba09bc78188ec87218aef5232e80568c1712 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 27 15:27:15 2014 -0400 + + Minor + + src/hb-open-type-private.hh | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit 3084767e92483c669f38319f153c498e9a6b92c7 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 27 15:24:35 2014 -0400 + + Minor: Remove LongArrayOf + + src/hb-open-file-private.hh | 2 +- + src/hb-open-type-private.hh | 4 ---- + 2 files changed, 1 insertion(+), 5 deletions(-) + +commit 41ea59495032e712fa6f801350ee00d5f00b5724 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 27 15:23:18 2014 -0400 + + Minor: Remove LongSortedArrayOf + + src/hb-open-type-private.hh | 4 ---- + src/hb-ot-cmap-table.hh | 2 +- + 2 files changed, 1 insertion(+), 5 deletions(-) + +commit bb6ecf2ce5c2679c298741af17836a22e1d68121 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 27 15:13:44 2014 -0400 + + Minor: Remove LongOffsetArrayOf and LongOffsetLongArrayOf + + src/hb-open-file-private.hh | 2 +- + src/hb-open-type-private.hh | 8 -------- + src/hb-ot-layout-gdef-table.hh | 2 +- + 3 files changed, 2 insertions(+), 10 deletions(-) + +commit 99d281712390fd54e523b2f0580d10445457ec2f +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 27 15:12:52 2014 -0400 + + Minor: Remove GenericOffset + + src/hb-open-type-private.hh | 13 +++++-------- + src/hb-ot-layout-common-private.hh | 8 ++++---- + 2 files changed, 9 insertions(+), 12 deletions(-) + +commit 9da552dcc5b89b3bbbe5a55fb7c543222382e12a +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 27 15:09:42 2014 -0400 + + Minor: Remove some GenericXXX templates + + src/hb-open-type-private.hh | 32 +++++++++++--------------------- + src/hb-ot-cmap-table.hh | 4 ++-- + src/hb-ot-layout-common-private.hh | 2 +- + 3 files changed, 14 insertions(+), 24 deletions(-) + +commit 36073ede5b52bd1231622cbacd1bee6b82696d81 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 27 14:48:54 2014 -0400 + + Minor: Reorder template parameter order + + src/hb-open-type-private.hh | 14 +++++++------- + src/hb-ot-cmap-table.hh | 2 +- + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit 0394ec1bfbd7806cbe9fc809b34f96f8d12ffbf2 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 27 14:40:35 2014 -0400 + + Minor: Introduce GenericOffset + + src/hb-open-type-private.hh | 16 ++++++---------- + 1 file changed, 6 insertions(+), 10 deletions(-) + +commit 0d1b3419a7bbfd18ab8fed1abd3a41dec11e8d97 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jun 26 19:13:34 2014 -0400 + + Minor: Use template parameter default values for OffsetTo + + src/hb-open-type-private.hh | 13 +++++-------- + 1 file changed, 5 insertions(+), 8 deletions(-) + +commit 546b1adcdce2d3592843938b0b81ff32e67b0b83 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jun 26 19:10:21 2014 -0400 + + Minor: Use template parameter default values for hb_prealloced_array_t + + src/hb-private.hh | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit 911ca38645bd51764e7859bc482319e8f6d2f710 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Jun 24 10:20:36 2014 -0600 + + Add back API removed recently + + Add hb_ot_layout_language_get_required_feature_index() again, which + is used in Pango. This was removed in + da132937989acb4d8ca9bd41c79f98750e7dda30 in favor of + hb_ot_layout_language_get_required_feature(). + + API changes: + + - Added hb_ot_layout_language_get_required_feature_index back. + + src/hb-ot-layout.cc | 15 +++++++++++++++ + src/hb-ot-layout.h | 7 +++++++ + 2 files changed, 22 insertions(+) + +commit 89e4946929a8cd2359c7d76fa9272d5604243002 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sun Jun 22 11:32:13 2014 -0600 + + Add new IndicSyllabicCategory short forms for Unicode 7.0 + + src/gen-indic-table.py | 4 ++++ + 1 file changed, 4 insertions(+) + +commit dcee838e89c2863c2fda4e8f098e720637e02335 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sun Jun 22 11:29:59 2014 -0600 + + Minor + + src/gen-arabic-table.py | 2 +- + src/gen-indic-table.py | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit f2ad86e6053fa87ab188c36edc3d98c92324c049 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Jun 21 15:31:10 2014 -0600 + + [indic-table-gen] Minor + + src/gen-indic-table.py | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 2ec62279aab8c2263f17ffbc7c6f74304674f9a8 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Jun 21 15:25:59 2014 -0600 + + [indic-table] Update to Unicode 6.3.0 + + Was from 6.2.0. It's a no-op. Committing for the record. + + src/hb-ot-shape-complex-indic-table.cc | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 5d4d7384efa97a30893ad28b9ad9a994722de12c +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Jun 21 14:53:21 2014 -0600 + + Minor: format + + src/hb-ot-shape-complex-arabic.cc | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit 44243ae5902cc420e6bf6ec2fca2584ba93ff2fb +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Jun 21 14:19:34 2014 -0600 + + [arabic-table] Update to Unicode 7.0 + + Old table was from 6.2. Remove hard-coded Mongolian and Phags-pa + data. + This completes support for new scripts Manichian and Psaltar Pahlavi. + + src/hb-ot-shape-complex-arabic-table.hh | 72 + ++++++++++++++++++++++++++++----- + src/hb-ot-shape-complex-arabic.cc | 22 ---------- + 2 files changed, 63 insertions(+), 31 deletions(-) + +commit cd86ab9b4f4d7bd4f563be64a83714fc8fb395d7 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Jun 21 14:10:38 2014 -0600 + + [arabic-table] Add ZWJ/ZWNJ now that table is segmented + + src/gen-arabic-table.py | 2 -- + src/hb-ot-shape-complex-arabic-table.hh | 12 +++++++++++- + src/hb-ot-shape-complex-arabic.cc | 5 ----- + 3 files changed, 11 insertions(+), 8 deletions(-) + +commit 2390d9b67e1dfeccd3f0850d1304c52b54817ca0 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Jun 21 14:07:00 2014 -0600 + + [arabic-table] Further tune + + In anticipation of Unicode 7.0 data coming in the next commit. + + src/gen-arabic-table.py | 10 ++++++--- + src/hb-ot-shape-complex-arabic-table.hh | 38 + +++++++++++++++------------------ + 2 files changed, 24 insertions(+), 24 deletions(-) + +commit a133e6067aaebc494c0156b5fac7f4a879e12dbe +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 20 18:01:34 2014 -0400 + + [indic-table] Minor + + src/gen-indic-table.py | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit b900fa2c8cc088dbcbdbf90bfdf8764f9ee1c96a +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 20 17:59:43 2014 -0400 + + [arabic-table] Use segmented table + + No functional change. + + src/gen-arabic-table.py | 82 + +++++++++++++++++++++++---------- + src/hb-ot-shape-complex-arabic-table.hh | 53 ++++++++++++++------- + src/hb-ot-shape-complex-arabic.cc | 8 ++-- + 3 files changed, 97 insertions(+), 46 deletions(-) + +commit c2e113404640bf9b8bac469d0803ac946e77964f +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 20 17:57:03 2014 -0400 + + [indic-table] Make output stable + + src/gen-indic-table.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 55abfbd2ac1626af16151298a0837b837d0796df +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 20 16:47:43 2014 -0400 + + [indic-table] Minor + + No output change. + + src/gen-indic-table.py | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +commit f88670749006991282bcc4e8b6218487295ca670 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 20 16:30:10 2014 -0400 + + [arabic-table] Don't write comments + + No functional change. + + src/gen-arabic-table.py | 20 +- + src/hb-ot-shape-complex-arabic-table.hh | 710 + ++------------------------------ + 2 files changed, 38 insertions(+), 692 deletions(-) + +commit 200dfe3eb10feda2ad25940338b08011f4757ca4 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 20 16:20:59 2014 -0400 + + [arabic-table] Use short names for values + + No functional change. + + src/gen-arabic-table.py | 16 +- + src/hb-ot-shape-complex-arabic-table.hh | 1386 + ++++++++++++++++--------------- + 2 files changed, 716 insertions(+), 686 deletions(-) + +commit 3f5327a41efcf50f64d9498ef3dfd6875ef6a5ab +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 20 16:17:42 2014 -0400 + + [arabic-table] Read Blocks.txt and shuffle code around + + No functional change. + + src/Makefile.am | 2 +- + src/gen-arabic-table.py | 80 + +++++++++++++++++++-------------- + src/hb-ot-shape-complex-arabic-table.hh | 30 ++++++++----- + 3 files changed, 67 insertions(+), 45 deletions(-) + +commit 171f970e4f72d9fe1af30eab32b96906ee4a14f5 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 20 15:25:30 2014 -0400 + + [indic-table] Black-list Thai, Lao, and Tibetan + + We don't need Indic table for those. + + src/gen-indic-table.py | 3 ++ + src/hb-ot-shape-complex-indic-table.cc | 94 + +++++++--------------------------- + 2 files changed, 21 insertions(+), 76 deletions(-) + +commit 65ac2dae4f284f563b2dc476a21e2b5a48124de8 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 20 15:12:49 2014 -0400 + + [indic-table] Speed up lookup + + src/gen-indic-table.py | 22 +++++++++--- + src/hb-ot-shape-complex-indic-table.cc | 61 + +++++++++++++++++++++++----------- + 2 files changed, 59 insertions(+), 24 deletions(-) + +commit 64442a3f4c5c7be08893454742cad6bfe73cb8d7 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 20 14:58:53 2014 -0400 + + [indic-table] Fix compiler warning + + src/gen-indic-table.py | 4 +--- + src/hb-ot-shape-complex-indic-table.cc | 4 +--- + 2 files changed, 2 insertions(+), 6 deletions(-) + +commit 0436e1d50527497ebe5053b51a34ce6590276249 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 20 14:56:22 2014 -0400 + + [indic-table] Make table more compact by not covering full blocks + + -#define indic_offset_total 4416 + +#define indic_offset_total 3816 + + -}; /* Table occupancy: 60% */ + +}; /* Table occupancy: 69% */ + + src/gen-indic-table.py | 24 ++++-- + src/hb-ot-shape-complex-indic-table.cc | 150 + +++++++++------------------------ + 2 files changed, 57 insertions(+), 117 deletions(-) + +commit 190a251479b3cfc68871ff1daf9a9d1abe3f86e6 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 20 14:41:39 2014 -0400 + + [indic-table] Remove block range from data table + + No functional change. + + src/gen-indic-table.py | 4 +- + src/hb-ot-shape-complex-indic-table.cc | 102 + ++++++++++++++++----------------- + 2 files changed, 54 insertions(+), 52 deletions(-) + +commit 2b051c6057920c564c13c5d6a3e6dca93446fa12 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 20 14:09:57 2014 -0400 + + Rename HB_VERSION_CHECK and hb_version_check to "atleast" + + HB_VERSION_CHECK's comparison was originally written wrongly + by mistake. When API tests were written, they were also written + wrongly to pass given the wrong implementation... Sigh. + + Given the purpose of this API, there's no point in fixing it + without renaming it. As such, rename. + + API changes: + + HB_VERSION_CHECK -> HB_VERSION_ATLEAST + hb_version_check -> hb_version_atleast + + docs/reference/harfbuzz-sections.txt | 4 ++-- + src/hb-common.cc | 10 +++++----- + src/hb-version.h.in | 10 +++++----- + test/api/test-version.c | 29 +++++++++++++++-------------- + 4 files changed, 27 insertions(+), 26 deletions(-) + +commit cabfa538ed4b1355326fa8de05f7209dda1c1c7a +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 20 13:51:21 2014 -0400 + + Adjust unused doc symbols + + docs/reference/harfbuzz-sections.txt | 19 +++++++++++++++++-- + src/hb-ot-shape.h | 21 ++++++++++----------- + 2 files changed, 27 insertions(+), 13 deletions(-) + +commit da132937989acb4d8ca9bd41c79f98750e7dda30 +Author: Jonathan Kew <jfkthame@gmail.com> +Date: Sun Apr 27 14:05:24 2014 +0100 + + Rework handling of requiredFeature to solve problem with rlig in + arial.ttf from winxp + + https://bugzilla.mozilla.org/show_bug.cgi?id=986802 + Fixes https://github.com/behdad/harfbuzz/pull/39 + + API Change: + + -hb_ot_layout_language_get_required_feature_index + +hb_ot_layout_language_get_required_feature + + New API takes an extra pointer argument. Pass NULL in to get + behavior of previous API. + + Reworked by behdad + + src/hb-ot-layout-gsubgpos-private.hh | 4 +-- + src/hb-ot-layout.cc | 29 ++++++++++++--------- + src/hb-ot-layout.h | 11 ++++---- + src/hb-ot-map.cc | 50 + ++++++++++++++++++++++++++---------- + src/main.cc | 4 +-- + 5 files changed, 64 insertions(+), 34 deletions(-) + +commit df554af99db390e42d378983bb3fcf583477a1d7 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jun 19 15:39:18 2014 -0400 + + Rename search() to bsearch() and lsearch() + + Such that the complexity of the algorithm used is clear at + call site. + + src/hb-open-type-private.hh | 4 ++-- + src/hb-ot-cmap-table.hh | 14 +++++++------- + src/hb-ot-layout-common-private.hh | 9 +++++---- + 3 files changed, 14 insertions(+), 13 deletions(-) + +commit fb8cc86ff99c08064ac58a559bb66cc340693b92 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jun 19 15:30:18 2014 -0400 + + Rename sort() to qsort() + + In an effort to make the algorithm used clear. + + src/hb-coretext.cc | 4 ++-- + src/hb-ot-map.cc | 4 ++-- + src/hb-private.hh | 8 ++++---- + src/hb-uniscribe.cc | 4 ++-- + 4 files changed, 10 insertions(+), 10 deletions(-) + +commit 577ca4814314c374824cac736996b9cdd4f9d11f +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jun 18 12:29:23 2014 -0400 + + [unicode7] Update list of Default_Ignorable codepoints + + src/hb-unicode-private.hh | 66 + +++++++++++++++++++++-------------------------- + 1 file changed, 30 insertions(+), 36 deletions(-) + +commit 7cfee3827636f0dff7df5c8975a4fadd1b4bfbd5 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Apr 28 15:09:30 2014 -0700 + + [unicode7] Route Manichaean and Psalter Pahlavi through Arabic shaper + + Still needs update to joining table to fully work. + + src/hb-ot-shape-complex-private.hh | 4 ++++ + 1 file changed, 4 insertions(+) + +commit a4a7899cd93fb9d1bc2163a4bbabfa733ee5bd52 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Apr 28 15:06:42 2014 -0700 + + [unicode7] Mark right-to-left scripts + + src/hb-common.cc | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 62587bfc5178a447ef66d88eab7412a7efe84692 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Apr 28 15:07:21 2014 -0700 + + [unicode7] Declare Unicode 7 scripts + + src/hb-common.h | 21 +++++++++------------ + 1 file changed, 9 insertions(+), 12 deletions(-) + +commit dc61294aa93d36d0c5d187d4a692560a7cb46444 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Apr 28 14:58:28 2014 -0700 + + [unicode7] Add missing ISO 15924 tags + + src/hb-common.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 7526373e70bc4c2e2072da36babf9399fcf483b8 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Jun 17 11:45:26 2014 -0400 + + [coretext] Remove unused var + + src/hb-coretext.cc | 2 -- + 1 file changed, 2 deletions(-) + +commit 798e4185bc71b1a63528e6b0af236d4c964ec607 +Author: Jonathan Kew <jfkthame@gmail.com> +Date: Tue Jun 10 13:10:30 2014 +0100 + + When zeroing mark widths for LTR, also adjust offset... + + ...so that they overstrike preceding glyph. + + https://github.com/behdad/harfbuzz/pull/43 + + src/hb-ot-shape.cc | 50 + +++++++++++++++++++++++++++++++++++++++----------- + 1 file changed, 39 insertions(+), 11 deletions(-) + +commit 80f7405a5208f88b8615aa4ce4c54ffeb16f04f8 +Author: Jonathan Kew <jfkthame@gmail.com> +Date: Tue Jun 10 13:10:02 2014 +0100 + + [Thai] set the correct general category on Nikhahit when decomposing + Sara-Am. + + src/hb-ot-shape-complex-thai.cc | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 1d634cbb4b0338e1c2841127a72c5fac3a2a5ca1 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 6 17:55:02 2014 -0400 + + Fix base-position when 'pref' is NOT formed + + If pre-base reordering Ra is NOT formed (or formed and then + broken up), we should consider that Ra as base. This is + observable when there's a left matra or dotreph that positions + before base. + + Now, it might be that we shouldn't do this if the Ra happend + to form a below form. We can't quite deduce that right now... + + Micro test added. Also at: + + https://code.google.com/a/google.com/p/noto-alpha/issues/detail?id=186#c29 + + src/hb-ot-shape-complex-indic.cc | 28 + +++++++++++++++++++-- + test/shaping/fonts/sha1sum/MANIFEST | 5 ++++ + .../e207635780b42f898d58654b65098763e340f5c7.ttf | Bin 0 -> 3000 bytes + test/shaping/tests/indic-pref-blocking.tests | 3 ++- + 4 files changed, 33 insertions(+), 3 deletions(-) + +commit 04dc52fa15f5b7f9eb5f448ea43e7ef1b2269e88 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 6 17:28:38 2014 -0400 + + [indic] Recover OT_H undergone ligation and multiplication + + Sometimes font designers form half/pref/etc consonant forms + unconditionally and then undo that conditionally. Try to + recover the OT_H classification in those cases. + + No test number changes expected. + + src/hb-ot-layout-private.hh | 8 ++++++++ + src/hb-ot-shape-complex-indic.cc | 21 +++++++++++++++++++++ + 2 files changed, 29 insertions(+) + +commit 39c8201f8e361e8c0f23f07bf20124ccadc6086c +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 6 17:19:35 2014 -0400 + + [indic] Improve base re-finding + + No test numbers change. + + src/hb-ot-shape-complex-indic.cc | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit c04d5f0dd24d0ed9560fb9aebb5561ce946743c3 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 6 17:02:39 2014 -0400 + + [indic] Minor + + src/hb-ot-shape-complex-indic.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 824d00dce483d0f4030c0cac253f994810e10f32 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Jun 9 14:17:33 2014 -0400 + + Fix commit 3f38c1137b6219a646da141b08463ffa922d4e35 + + Previous commit was not compiling with clang. + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3f38c1137b6219a646da141b08463ffa922d4e35 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jun 6 16:03:40 2014 -0400 + + Don't use -mstructure-size-boundary=8 on clang arm + + As in building for Android / iPhone. Only set it if + struct{char} alignment is not 1. + + NOT tested on an actual Arm architecture. Guess we'll know + when this makes it to people's build bots. + + configure.ac | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit 0ff74b09d2ccf7a9ea0f0b463d8b6d819c86c837 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jun 5 21:55:23 2014 -0400 + + Add missing test file. Oops + + test/shaping/tests/indic-pref-blocking.tests | 1 + + 1 file changed, 1 insertion(+) + +commit 832a6f99b34f334b1e82b8e3a7ad137e823d203c +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jun 4 16:57:42 2014 -0400 + + [indic] Don't reorder reph/pref if ligature was expanded + + Normally if you want to, say, conditionally prevent a 'pref', you + would use blocking contextual matching. Some designers instead + form the 'pref' form, then undo it in context. To detect that + we now also remember glyphs that went through MultipleSubst. + + In the only place that this is used, Uniscribe seems to only care + about the "last" transformation between Ligature and Multiple + substitions. Ie. if you ligate, expand, and ligate again, it + moves the pref, but if you ligate and expand it doesn't. That's + why we clear the MULTIPLIED bit when setting LIGATED. + + Micro-test added. Test: U+0D2F,0D4D,0D30 with font from: + + [1] + https://code.google.com/a/google.com/p/noto-alpha/issues/detail?id=186#c29 + + src/hb-ot-layout-gsub-table.hh | 2 +- + src/hb-ot-layout-gsubgpos-private.hh | 20 + ++++++++++++++++---- + src/hb-ot-layout-private.hh | 16 + +++++++++++++++- + src/hb-ot-shape-complex-indic.cc | 4 ++-- + test/shaping/Makefile.am | 5 ++++- + .../226bc2deab3846f1a682085f70c67d0421014144.ttf | Bin 0 -> 2828 bytes + test/shaping/tests/MANIFEST | 1 + + 7 files changed, 39 insertions(+), 9 deletions(-) + +commit b5be2317201774c84470167767ad83c8637cad5b +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jun 5 19:00:22 2014 -0400 + + [gsub] Adjust single-length ligature subst to act like single subst + + src/hb-ot-layout-gsub-table.hh | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit aae69451dfbf2e3671c555c234f788c194302818 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jun 5 18:54:44 2014 -0400 + + [gsub] Minor shuffling + + src/hb-ot-layout-gsub-table.hh | 29 ++++++++++++++++------------- + 1 file changed, 16 insertions(+), 13 deletions(-) + +commit b6b304f12be917b7449b3ac9409069fcd4a27d95 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jun 5 17:12:54 2014 -0400 + + [ot] Add TODO re zero-len MultipleSubst sequences + + src/hb-ot-layout-gsub-table.hh | 9 +++++++++ + src/hb-ot-layout-gsubgpos-private.hh | 4 +++- + 2 files changed, 12 insertions(+), 1 deletion(-) + +commit f1a72fe7bf863535ec09b559cc0bd878fd0799f2 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jun 4 19:00:29 2014 -0400 + + [ot-font] Fix cmap EncodingRecord cmp order + + src/hb-ot-cmap-table.hh | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +commit ce34f0b07e5324ed52e6e2c43000c2b09ee010d4 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jun 4 18:57:46 2014 -0400 + + [ot-font] Use binary search for format12 cmap subtable + + src/hb-open-type-private.hh | 4 ++++ + src/hb-ot-cmap-table.hh | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +commit 257d1adfa1b3422c511c55e641840a6e31ec6008 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jun 4 18:47:55 2014 -0400 + + [ot-font] Work around broken cmap subtable format 4 length + + Roboto was hitting this. FreeType also has pretty much the + same code for this, in ttcmap.c:tt_cmap4_validate(): + + /* in certain fonts, the `length' field is invalid and goes */ + /* out of bound. We try to correct this here... */ + if ( table + length > valid->limit ) + { + if ( valid->level >= FT_VALIDATE_TIGHT ) + FT_INVALID_TOO_SHORT; + + length = (FT_UInt)( valid->limit - table ); + } + + src/hb-ot-cmap-table.hh | 22 ++++++++++++++++++---- + 1 file changed, 18 insertions(+), 4 deletions(-) + +commit 51f563579b94e1ee23ced9bbcc7dd3341535ce72 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jun 4 18:42:32 2014 -0400 + + Move try_set to sanitize context + + src/hb-open-type-private.hh | 22 ++++++++++------------ + src/hb-ot-layout-common-private.hh | 2 +- + 2 files changed, 11 insertions(+), 13 deletions(-) + +commit 500737e8e16dce5248aff394899bb3761a9c3bbf +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jun 4 18:17:29 2014 -0400 + + [ot-font] Don't select a Null cmap subtable + + Can happen either in broken fonts, or as a result of sanitize(). + + src/hb-ot-cmap-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dac86026a6bae5a8a03cfe885bf93f32e5f48614 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Jun 3 17:57:00 2014 -0400 + + Fix some cppcheck warnings + + Bug 77800 - cppcheck reports + + src/hb-common.cc | 4 +++- + src/hb-ot-layout-common-private.hh | 2 +- + src/hb-private.hh | 2 +- + src/hb-shape-plan.cc | 4 ++-- + 4 files changed, 7 insertions(+), 5 deletions(-) + +commit c306410cab368a27c1941a2625d3b475edeaac04 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Jun 3 16:59:41 2014 -0400 + + Bug 77732 - Fix unused typedef warning for ASSERT_STATIC with GCC 4.8 + + src/hb-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ae2b854eab7f1c48e56751c987a714c2c18d6eb6 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Jun 3 16:59:09 2014 -0400 + + Move code around + + src/hb-private.hh | 134 + ++++++++++++++++++++++++++---------------------------- + 1 file changed, 65 insertions(+), 69 deletions(-) + +commit 17c3b809f42aec34d83dba2e6229ad85804bebae +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Jun 2 15:08:18 2014 -0400 + + [indic] Treat U+A8E0..A8F1 as OT_A instead of OT_VD + + Apparently they can intermix with other OT_A. + + Test: U+0915,A8E2,1CD0 + + src/hb-ot-shape-complex-indic.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6ae13f257c3986517c097fa666ab9f58bdc918b5 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri May 30 17:38:14 2014 -0400 + + [graphite2] Fix cluster mapping + + Patch from Martin Hosken. I expect this to fix the following bugs: + + https://bugs.freedesktop.org/show_bug.cgi?id=75076 + https://bugzilla.gnome.org/show_bug.cgi?id=723582 + https://bugzilla.redhat.com/show_bug.cgi?id=998812 + + src/hb-graphite2.cc | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + commit 5875ad9c467b39d00ad4d98fd425179c701e6fd0 Author: Behdad Esfahbod <behdad@behdad.org> Date: Thu May 29 15:48:16 2014 -0400 diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/Makefile.am index fa8711403d5..fa8711403d5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/Makefile.am +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/Makefile.am diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/NEWS b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/NEWS index b7ac4151a02..bddf4578dbb 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/NEWS +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/NEWS @@ -1,3 +1,19 @@ +Overview of changes leading to 0.9.30 +Wednesday, July 9, 2014 +===================================== +- Update to Unicode 7.0.0: + * New scripts Manichaean and Psalter Pahlavi are shaped using + Arabic shaper. + * All the other new scripts to through the generic shaper for + now. +- Minor Indic improvements. +- Fix graphite2 backend cluster mapping [crasher!] +- API changes: + * New HB_SCRIPT_* values for Unicode 7.0 scripts. + * New function hb_ot_layout_language_get_required_feature(). +- Build fixes. + + Overview of changes leading to 0.9.29 Thursday, May 29, 2014 ===================================== @@ -10,6 +26,7 @@ Thursday, May 29, 2014 * Allow digits and a some punctuation as consonant placeholders. - Build fixes. + Overview of changes leading to 0.9.28 Monday, April 28, 2014 ===================================== diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/README b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/README index 74e739da52a..74e739da52a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/README +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/README diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/THANKS b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/THANKS index 940cfde5c39..940cfde5c39 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/THANKS +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/THANKS diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/TODO b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/TODO index e1aa39c4c01..e1aa39c4c01 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/TODO +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/TODO diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/autogen.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/autogen.sh index a267f297b06..a267f297b06 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/autogen.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/autogen.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/config.h.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/config.h.in index 352a8d24882..491e7f428ef 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/config.h.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/config.h.in @@ -1,5 +1,8 @@ /* config.h.in. Generated from configure.ac by autoheader. */ +/* The normal alignment of `struct{char;}', in bytes. */ +#undef ALIGNOF_STRUCT_CHAR__ + /* Define to 1 if you have the `atexit' function. */ #undef HAVE_ATEXIT diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/configure.ac index d2036ec9920..085d4b5fb69 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/configure.ac +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ([2.64]) AC_INIT([HarfBuzz], - [0.9.29], + [0.9.30], [http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz], [harfbuzz], [http://harfbuzz.org/]) @@ -72,6 +72,7 @@ AC_CHECK_HEADERS(unistd.h sys/mman.h) # Compiler flags AC_CANONICAL_HOST +AC_CHECK_ALIGNOF([struct{char;}]) if test "x$GCC" = "xyes"; then # Make symbols link locally @@ -94,8 +95,10 @@ if test "x$GCC" = "xyes"; then case "$host" in arm-*-*) - # Request byte alignment on arm - CXXFLAGS="$CXXFLAGS -mstructure-size-boundary=8" + if test "x$ac_cv_alignof_struct_char__" != x1; then + # Request byte alignment + CXXFLAGS="$CXXFLAGS -mstructure-size-boundary=8" + fi ;; esac fi diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/gtk-doc.make b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/gtk-doc.make index 104c3993f3e..104c3993f3e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/gtk-doc.make +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/gtk-doc.make diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/harfbuzz.doap b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/harfbuzz.doap index d2896ebefa8..d2896ebefa8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/harfbuzz.doap +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/harfbuzz.doap diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/Makefile.am index f670e2723d8..5832f7579a7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/Makefile.am +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/Makefile.am @@ -281,7 +281,7 @@ indic-table: gen-indic-table.py IndicSyllabicCategory.txt IndicMatraCategory.txt mv hb-ot-shape-complex-indic-table.cc.tmp $(srcdir)/hb-ot-shape-complex-indic-table.cc || \ ($(RM) hb-ot-shape-complex-indic-table.cc.tmp; false) -arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt +arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-arabic-table.hh.tmp && \ mv hb-ot-shape-complex-arabic-table.hh.tmp $(srcdir)/hb-ot-shape-complex-arabic-table.hh || \ ($(RM) hb-ot-shape-complex-arabic-table.hh.tmp; false) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-c-linkage-decls.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-c-linkage-decls.sh index b10310f5384..b10310f5384 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-c-linkage-decls.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-c-linkage-decls.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-defs.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-defs.sh index 357347f543a..357347f543a 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-defs.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-defs.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-header-guards.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-header-guards.sh index 9a3302c7f87..9a3302c7f87 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-header-guards.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-header-guards.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-includes.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-includes.sh index 5643c6973bc..5643c6973bc 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-includes.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-includes.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-libstdc++.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-libstdc++.sh index e7e0e295e1a..e7e0e295e1a 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-libstdc++.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-libstdc++.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-static-inits.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-static-inits.sh index 83d02c8a9bf..83d02c8a9bf 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-static-inits.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-static-inits.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-symbols.sh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-symbols.sh index e000b01b863..e000b01b863 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/check-symbols.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/check-symbols.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/gen-arabic-table.py b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/gen-arabic-table.py index da5a4fcbf5c..c4847081027 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/gen-arabic-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/gen-arabic-table.py @@ -3,34 +3,48 @@ import sys import os.path -if len (sys.argv) != 3: - print >>sys.stderr, "usage: ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt" +if len (sys.argv) != 4: + print >>sys.stderr, "usage: ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt" sys.exit (1) files = [file (x) for x in sys.argv[1:]] -headers = [[files[0].readline (), files[0].readline ()]] +headers = [[files[0].readline (), files[0].readline ()], [files[2].readline (), files[2].readline ()]] headers.append (["UnicodeData.txt does not have a header."]) while files[0].readline ().find ('##################') < 0: pass +blocks = {} +def read_blocks(f): + global blocks + for line in f: -def print_joining_table(f): + j = line.find ('#') + if j >= 0: + line = line[:j] - print - print "static const uint8_t joining_table[] =" - print "{" + fields = [x.strip () for x in line.split (';')] + if len (fields) == 1: + continue + + uu = fields[0].split ('..') + start = int (uu[0], 16) + if len (uu) == 1: + end = start + else: + end = int (uu[1], 16) + + t = fields[1] + + for u in range (start, end + 1): + blocks[u] = t + +def print_joining_table(f): - min_u = 0x110000 - max_u = 0 - num = 0 - last = -1 - block = '' + values = {} for line in f: if line[0] == '#': - if line.find (" characters"): - block = line[2:].strip () continue fields = [x.strip () for x in line.split (';')] @@ -38,43 +52,100 @@ def print_joining_table(f): continue u = int (fields[0], 16) - if u == 0x200C or u == 0x200D: - continue - if u < last: - raise Exception ("Input data character not sorted", u) - min_u = min (min_u, u) - max_u = max (max_u, u) - num += 1 - - if block: - print "\n /* %s */\n" % block - block = '' - - if last != -1: - last += 1 - while last < u: - print " JOINING_TYPE_X, /* %04X */" % last - last += 1 - else: - last = u if fields[3] in ["ALAPH", "DALATH RISH"]: value = "JOINING_GROUP_" + fields[3].replace(' ', '_') else: value = "JOINING_TYPE_" + fields[2] - print " %s, /* %s */" % (value, '; '.join(fields)) + values[u] = value + + short_value = {} + for value in set([v for v in values.values()] + ['JOINING_TYPE_X']): + short = ''.join(x[0] for x in value.split('_')[2:]) + assert short not in short_value.values() + short_value[value] = short print - print "};" + for value,short in short_value.items(): + print "#define %s %s" % (short, value) + + uu = sorted(values.keys()) + num = len(values) + all_blocks = set([blocks[u] for u in uu]) + + last = -100000 + ranges = [] + for u in uu: + if u - last <= 1+16*5: + ranges[-1][-1] = u + else: + ranges.append([u,u]) + last = u + print - print "#define JOINING_TABLE_FIRST 0x%04X" % min_u - print "#define JOINING_TABLE_LAST 0x%04X" % max_u + print "static const uint8_t joining_table[] =" + print "{" + last_block = None + offset = 0 + for start,end in ranges: + + print + print "#define joining_offset_0x%04x %d" % (start, offset) + + for u in range(start, end+1): + + block = blocks.get(u, last_block) + value = values.get(u, "JOINING_TYPE_X") + + if block != last_block or u == start: + if u != start: + print + if block in all_blocks: + print "\n /* %s */" % block + else: + print "\n /* FILLER */" + last_block = block + if u % 32 != 0: + print + print " /* %04X */" % (u//32*32), " " * (u % 32), + + if u % 32 == 0: + print + print " /* %04X */ " % u, + sys.stdout.write("%s," % short_value[value]) + print + + offset += end - start + 1 + print + occupancy = num * 100. / offset + print "}; /* Table items: %d; occupancy: %d%% */" % (offset, occupancy) print - occupancy = num * 100 / (max_u - min_u + 1) - # Maintain at least 40% occupancy in the table */ - if occupancy < 40: - raise Exception ("Table too sparse, please investigate: ", occupancy) + page_bits = 12; + print + print "static unsigned int" + print "joining_type (hb_codepoint_t u)" + print "{" + print " switch (u >> %d)" % page_bits + print " {" + pages = set([u>>page_bits for u in [s for s,e in ranges]+[e for s,e in ranges]]) + for p in sorted(pages): + print " case 0x%0X:" % p + for (start,end) in ranges: + if p not in [start>>page_bits, end>>page_bits]: continue + offset = "joining_offset_0x%04x" % start + print " if (0x%04X <= u && u <= 0x%04X) return joining_table[u - 0x%04X + %s];" % (start, end, start, offset) + print " break;" + print "" + print " default:" + print " break;" + print " }" + print " return X;" + print "}" + print + for value,short in short_value.items(): + print "#undef %s" % (short) + print def print_shaping_table(f): @@ -174,7 +245,7 @@ print "/* == Start of generated table == */" print "/*" print " * The following table is generated by running:" print " *" -print " * ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt" +print " * ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt" print " *" print " * on files with these headers:" print " *" @@ -187,6 +258,7 @@ print "#ifndef HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH" print "#define HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH" print +read_blocks (files[2]) print_joining_table (files[0]) print_shaping_table (files[1]) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/gen-indic-table.py b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/gen-indic-table.py index 9ed3fd6d34d..c63fe23c36a 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/gen-indic-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/gen-indic-table.py @@ -6,11 +6,12 @@ if len (sys.argv) != 4: print >>sys.stderr, "usage: ./gen-indic-table.py IndicSyllabicCategory.txt IndicMatraCategory.txt Blocks.txt" sys.exit (1) +BLACKLISTED_BLOCKS = ["Thai", "Lao", "Tibetan"] + files = [file (x) for x in sys.argv[1:]] headers = [[f.readline () for i in range (2)] for f in files] -blocks = {} data = [{} for f in files] values = [{} for f in files] for i, f in enumerate (files): @@ -35,10 +36,7 @@ for i, f in enumerate (files): for u in range (start, end + 1): data[i][u] = t - values[i][t] = values[i].get (t, 0) + 1 - - if i == 2: - blocks[t] = (start, end) + values[i][t] = values[i].get (t, 0) + end - start + 1 # Merge data into one dict: defaults = ('Other', 'Not_Applicable', 'No_Block') @@ -52,10 +50,15 @@ for i,d in enumerate (data): if not u in combined: combined[u] = list (defaults) combined[u][i] = v +combined = {k:v for k,v in combined.items() if v[2] not in BLACKLISTED_BLOCKS} data = combined del combined num = len (data) +for u in [0x17CD, 0x17CE, 0x17CF, 0x17D0, 0x17D3]: + if data[u][0] == 'Other': + data[u][0] = "Vowel_Dependent" + # Move the outliers NO-BREAK SPACE and DOTTED CIRCLE out singles = {} for u in [0x00A0, 0x25CC]: @@ -81,6 +84,10 @@ print # Shorten values short = [{ "Bindu": 'Bi', + "Cantillation_Mark": 'Ca', + "Joiner": 'ZWJ', + "Non_Joiner": 'ZWNJ', + "Number": 'Nd', "Visarga": 'Vs', "Vowel": 'Vo', "Vowel_Dependent": 'M', @@ -88,14 +95,14 @@ short = [{ },{ "Not_Applicable": 'x', }] -all_shorts = [[],[]] +all_shorts = [{},{}] # Add some of the values, to make them more readable, and to avoid duplicates for i in range (2): for v,s in short[i].items (): - all_shorts[i].append (s) + all_shorts[i][s] = v what = ["INDIC_SYLLABIC_CATEGORY", "INDIC_MATRA_CATEGORY"] what_short = ["ISC", "IMC"] @@ -110,8 +117,8 @@ for i in range (2): else: s = ''.join ([c for c in v_no_and if ord ('A') <= ord (c) <= ord ('Z')]) if s in all_shorts[i]: - raise Exception ("Duplicate short value alias", v, s) - all_shorts[i].append (s) + raise Exception ("Duplicate short value alias", v, all_shorts[i][s]) + all_shorts[i][s] = v short[i][v] = s print "#define %s_%s %s_%s %s/* %3d chars; %s */" % \ (what_short[i], s, what[i], v.upper (), \ @@ -124,11 +131,16 @@ print total = 0 used = 0 +last_block = None def print_block (block, start, end, data): - print - print - print " /* %s (%04X..%04X) */" % (block, start, end) + global total, used, last_block + if block and block != last_block: + print + print + print " /* %s */" % block num = 0 + assert start % 8 == 0 + assert (end+1) % 8 == 0 for u in range (start, end+1): if u % 8 == 0: print @@ -138,14 +150,15 @@ def print_block (block, start, end, data): d = data.get (u, defaults) sys.stdout.write ("%9s" % ("_(%s,%s)," % (short[0][d[0]], short[1][d[1]]))) - global total, used total += end - start + 1 used += num + if block: + last_block = block uu = data.keys () uu.sort () -last = -1 +last = -100000 num = 0 offset = 0 starts = [] @@ -155,11 +168,16 @@ for u in uu: if u <= last: continue block = data[u][2] - (start, end) = blocks[block] + + start = u//8*8 + end = start+1 + while end in uu and block == data[end][2]: + end += 1 + end = (end-1)//8*8 + 7 if start != last + 1: - if start - last <= 33: - print_block ("FILLER", last+1, start-1, data) + if start - last <= 1+16*3: + print_block (None, last+1, start-1, data) last = start-1 else: if last >= 0: @@ -176,19 +194,30 @@ ends.append (last + 1) offset += ends[-1] - starts[-1] print print -print "#define indic_offset_total %d" % offset -print occupancy = used * 100. / total -print "}; /* Table occupancy: %d%% */" % occupancy +page_bits = 12 +print "}; /* Table items: %d; occupancy: %d%% */" % (offset, occupancy) print print "INDIC_TABLE_ELEMENT_TYPE" print "hb_indic_get_categories (hb_codepoint_t u)" print "{" -for (start,end) in zip (starts, ends): - offset = "indic_offset_0x%04x" % start - print " if (0x%04X <= u && u <= 0x%04X) return indic_table[u - 0x%04X + %s];" % (start, end, start, offset) -for u,d in singles.items (): - print " if (unlikely (u == 0x%04X)) return _(%s,%s);" % (u, short[0][d[0]], short[1][d[1]]) +print " switch (u >> %d)" % page_bits +print " {" +pages = set([u>>page_bits for u in starts+ends+singles.keys()]) +for p in sorted(pages): + print " case 0x%0X:" % p + for (start,end) in zip (starts, ends): + if p not in [start>>page_bits, end>>page_bits]: continue + offset = "indic_offset_0x%04x" % start + print " if (0x%04X <= u && u <= 0x%04X) return indic_table[u - 0x%04X + %s];" % (start, end, start, offset) + for u,d in singles.items (): + if p != u>>page_bits: continue + print " if (unlikely (u == 0x%04X)) return _(%s,%s);" % (u, short[0][d[0]], short[1][d[1]]) + print " break;" + print "" +print " default:" +print " break;" +print " }" print " return _(x,x);" print "}" print diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/harfbuzz-gobject.pc.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/harfbuzz-gobject.pc.in index 70083601901..70083601901 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/harfbuzz-gobject.pc.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/harfbuzz-gobject.pc.in diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/harfbuzz-icu.pc.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/harfbuzz-icu.pc.in index 949869a3563..949869a3563 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/harfbuzz-icu.pc.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/harfbuzz-icu.pc.in diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/harfbuzz.pc.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/harfbuzz.pc.in index 7f27bbbdef0..7f27bbbdef0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/harfbuzz.pc.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/harfbuzz.pc.in diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-atomic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-atomic-private.hh index 60cbcf91be1..60cbcf91be1 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-atomic-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-atomic-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-blob.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-blob.cc index d6acca0fca5..b82b4b2a3a3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-blob.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-blob.cc @@ -25,7 +25,9 @@ */ /* http://www.oracle.com/technetwork/articles/servers-storage-dev/standardheaderfiles-453865.html */ +#ifndef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 199309L +#endif #include "hb-private.hh" diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-blob.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-blob.h index b2419abfd2a..b2419abfd2a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-blob.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-blob.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-deserialize-json.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-deserialize-json.hh index dead700db82..dead700db82 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-deserialize-json.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-deserialize-json.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-deserialize-json.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-deserialize-json.rl index 7351b2ab47c..7351b2ab47c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-deserialize-json.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-deserialize-json.rl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-deserialize-text.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-deserialize-text.hh index a38efe3a415..a38efe3a415 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-deserialize-text.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-deserialize-text.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-deserialize-text.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-deserialize-text.rl index 8856580fbe3..8856580fbe3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-deserialize-text.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-deserialize-text.rl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-private.hh index 3a2b9ab4816..3a2b9ab4816 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-serialize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-serialize.cc index 263bc81dc46..263bc81dc46 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer-serialize.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer-serialize.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer.cc index 76bb10c0c85..76bb10c0c85 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer.h index 3086851b012..3086851b012 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-buffer.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-buffer.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-cache-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-cache-private.hh index 19b70b7e395..19b70b7e395 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-cache-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-cache-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-common.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-common.cc index 96725c4e137..da5f4f70215 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-common.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-common.cc @@ -299,9 +299,11 @@ hb_language_from_string (const char *str, int len) if (len >= 0) { + /* NUL-terminate it. */ len = MIN (len, (int) sizeof (strbuf) - 1); - str = (char *) memcpy (strbuf, str, len); + memcpy (strbuf, str, len); strbuf[len] = '\0'; + str = strbuf; } hb_language_item_t *item = lang_find_or_insert (str); @@ -482,6 +484,14 @@ hb_script_get_horizontal_direction (hb_script_t script) case HB_SCRIPT_MEROITIC_CURSIVE: case HB_SCRIPT_MEROITIC_HIEROGLYPHS: + /* Unicode-7.0 additions */ + case HB_SCRIPT_MANICHAEAN: + case HB_SCRIPT_MENDE_KIKAKUI: + case HB_SCRIPT_NABATAEAN: + case HB_SCRIPT_OLD_NORTH_ARABIAN: + case HB_SCRIPT_PALMYRENE: + case HB_SCRIPT_PSALTER_PAHLAVI: + return HB_DIRECTION_RTL; } @@ -559,7 +569,7 @@ hb_version_string (void) } /** - * hb_version_check: + * hb_version_atleast: * @major: * @minor: * @micro: @@ -571,9 +581,9 @@ hb_version_string (void) * Since: 1.0 **/ hb_bool_t -hb_version_check (unsigned int major, - unsigned int minor, - unsigned int micro) +hb_version_atleast (unsigned int major, + unsigned int minor, + unsigned int micro) { - return HB_VERSION_CHECK (major, minor, micro); + return HB_VERSION_ATLEAST (major, minor, micro); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-common.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-common.h index c8bfd8825a2..b24cbb33ba7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-common.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-common.h @@ -270,17 +270,6 @@ typedef enum /*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, - - /* Dummy value to ensure any hb_tag_t value can be passed/stored as hb_script_t - * without risking undefined behavior. */ - /*---*/ _HB_SCRIPT_MAX_VALUE = HB_TAG_MAX - -} 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'), @@ -292,19 +281,27 @@ typedef enum /*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_MODI = HB_TAG ('M','o','d','i'), /*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_PAU_CIN_HAU = HB_TAG ('P','a','u','c'), /*7.0*/ HB_SCRIPT_PSALTER_PAHLAVI = HB_TAG ('P','h','l','p'), - /*7.0*/ HB_SCRIPT_SIDDHAM = ??? + /*7.0*/ HB_SCRIPT_SIDDHAM = HB_TAG ('S','i','d','d'), /*7.0*/ HB_SCRIPT_TIRHUTA = HB_TAG ('T','i','r','h'), /*7.0*/ HB_SCRIPT_WARANG_CITI = HB_TAG ('W','a','r','a'), -#endif + + /* No script set. */ + /*---*/ HB_SCRIPT_INVALID = HB_TAG_NONE, + + /* Dummy value to ensure any hb_tag_t value can be passed/stored as hb_script_t + * without risking undefined behavior. */ + /*---*/ _HB_SCRIPT_MAX_VALUE = HB_TAG_MAX + +} hb_script_t; /* Script functions */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-coretext.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-coretext.cc index 570513667da..864e9e7c094 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-coretext.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-coretext.cc @@ -477,7 +477,7 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, event->start = false; event->feature = feature; } - feature_events.sort (); + feature_events.qsort (); /* Add a strategic final event. */ { active_feature_t feature; @@ -507,14 +507,12 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, 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 (); */ + /* active_features.qsort (); */ for (unsigned int j = 0; j < active_features.len; j++) { CFStringRef keys[2] = { diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-coretext.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-coretext.h index 25267bc9784..25267bc9784 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-coretext.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-coretext.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-deprecated.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-deprecated.h index 30ae4b1caf7..30ae4b1caf7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-deprecated.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-deprecated.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-face-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-face-private.hh index 6520d3dbdff..6520d3dbdff 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-face-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-face-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-face.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-face.cc index 71cf49a5bc9..71cf49a5bc9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-face.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-face.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-face.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-face.h index f682c468de5..f682c468de5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-face.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-face.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-fallback-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-fallback-shape.cc index ea54bb8e0f0..ea54bb8e0f0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-fallback-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-fallback-shape.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-font-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-font-private.hh index 33bbf7143a2..33bbf7143a2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-font-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-font-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-font.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-font.cc index fc4c8ebf077..fc4c8ebf077 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-font.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-font.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-font.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-font.h index 7273db43eda..7273db43eda 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-font.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-font.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ft.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ft.cc index 44e0b0bc2a5..44e0b0bc2a5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ft.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ft.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ft.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ft.h index 696251e143f..696251e143f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ft.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ft.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-glib.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-glib.cc index af43cab7113..af43cab7113 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-glib.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-glib.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-glib.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-glib.h index 63a9d3366c5..63a9d3366c5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-glib.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-glib.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-gobject-enums.cc.tmpl b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-gobject-enums.cc.tmpl index ca458a3846c..ca458a3846c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-gobject-enums.cc.tmpl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-gobject-enums.cc.tmpl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-gobject-enums.h.tmpl b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-gobject-enums.h.tmpl index 6ecda06c2a6..6ecda06c2a6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-gobject-enums.h.tmpl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-gobject-enums.h.tmpl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-gobject-structs.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-gobject-structs.cc index 2451b66291b..2451b66291b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-gobject-structs.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-gobject-structs.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-gobject-structs.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-gobject-structs.h index 4a88d569e8d..4a88d569e8d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-gobject-structs.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-gobject-structs.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-gobject.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-gobject.h index ea1bd25df82..ea1bd25df82 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-gobject.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-gobject.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-graphite2.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-graphite2.cc index a309ca853bc..709aa94419c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-graphite2.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-graphite2.cc @@ -209,6 +209,7 @@ struct hb_graphite2_cluster_t { unsigned int num_chars; unsigned int base_glyph; unsigned int num_glyphs; + unsigned int cluster; }; hb_bool_t @@ -299,6 +300,7 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, memset (clusters, 0, sizeof (clusters[0]) * buffer->len); hb_codepoint_t *pg = gids; + clusters[0].cluster = buffer->info[0].cluster; for (is = gr_seg_first_slot (seg), ic = 0; is; is = gr_slot_next_in_segment (is), ic++) { unsigned int before = gr_slot_before (is); @@ -316,6 +318,7 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, { hb_graphite2_cluster_t *c = clusters + ci + 1; c->base_char = clusters[ci].base_char + clusters[ci].num_chars; + c->cluster = buffer->info[c->base_char].cluster; c->num_chars = before - c->base_char; c->base_glyph = ic; c->num_glyphs = 0; @@ -335,7 +338,7 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, { hb_glyph_info_t *info = &buffer->info[clusters[i].base_glyph + j]; info->codepoint = gids[clusters[i].base_glyph + j]; - info->cluster = gr_cinfo_base(gr_seg_cinfo(seg, clusters[i].base_char)); + info->cluster = clusters[i].cluster; } } buffer->len = glyph_count; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-graphite2.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-graphite2.h index 3eae54acbd8..3eae54acbd8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-graphite2.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-graphite2.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-icu.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-icu.cc index 86c8b5cc5a2..86c8b5cc5a2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-icu.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-icu.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-icu.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-icu.h index f2f35f0f2ce..f2f35f0f2ce 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-icu.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-icu.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-mutex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-mutex-private.hh index 0fb21c2e86e..0fb21c2e86e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-mutex-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-mutex-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-object-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-object-private.hh index 8a9ae34dbee..8a9ae34dbee 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-object-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-object-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-open-file-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-open-file-private.hh index 250504ae20b..de76a967520 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-open-file-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-open-file-private.hh @@ -110,9 +110,9 @@ typedef struct OffsetTable protected: Tag sfnt_version; /* '\0\001\0\00' if TrueType / 'OTTO' if CFF */ USHORT numTables; /* Number of tables. */ - USHORT searchRange; /* (Maximum power of 2 <= numTables) x 16 */ - USHORT entrySelector; /* Log2(maximum power of 2 <= numTables). */ - USHORT rangeShift; /* NumTables x 16-searchRange. */ + USHORT searchRangeZ; /* (Maximum power of 2 <= numTables) x 16 */ + USHORT entrySelectorZ; /* Log2(maximum power of 2 <= numTables). */ + USHORT rangeShiftZ; /* NumTables x 16-searchRange. */ TableRecord tables[VAR]; /* TableRecord entries. numTables items */ public: DEFINE_SIZE_ARRAY (12, tables); @@ -139,7 +139,7 @@ struct TTCHeaderVersion1 Tag ttcTag; /* TrueType Collection ID string: 'ttcf' */ FixedVersion version; /* Version of the TTC Header (1.0), * 0x00010000 */ - LongOffsetLongArrayOf<OffsetTable> + ArrayOf<OffsetTo<OffsetTable, ULONG>, ULONG> table; /* Array of offsets to the OffsetTable for each font * from the beginning of the file */ public: diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-open-type-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-open-type-private.hh index 965d4d7adcb..5f4cd42cfd8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-open-type-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-open-type-private.hh @@ -266,6 +266,15 @@ struct hb_sanitize_context_t return TRACE_RETURN (this->writable); } + template <typename Type, typename ValueType> + inline bool try_set (Type *obj, const ValueType &v) { + if (this->may_edit (obj, obj->static_size)) { + obj->set (v); + return true; + } + return false; + } + mutable unsigned int debug_depth; const char *start, *end; bool writable; @@ -621,20 +630,13 @@ struct Index : USHORT { }; DEFINE_NULL_DATA (Index, "\xff\xff"); -/* Offset to a table, same as uint16 (length = 16 bits), Null offset = 0x0000 */ -struct Offset : USHORT -{ - inline bool is_null (void) const { return 0 == *this; } - public: - DEFINE_SIZE_STATIC (2); -}; - -/* LongOffset to a table, same as uint32 (length = 32 bits), Null offset = 0x00000000 */ -struct LongOffset : ULONG +/* Offset, Null offset = 0 */ +template <typename Type=USHORT> +struct Offset : Type { inline bool is_null (void) const { return 0 == *this; } public: - DEFINE_SIZE_STATIC (4); + DEFINE_SIZE_STATIC (sizeof(Type)); }; @@ -683,12 +685,12 @@ struct FixedVersion /* - * Template subclasses of Offset and LongOffset that do the dereferencing. + * Template subclasses of Offset that do the dereferencing. * Use: (base+offset) */ -template <typename OffsetType, typename Type> -struct GenericOffsetTo : OffsetType +template <typename Type, typename OffsetType=USHORT> +struct OffsetTo : Offset<OffsetType> { inline const Type& operator () (const void *base) const { @@ -722,40 +724,25 @@ struct GenericOffsetTo : OffsetType return TRACE_RETURN (likely (obj.sanitize (c, user_data)) || neuter (c)); } - inline bool try_set (hb_sanitize_context_t *c, const OffsetType &v) { - if (c->may_edit (this, this->static_size)) { - this->set (v); - return true; - } - return false; - } /* Set the offset to Null */ inline bool neuter (hb_sanitize_context_t *c) { - if (c->may_edit (this, this->static_size)) { - this->set (0); /* 0 is Null offset */ - return true; - } - return false; + return c->try_set (this, 0); } + DEFINE_SIZE_STATIC (sizeof(OffsetType)); }; template <typename Base, typename OffsetType, typename Type> -static inline const Type& operator + (const Base &base, const GenericOffsetTo<OffsetType, Type> &offset) { return offset (base); } +static inline const Type& operator + (const Base &base, const OffsetTo<Type, OffsetType> &offset) { return offset (base); } template <typename Base, typename OffsetType, typename Type> -static inline Type& operator + (Base &base, GenericOffsetTo<OffsetType, Type> &offset) { return offset (base); } - -template <typename Type> -struct OffsetTo : GenericOffsetTo<Offset, Type> {}; - -template <typename Type> -struct LongOffsetTo : GenericOffsetTo<LongOffset, Type> {}; +static inline Type& operator + (Base &base, OffsetTo<Type, OffsetType> &offset) { return offset (base); } /* * Array Types */ -template <typename LenType, typename Type> -struct GenericArrayOf +/* An array with a number of elements. */ +template <typename Type, typename LenType=USHORT> +struct ArrayOf { const Type *sub_array (unsigned int start_offset, unsigned int *pcount /* IN/OUT */) const { @@ -839,7 +826,7 @@ struct GenericArrayOf } template <typename SearchType> - inline int search (const SearchType &x) const + inline int lsearch (const SearchType &x) const { unsigned int count = len; for (unsigned int i = 0; i < count; i++) @@ -861,26 +848,10 @@ struct GenericArrayOf DEFINE_SIZE_ARRAY (sizeof (LenType), array); }; -/* An array with a USHORT number of elements. */ -template <typename Type> -struct ArrayOf : GenericArrayOf<USHORT, Type> {}; - -/* An array with a ULONG number of elements. */ -template <typename Type> -struct LongArrayOf : GenericArrayOf<ULONG, Type> {}; - /* Array of Offset's */ template <typename Type> struct OffsetArrayOf : ArrayOf<OffsetTo<Type> > {}; -/* Array of LongOffset's */ -template <typename Type> -struct LongOffsetArrayOf : ArrayOf<LongOffsetTo<Type> > {}; - -/* LongArray of LongOffset's */ -template <typename Type> -struct LongOffsetLongArrayOf : LongArrayOf<LongOffsetTo<Type> > {}; - /* Array of offsets relative to the beginning of the array itself. */ template <typename Type> struct OffsetListOf : OffsetArrayOf<Type> @@ -903,9 +874,8 @@ struct OffsetListOf : OffsetArrayOf<Type> }; -/* An array with a USHORT number of elements, - * starting at second element. */ -template <typename Type> +/* An array starting at second element. */ +template <typename Type, typename LenType=USHORT> struct HeadlessArrayOf { inline const Type& operator [] (unsigned int i) const @@ -952,19 +922,19 @@ struct HeadlessArrayOf return TRACE_RETURN (true); } - USHORT len; + LenType len; Type array[VAR]; public: - DEFINE_SIZE_ARRAY (sizeof (USHORT), array); + DEFINE_SIZE_ARRAY (sizeof (LenType), array); }; /* An array with sorted elements. Supports binary searching. */ -template <typename LenType, typename Type> -struct GenericSortedArrayOf : GenericArrayOf<LenType, Type> +template <typename Type, typename LenType=USHORT> +struct SortedArrayOf : ArrayOf<Type, LenType> { template <typename SearchType> - inline int search (const SearchType &x) const + inline int bsearch (const SearchType &x) const { /* Hand-coded bsearch here since this is in the hot inner loop. */ int min = 0, max = (int) this->len - 1; @@ -983,10 +953,6 @@ struct GenericSortedArrayOf : GenericArrayOf<LenType, Type> } }; -/* A sorted array with a USHORT number of elements. */ -template <typename Type> -struct SortedArrayOf : GenericSortedArrayOf<USHORT, Type> {}; - } /* namespace OT */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-cmap-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-cmap-table.hh index b0f01e120fc..e683b07eb1e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-cmap-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-cmap-table.hh @@ -42,9 +42,6 @@ namespace OT { struct CmapSubtableFormat0 { - friend struct CmapSubtable; - - private: inline bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph) const { hb_codepoint_t gid = codepoint < 256 ? glyphIdArray[codepoint] : 0; @@ -61,8 +58,8 @@ struct CmapSubtableFormat0 protected: USHORT format; /* Format number is set to 0. */ - USHORT length; /* Byte length of this subtable. */ - USHORT language; /* Ignore. */ + USHORT lengthZ; /* Byte length of this subtable. */ + USHORT languageZ; /* Ignore. */ BYTE glyphIdArray[256];/* An array that maps character * code to glyph index values. */ public: @@ -71,9 +68,6 @@ struct CmapSubtableFormat0 struct CmapSubtableFormat4 { - friend struct CmapSubtable; - - private: inline bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph) const { unsigned int segCount; @@ -92,7 +86,7 @@ struct CmapSubtableFormat4 glyphIdArray = idRangeOffset + segCount; glyphIdArrayLength = (this->length - 16 - 8 * segCount) / 2; - /* Custom bsearch. */ + /* Custom two-array bsearch. */ int min = 0, max = (int) segCount - 1; unsigned int i; while (min <= max) @@ -131,22 +125,36 @@ struct CmapSubtableFormat4 return true; } - inline bool sanitize (hb_sanitize_context_t *c) { + inline bool sanitize (hb_sanitize_context_t *c) + { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && - c->check_range (this, length) && - 16 + 4 * (unsigned int) segCountX2 < length); + if (unlikely (!c->check_struct (this))) + return TRACE_RETURN (false); + + if (unlikely (!c->check_range (this, length))) + { + /* Some broken fonts have too long of a "length" value. + * If that is the case, just change the value to truncate + * the subtable at the end of the blob. */ + uint16_t new_length = (uint16_t) MIN ((uintptr_t) 65535, + (uintptr_t) (c->end - + (char *) this)); + if (!c->try_set (&length, new_length)) + return TRACE_RETURN (false); + } + + return TRACE_RETURN (16 + 4 * (unsigned int) segCountX2 <= length); } protected: USHORT format; /* Format number is set to 4. */ USHORT length; /* This is the length in bytes of the * subtable. */ - USHORT language; /* Ignore. */ + USHORT languageZ; /* Ignore. */ USHORT segCountX2; /* 2 x segCount. */ - USHORT searchRange; /* 2 * (2**floor(log2(segCount))) */ - USHORT entrySelector; /* log2(searchRange/2) */ - USHORT rangeShift; /* 2 x segCount - searchRange */ + USHORT searchRangeZ; /* 2 * (2**floor(log2(segCount))) */ + USHORT entrySelectorZ; /* log2(searchRange/2) */ + USHORT rangeShiftZ; /* 2 x segCount - searchRange */ USHORT values[VAR]; #if 0 @@ -192,9 +200,6 @@ struct CmapSubtableLongGroup template <typename UINT> struct CmapSubtableTrimmed { - friend struct CmapSubtable; - - private: inline bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph) const { /* Rely on our implicit array bound-checking. */ @@ -212,10 +217,10 @@ struct CmapSubtableTrimmed protected: UINT formatReserved; /* Subtable format and (maybe) padding. */ - UINT length; /* Byte length of this subtable. */ - UINT language; /* Ignore. */ + UINT lengthZ; /* Byte length of this subtable. */ + UINT languageZ; /* Ignore. */ UINT startCharCode; /* First character code covered. */ - GenericArrayOf<UINT, GlyphID> + ArrayOf<GlyphID, UINT> glyphIdArray; /* Array of glyph index values for character * codes in the range. */ public: @@ -228,12 +233,9 @@ struct CmapSubtableFormat10 : CmapSubtableTrimmed<ULONG > {}; template <typename T> struct CmapSubtableLongSegmented { - friend struct CmapSubtable; - - private: inline bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph) const { - int i = groups.search (codepoint); + int i = groups.bsearch (codepoint); if (i == -1) return false; *glyph = T::group_get_glyph (groups[i], codepoint); @@ -247,10 +249,10 @@ struct CmapSubtableLongSegmented protected: USHORT format; /* Subtable format; set to 12. */ - USHORT reserved; /* Reserved; set to 0. */ - ULONG length; /* Byte length of this subtable. */ - ULONG language; /* Ignore. */ - LongArrayOf<CmapSubtableLongGroup> + USHORT reservedZ; /* Reserved; set to 0. */ + ULONG lengthZ; /* Byte length of this subtable. */ + ULONG languageZ; /* Ignore. */ + SortedArrayOf<CmapSubtableLongGroup, ULONG> groups; /* Groupings. */ public: DEFINE_SIZE_ARRAY (16, groups); @@ -270,11 +272,129 @@ struct CmapSubtableFormat13 : CmapSubtableLongSegmented<CmapSubtableFormat13> { return group.glyphID; } }; +typedef enum +{ + GLYPH_VARIANT_NOT_FOUND = 0, + GLYPH_VARIANT_FOUND = 1, + GLYPH_VARIANT_USE_DEFAULT = 2 +} glyph_variant_t; + +struct UnicodeValueRange +{ + inline int cmp (const hb_codepoint_t &codepoint) const + { + if (codepoint < startUnicodeValue) return -1; + if (codepoint > startUnicodeValue + additionalCount) return +1; + return 0; + } + + inline bool sanitize (hb_sanitize_context_t *c) { + TRACE_SANITIZE (this); + return TRACE_RETURN (c->check_struct (this)); + } + + UINT24 startUnicodeValue; /* First value in this range. */ + BYTE additionalCount; /* Number of additional values in this + * range. */ + public: + DEFINE_SIZE_STATIC (4); +}; + +typedef SortedArrayOf<UnicodeValueRange, ULONG> DefaultUVS; + +struct UVSMapping +{ + inline int cmp (const hb_codepoint_t &codepoint) const + { + return unicodeValue.cmp (codepoint); + } + + inline bool sanitize (hb_sanitize_context_t *c) { + TRACE_SANITIZE (this); + return TRACE_RETURN (c->check_struct (this)); + } + + UINT24 unicodeValue; /* Base Unicode value of the UVS */ + GlyphID glyphID; /* Glyph ID of the UVS */ + public: + DEFINE_SIZE_STATIC (5); +}; + +typedef SortedArrayOf<UVSMapping, ULONG> NonDefaultUVS; + +struct VariationSelectorRecord +{ + inline glyph_variant_t get_glyph (hb_codepoint_t codepoint, + hb_codepoint_t *glyph, + const void *base) const + { + int i; + const DefaultUVS &defaults = base+defaultUVS; + i = defaults.bsearch (codepoint); + if (i != -1) + return GLYPH_VARIANT_USE_DEFAULT; + const NonDefaultUVS &nonDefaults = base+nonDefaultUVS; + i = nonDefaults.bsearch (codepoint); + if (i != -1) + { + *glyph = nonDefaults[i].glyphID; + return GLYPH_VARIANT_FOUND; + } + return GLYPH_VARIANT_NOT_FOUND; + } + + inline int cmp (const hb_codepoint_t &variation_selector) const + { + return varSelector.cmp (variation_selector); + } + + inline bool sanitize (hb_sanitize_context_t *c, void *base) { + TRACE_SANITIZE (this); + return TRACE_RETURN (c->check_struct (this) && + defaultUVS.sanitize (c, base) && + nonDefaultUVS.sanitize (c, base)); + } + + UINT24 varSelector; /* Variation selector. */ + OffsetTo<DefaultUVS, ULONG> + defaultUVS; /* Offset to Default UVS Table. May be 0. */ + OffsetTo<NonDefaultUVS, ULONG> + nonDefaultUVS; /* Offset to Non-Default UVS Table. May be 0. */ + public: + DEFINE_SIZE_STATIC (11); +}; + +struct CmapSubtableFormat14 +{ + inline glyph_variant_t get_glyph_variant (hb_codepoint_t codepoint, + hb_codepoint_t variation_selector, + hb_codepoint_t *glyph) const + { + return record[record.bsearch(variation_selector)].get_glyph (codepoint, glyph, this); + } + + inline bool sanitize (hb_sanitize_context_t *c) { + TRACE_SANITIZE (this); + return TRACE_RETURN (c->check_struct (this) && + record.sanitize (c, this)); + } + + protected: + USHORT format; /* Format number is set to 0. */ + ULONG lengthZ; /* Byte length of this subtable. */ + SortedArrayOf<VariationSelectorRecord, ULONG> + record; /* Variation selector records; sorted + * in increasing order of `varSelector'. */ + public: + DEFINE_SIZE_ARRAY (10, record); +}; + struct CmapSubtable { /* Note: We intentionally do NOT implement subtable formats 2 and 8. */ - inline bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph) const + inline bool get_glyph (hb_codepoint_t codepoint, + hb_codepoint_t *glyph) const { switch (u.format) { case 0: return u.format0 .get_glyph(codepoint, glyph); @@ -283,7 +403,18 @@ struct CmapSubtable case 10: return u.format10.get_glyph(codepoint, glyph); case 12: return u.format12.get_glyph(codepoint, glyph); case 13: return u.format13.get_glyph(codepoint, glyph); - default:return false; + case 14: + default: return false; + } + } + + inline glyph_variant_t get_glyph_variant (hb_codepoint_t codepoint, + hb_codepoint_t variation_selector, + hb_codepoint_t *glyph) const + { + switch (u.format) { + case 14: return u.format14.get_glyph_variant(codepoint, variation_selector, glyph); + default: return GLYPH_VARIANT_NOT_FOUND; } } @@ -297,6 +428,7 @@ struct CmapSubtable case 10: return TRACE_RETURN (u.format10.sanitize (c)); case 12: return TRACE_RETURN (u.format12.sanitize (c)); case 13: return TRACE_RETURN (u.format13.sanitize (c)); + case 14: return TRACE_RETURN (u.format14.sanitize (c)); default:return TRACE_RETURN (true); } } @@ -310,6 +442,7 @@ struct CmapSubtable CmapSubtableFormat10 format10; CmapSubtableFormat12 format12; CmapSubtableFormat13 format13; + CmapSubtableFormat14 format14; } u; public: DEFINE_SIZE_UNION (2, format); @@ -318,12 +451,12 @@ struct CmapSubtable struct EncodingRecord { - int cmp (const EncodingRecord &other) const + inline int cmp (const EncodingRecord &other) const { int ret; - ret = other.platformID.cmp (platformID); + ret = platformID.cmp (other.platformID); if (ret) return ret; - ret = other.encodingID.cmp (encodingID); + ret = encodingID.cmp (other.encodingID); if (ret) return ret; return 0; } @@ -336,7 +469,7 @@ struct EncodingRecord USHORT platformID; /* Platform ID. */ USHORT encodingID; /* Platform-specific encoding ID. */ - LongOffsetTo<CmapSubtable> + OffsetTo<CmapSubtable, ULONG> subtable; /* Byte offset from beginning of table to the subtable for this encoding. */ public: DEFINE_SIZE_STATIC (8); @@ -353,8 +486,11 @@ struct cmap key.platformID.set (platform_id); key.encodingID.set (encoding_id); - int result = encodingRecord.search (key); - if (result == -1) + /* Note: We can use bsearch, but since it has no performance + * implications, we use lsearch and as such accept fonts with + * unsorted subtable list. */ + int result = encodingRecord./*bsearch*/lsearch (key); + if (result == -1 || !encodingRecord[result].subtable) return NULL; return &(this+encodingRecord[result].subtable); @@ -367,8 +503,9 @@ struct cmap encodingRecord.sanitize (c, this)); } - USHORT version; /* Table version number (0). */ - ArrayOf<EncodingRecord> encodingRecord; /* Encoding tables. */ + USHORT version; /* Table version number (0). */ + SortedArrayOf<EncodingRecord> + encodingRecord; /* Encoding tables. */ public: DEFINE_SIZE_ARRAY (4, encodingRecord); }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-font.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-font.cc index c1fc49e147f..c9890c59228 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-font.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-font.cc @@ -44,6 +44,7 @@ struct hb_ot_font_t hb_blob_t *hmtx_blob; const OT::CmapSubtable *cmap; + const OT::CmapSubtable *cmap_uvs; hb_blob_t *cmap_blob; }; @@ -77,8 +78,10 @@ _hb_ot_font_create (hb_font_t *font) ot_font->cmap_blob = OT::Sanitizer<OT::cmap>::sanitize (font->face->reference_table (HB_OT_TAG_cmap)); const OT::cmap *cmap = OT::Sanitizer<OT::cmap>::lock_instance (ot_font->cmap_blob); const OT::CmapSubtable *subtable = NULL; + const OT::CmapSubtable *subtable_uvs = NULL; /* 32-bit subtables. */ + if (!subtable) subtable = cmap->find_subtable (0, 6); if (!subtable) subtable = cmap->find_subtable (0, 4); if (!subtable) subtable = cmap->find_subtable (3, 10); /* 16-bit subtables. */ @@ -87,7 +90,13 @@ _hb_ot_font_create (hb_font_t *font) /* Meh. */ if (!subtable) subtable = &OT::Null(OT::CmapSubtable); + /* UVS subtable. */ + if (!subtable_uvs) subtable_uvs = cmap->find_subtable (0, 5); + /* Meh. */ + if (!subtable_uvs) subtable_uvs = &OT::Null(OT::CmapSubtable); + ot_font->cmap = subtable; + ot_font->cmap_uvs = subtable_uvs; return ot_font; } @@ -114,7 +123,16 @@ hb_ot_get_glyph (hb_font_t *font HB_UNUSED, const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data; if (unlikely (variation_selector)) - return false; + { + switch (ot_font->cmap_uvs->get_glyph_variant (unicode, + variation_selector, + glyph)) + { + case OT::GLYPH_VARIANT_NOT_FOUND: return false; + case OT::GLYPH_VARIANT_FOUND: return true; + case OT::GLYPH_VARIANT_USE_DEFAULT: break; + } + } return ot_font->cmap->get_glyph (unicode, glyph); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-font.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-font.h index 7a8c04ac33d..7a8c04ac33d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-font.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-font.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-head-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-head-table.hh index 0285f0cf310..0285f0cf310 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-head-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-head-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-hhea-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-hhea-table.hh index f34bd26053a..f34bd26053a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-hhea-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-hhea-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-hmtx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-hmtx-table.hh index e918e3b3f40..e918e3b3f40 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-hmtx-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-hmtx-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-common-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-common-private.hh index 02d0d0f87c7..c9b4b2f9388 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-common-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-common-private.hh @@ -103,7 +103,8 @@ struct RecordArrayOf : SortedArrayOf<Record<Type> > { } inline bool find_index (hb_tag_t tag, unsigned int *index) const { - int i = this->search (tag); + /* If we want to allow non-sorted data, we can lsearch(). */ + int i = this->/*lsearch*/bsearch (tag); if (i != -1) { if (index) *index = i; return true; @@ -203,7 +204,7 @@ struct LangSys return TRACE_RETURN (c->check_struct (this) && featureIndex.sanitize (c)); } - Offset lookupOrder; /* = Null (reserved for an offset to a + Offset<> lookupOrderZ; /* = Null (reserved for an offset to a * reordering table) */ USHORT reqFeatureIndex;/* Index of a feature required for this * language system--if no required features @@ -501,11 +502,11 @@ struct Feature * Adobe tools, only the 'size' feature had FeatureParams defined. */ - Offset orig_offset = featureParams; + OffsetTo<FeatureParams> orig_offset = featureParams; if (unlikely (!featureParams.sanitize (c, this, closure ? closure->tag : HB_TAG_NONE))) return TRACE_RETURN (false); - if (likely (!orig_offset)) + if (likely (orig_offset.is_null ())) return TRACE_RETURN (true); if (featureParams == 0 && closure && @@ -513,13 +514,13 @@ struct Feature closure->list_base && closure->list_base < this) { unsigned int new_offset_int = (unsigned int) orig_offset - - ((char *) this - (char *) closure->list_base); + (((char *) this) - ((char *) closure->list_base)); - Offset new_offset; + OffsetTo<FeatureParams> new_offset; /* Check that it did not overflow. */ new_offset.set (new_offset_int); if (new_offset == new_offset_int && - featureParams.try_set (c, new_offset) && + c->try_set (&featureParams, new_offset) && !featureParams.sanitize (c, this, closure ? closure->tag : HB_TAG_NONE)) return TRACE_RETURN (false); } @@ -608,7 +609,7 @@ struct Lookup USHORT lookupType; /* Different enumerations for GSUB and GPOS */ USHORT lookupFlag; /* Lookup qualifiers */ - ArrayOf<Offset> + ArrayOf<Offset<> > subTable; /* Array of SubTables */ USHORT markFilteringSetX[VAR]; /* Index (base 0) into GDEF mark glyph sets * structure. This field is only present if bit @@ -631,7 +632,7 @@ struct CoverageFormat1 private: inline unsigned int get_coverage (hb_codepoint_t glyph_id) const { - int i = glyphArray.search (glyph_id); + int i = glyphArray.bsearch (glyph_id); ASSERT_STATIC (((unsigned int) -1) == NOT_COVERED); return i; } @@ -696,7 +697,7 @@ struct CoverageFormat2 private: inline unsigned int get_coverage (hb_codepoint_t glyph_id) const { - int i = rangeRecord.search (glyph_id); + int i = rangeRecord.bsearch (glyph_id); if (i != -1) { const RangeRecord &range = rangeRecord[i]; return (unsigned int) range.value + (glyph_id - range.start); @@ -992,7 +993,7 @@ struct ClassDefFormat2 private: inline unsigned int get_class (hb_codepoint_t glyph_id) const { - int i = rangeRecord.search (glyph_id); + int i = rangeRecord.bsearch (glyph_id); if (i != -1) return rangeRecord[i].value; return 0; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-gdef-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-gdef-table.hh index 389cbb9e398..bb8a4b944fa 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-gdef-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-gdef-table.hh @@ -282,7 +282,7 @@ struct MarkGlyphSetsFormat1 protected: USHORT format; /* Format identifier--format = 1 */ - LongOffsetArrayOf<Coverage> + ArrayOf<OffsetTo<Coverage, ULONG> > coverage; /* Array of long offsets to mark set * coverage tables */ public: diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-gpos-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-gpos-table.hh index 91e1f8b0019..91e1f8b0019 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-gpos-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-gpos-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-gsub-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-gsub-table.hh index 3a1a0ef3dd7..2e867e3de68 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-gsub-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-gsub-table.hh @@ -270,23 +270,34 @@ struct Sequence inline bool apply (hb_apply_context_t *c) const { TRACE_APPLY (this); - if (unlikely (!substitute.len)) return TRACE_RETURN (false); - - unsigned int klass = _hb_glyph_info_is_ligature (&c->buffer->cur()) ? - HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH : 0; unsigned int count = substitute.len; - if (count == 1) /* Special-case to make it in-place. */ + + /* TODO: + * Testing shows that Uniscribe actually allows zero-len susbstitute, + * which essentially deletes a glyph. We don't allow for now. It + * can be confusing to the client since the cluster from the deleted + * glyph won't be merged with any output cluster... Also, currently + * buffer->move_to() makes assumptions about this too. Perhaps fix + * in the future after figuring out what to do with the clusters. + */ + if (unlikely (!count)) return TRACE_RETURN (false); + + /* Special-case to make it in-place and not consider this + * as a "multiplied" substitution. */ + if (unlikely (count == 1)) { c->replace_glyph (substitute.array[0]); + return TRACE_RETURN (true); } - else - { - for (unsigned int i = 0; i < count; i++) { - _hb_glyph_info_set_lig_props_for_component (&c->buffer->cur(), i); - c->output_glyph (substitute.array[i], klass); - } - c->buffer->skip_glyph (); + + unsigned int klass = _hb_glyph_info_is_ligature (&c->buffer->cur()) ? + HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH : 0; + + for (unsigned int i = 0; i < count; i++) { + _hb_glyph_info_set_lig_props_for_component (&c->buffer->cur(), i); + c->output_glyph_for_component (substitute.array[i], klass); } + c->buffer->skip_glyph (); return TRACE_RETURN (true); } @@ -624,7 +635,16 @@ struct Ligature { TRACE_APPLY (this); unsigned int count = component.len; - if (unlikely (count < 1)) return TRACE_RETURN (false); + + if (unlikely (!count)) return TRACE_RETURN (false); + + /* Special-case to make it in-place and not consider this + * as a "ligated" substitution. */ + if (unlikely (count == 1)) + { + c->replace_glyph (ligGlyph); + return TRACE_RETURN (true); + } bool is_mark_ligature = false; unsigned int total_component_count = 0; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-gsubgpos-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-gsubgpos-private.hh index cd27c05b007..8f8d7b828f8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-gsubgpos-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-gsubgpos-private.hh @@ -567,13 +567,25 @@ struct hb_apply_context_t inline void _set_glyph_props (hb_codepoint_t glyph_index, unsigned int class_guess = 0, - bool ligature = false) const + bool ligature = false, + bool component = false) const { unsigned int add_in = _hb_glyph_info_get_glyph_props (&buffer->cur()) & HB_OT_LAYOUT_GLYPH_PROPS_PRESERVE; add_in |= HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED; if (ligature) + { add_in |= HB_OT_LAYOUT_GLYPH_PROPS_LIGATED; + /* In the only place that the MULTIPLIED bit is used, Uniscribe + * seems to only care about the "last" transformation between + * Ligature and Multiple substitions. Ie. if you ligate, expand, + * and ligate again, it forgives the multiplication and acts as + * if only ligation happened. As such, clear MULTIPLIED bit. + */ + add_in &= ~HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED; + } + if (component) + add_in |= HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED; if (likely (has_glyph_classes)) _hb_glyph_info_set_glyph_props (&buffer->cur(), add_in | gdef.get_glyph_props (glyph_index)); else if (class_guess) @@ -596,10 +608,10 @@ struct hb_apply_context_t _set_glyph_props (glyph_index, class_guess, true); buffer->replace_glyph (glyph_index); } - inline void output_glyph (hb_codepoint_t glyph_index, - unsigned int class_guess) const + inline void output_glyph_for_component (hb_codepoint_t glyph_index, + unsigned int class_guess) const { - _set_glyph_props (glyph_index, class_guess); + _set_glyph_props (glyph_index, class_guess, false, true); buffer->output_glyph (glyph_index); } }; @@ -995,7 +1007,9 @@ static inline bool apply_lookup (hb_apply_context_t *c, /* Recursed lookup changed buffer len. Adjust. */ - /* end can't go back past the current match position. */ + /* end can't go back past the current match position. + * Note: this is only true because we do NOT allow MultipleSubst + * with zero sequence len. */ end = MAX ((int) match_positions[idx] + 1, int (end) + delta); unsigned int next = idx + 1; /* next now is the position after the recursed lookup. */ @@ -2254,8 +2268,8 @@ struct GSUBGPOS inline unsigned int get_feature_count (void) const { return (this+featureList).len; } - inline const Tag& get_feature_tag (unsigned int i) const - { return (this+featureList).get_tag (i); } + inline hb_tag_t get_feature_tag (unsigned int i) const + { return i == Index::NOT_FOUND_INDEX ? HB_TAG_NONE : (this+featureList).get_tag (i); } inline unsigned int get_feature_tags (unsigned int start_offset, unsigned int *feature_count /* IN/OUT */, hb_tag_t *feature_tags /* OUT */) const diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-jstf-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-jstf-table.hh index 79eb859566a..79eb859566a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-jstf-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-jstf-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-private.hh index 4f03e1b0e00..e66e19c443e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout-private.hh @@ -50,9 +50,11 @@ typedef enum /* The following are used internally; not derived from GDEF. */ HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED = 0x10u, HB_OT_LAYOUT_GLYPH_PROPS_LIGATED = 0x20u, + HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED = 0x40u, HB_OT_LAYOUT_GLYPH_PROPS_PRESERVE = HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED | - HB_OT_LAYOUT_GLYPH_PROPS_LIGATED + HB_OT_LAYOUT_GLYPH_PROPS_LIGATED | + HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED } hb_ot_layout_glyph_class_mask_t; @@ -381,6 +383,26 @@ _hb_glyph_info_ligated (const hb_glyph_info_t *info) return !!(info->glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_LIGATED); } +static inline bool +_hb_glyph_info_multiplied (const hb_glyph_info_t *info) +{ + return !!(info->glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED); +} + +static inline bool +_hb_glyph_info_ligated_and_didnt_multiply (const hb_glyph_info_t *info) +{ + return _hb_glyph_info_ligated (info) && !_hb_glyph_info_multiplied (info); +} + +static inline void +_hb_glyph_info_clear_ligated_and_multiplied (hb_glyph_info_t *info) +{ + info->glyph_props() &= ~(HB_OT_LAYOUT_GLYPH_PROPS_LIGATED | + HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED); +} + + /* Allocation / deallocation. */ static inline void diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout.cc index 183726e63cf..661d90ea0d6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout.cc @@ -327,9 +327,28 @@ hb_ot_layout_language_get_required_feature_index (hb_face_t *face, unsigned int language_index, unsigned int *feature_index) { - const OT::LangSys &l = get_gsubgpos_table (face, table_tag).get_script (script_index).get_lang_sys (language_index); + return hb_ot_layout_language_get_required_feature (face, + table_tag, + script_index, + language_index, + feature_index, + NULL); +} + +hb_bool_t +hb_ot_layout_language_get_required_feature (hb_face_t *face, + hb_tag_t table_tag, + unsigned int script_index, + unsigned int language_index, + unsigned int *feature_index, + hb_tag_t *feature_tag) +{ + const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag); + const OT::LangSys &l = g.get_script (script_index).get_lang_sys (language_index); - if (feature_index) *feature_index = l.get_required_feature_index (); + unsigned int index = l.get_required_feature_index (); + if (feature_index) *feature_index = index; + if (feature_tag) *feature_tag = g.get_feature_tag (index); return l.has_required_feature (); } @@ -468,11 +487,12 @@ _hb_ot_layout_collect_lookups_features (hb_face_t *face, if (!features) { unsigned int required_feature_index; - if (hb_ot_layout_language_get_required_feature_index (face, - table_tag, - script_index, - language_index, - &required_feature_index)) + if (hb_ot_layout_language_get_required_feature (face, + table_tag, + script_index, + language_index, + &required_feature_index, + NULL)) _hb_ot_layout_collect_lookups_lookups (face, table_tag, required_feature_index, diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout.h index d90eff374d7..87171d75311 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-layout.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-layout.h @@ -146,6 +146,14 @@ hb_ot_layout_language_get_required_feature_index (hb_face_t *face, unsigned int language_index, unsigned int *feature_index); +hb_bool_t +hb_ot_layout_language_get_required_feature (hb_face_t *face, + hb_tag_t table_tag, + unsigned int script_index, + unsigned int language_index, + unsigned int *feature_index, + hb_tag_t *feature_tag); + unsigned int hb_ot_layout_language_get_feature_indexes (hb_face_t *face, hb_tag_t table_tag, diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-map-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-map-private.hh index 74e2d9aca4c..74e2d9aca4c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-map-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-map-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-map.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-map.cc index 559193c1bae..4985eb22b20 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-map.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-map.cc @@ -99,6 +99,7 @@ void hb_ot_map_builder_t::add_feature (hb_tag_t tag, unsigned int value, { feature_info_t *info = feature_infos.push(); if (unlikely (!info)) return; + if (unlikely (!tag)) return; info->tag = tag; info->seq = feature_infos.len; info->max_value = value; @@ -131,9 +132,25 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m) { m.global_mask = 1; - for (unsigned int table_index = 0; table_index < 2; table_index++) { + unsigned int required_feature_index[2]; + hb_tag_t required_feature_tag[2]; + /* We default to applying required feature in stage 0. If the required + * feature has a tag that is known to the shaper, we apply required feature + * in the stage for that tag. + */ + unsigned int required_feature_stage[2] = {0, 0}; + + for (unsigned int table_index = 0; table_index < 2; table_index++) + { m.chosen_script[table_index] = chosen_script[table_index]; m.found_script[table_index] = found_script[table_index]; + + hb_ot_layout_language_get_required_feature (face, + table_tags[table_index], + script_index[table_index], + language_index[table_index], + &required_feature_index[table_index], + &required_feature_tag[table_index]); } if (!feature_infos.len) @@ -141,7 +158,7 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m) /* Sort features and merge duplicates */ { - feature_infos.sort (); + feature_infos.qsort (); unsigned int j = 0; for (unsigned int i = 1; i < feature_infos.len; i++) if (feature_infos[i].tag != feature_infos[j].tag) @@ -166,7 +183,8 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m) /* Allocate bits now */ unsigned int next_bit = 1; - for (unsigned int i = 0; i < feature_infos.len; i++) { + for (unsigned int i = 0; i < feature_infos.len; i++) + { const feature_info_t *info = &feature_infos[i]; unsigned int bits_needed; @@ -184,12 +202,20 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m) hb_bool_t found = false; unsigned int feature_index[2]; for (unsigned int table_index = 0; table_index < 2; table_index++) + { + if (required_feature_tag[table_index] == info->tag) + { + required_feature_stage[table_index] = info->stage[table_index]; + found = true; + continue; + } found |= hb_ot_layout_language_find_feature (face, table_tags[table_index], script_index[table_index], language_index[table_index], info->tag, &feature_index[table_index]); + } if (!found && !(info->flags & F_HAS_FALLBACK)) continue; @@ -224,23 +250,21 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m) add_gsub_pause (NULL); add_gpos_pause (NULL); - for (unsigned int table_index = 0; table_index < 2; table_index++) { - hb_tag_t table_tag = table_tags[table_index]; - + for (unsigned int table_index = 0; table_index < 2; table_index++) + { /* Collect lookup indices for features */ - unsigned int required_feature_index; - if (hb_ot_layout_language_get_required_feature_index (face, - table_tag, - script_index[table_index], - language_index[table_index], - &required_feature_index)) - m.add_lookups (face, table_index, required_feature_index, 1, true); - unsigned int stage_index = 0; unsigned int last_num_lookups = 0; for (unsigned stage = 0; stage < current_stage[table_index]; stage++) { + if (required_feature_index[table_index] != HB_OT_LAYOUT_NO_FEATURE_INDEX && + required_feature_stage[table_index] == stage) + m.add_lookups (face, table_index, + required_feature_index[table_index], + 1 /* mask */, + true /* auto_zwj */); + for (unsigned i = 0; i < m.features.len; i++) if (m.features[i].stage[table_index] == stage) m.add_lookups (face, table_index, @@ -251,7 +275,7 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m) /* Sort lookups and merge duplicates */ if (last_num_lookups < m.lookups[table_index].len) { - m.lookups[table_index].sort (last_num_lookups, m.lookups[table_index].len); + m.lookups[table_index].qsort (last_num_lookups, m.lookups[table_index].len); unsigned int j = last_num_lookups; for (unsigned int i = j + 1; i < m.lookups[table_index].len; i++) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-maxp-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-maxp-table.hh index e6d255579c6..e6d255579c6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-maxp-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-maxp-table.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-name-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-name-table.hh index 07dc0565ca6..31d9fac7e29 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-name-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-name-table.hh @@ -121,7 +121,7 @@ struct name /* We only implement format 0 for now. */ USHORT format; /* Format selector (=0/1). */ USHORT count; /* Number of name records. */ - Offset stringOffset; /* Offset to start of string storage (from start of table). */ + Offset<> stringOffset; /* Offset to start of string storage (from start of table). */ NameRecord nameRecord[VAR]; /* The name records where count is the number of records. */ public: DEFINE_SIZE_ARRAY (6, nameRecord); diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-arabic-fallback.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-arabic-fallback.hh index 6b2b87e3f28..6b2b87e3f28 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-arabic-fallback.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-arabic-fallback.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-arabic-table.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-arabic-table.hh new file mode 100644 index 00000000000..ae7011ad3fd --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-arabic-table.hh @@ -0,0 +1,383 @@ +/* == Start of generated table == */ +/* + * The following table is generated by running: + * + * ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt + * + * on files with these headers: + * + * # ArabicShaping-7.0.0.txt + * # Date: 2014-02-14, 21:00:00 GMT [RP, KW, LI] + * # Blocks-7.0.0.txt + * # Date: 2014-04-03, 23:23:00 GMT [RP, KW] + * UnicodeData.txt does not have a header. + */ + +#ifndef HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH +#define HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH + + +#define X JOINING_TYPE_X +#define R JOINING_TYPE_R +#define U JOINING_TYPE_U +#define A JOINING_GROUP_ALAPH +#define DR JOINING_GROUP_DALATH_RISH +#define L JOINING_TYPE_L +#define C JOINING_TYPE_C +#define D JOINING_TYPE_D + +static const uint8_t joining_table[] = +{ + +#define joining_offset_0x0600 0 + + /* Arabic */ + + /* 0600 */ U,U,U,U,U,U,X,X,U,X,X,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + /* 0620 */ D,U,R,R,R,R,D,R,D,R,D,D,D,D,D,R,R,R,R,D,D,D,D,D,D,D,D,D,D,D,D,D, + /* 0640 */ C,D,D,D,D,D,D,D,R,D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + /* 0660 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,D,D,X,R,R,R,U,R,R,R,D,D,D,D,D,D,D,D, + /* 0680 */ D,D,D,D,D,D,D,D,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,D,D,D,D,D,D, + /* 06A0 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, + /* 06C0 */ R,D,D,R,R,R,R,R,R,R,R,R,D,R,D,R,D,D,R,R,X,R,X,X,X,X,X,X,X,U,X,X, + /* 06E0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,R,R,X,X,X,X,X,X,X,X,X,X,D,D,D,X,X,D, + + /* Syriac */ + + /* 0700 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,A,X,D,D,D,DR,DR,R,R,R,D,D,D,D,R,D, + /* 0720 */ D,D,D,D,D,D,D,D,R,D,DR,D,R,D,D,DR,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + /* 0740 */ X,X,X,X,X,X,X,X,X,X,X,X,X,R,D,D, + + /* Arabic Supplement */ + + /* 0740 */ D,D,D,D,D,D,D,D,D,R,R,R,D,D,D,D, + /* 0760 */ D,D,D,D,D,D,D,D,D,D,D,R,R,D,D,D,D,R,D,R,R,D,D,D,R,R,D,D,D,D,D,D, + + /* FILLER */ + + /* 0780 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + /* 07A0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + + /* NKo */ + + /* 07C0 */ X,X,X,X,X,X,X,X,X,X,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, + /* 07E0 */ D,D,D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,C,X,X,X,X,X, + + /* FILLER */ + + /* 0800 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + /* 0820 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + + /* Mandaic */ + + /* 0840 */ R,D,D,D,D,D,R,D,D,R,D,D,D,D,D,R,D,D,D,D,R,D,U,U,U,X,X,X,X,X,X,X, + /* 0860 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + /* 0880 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + + /* Arabic Extended-A */ + + /* 08A0 */ D,D,D,D,D,D,D,D,D,D,R,R,R,U,R,D,D,R,R, + +#define joining_offset_0x1806 691 + + /* Mongolian */ + + /* 1800 */ U,D,X,X,C,X,X,X,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + /* 1820 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, + /* 1840 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, + /* 1860 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X,X, + /* 1880 */ U,U,U,U,U,U,U,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, + /* 18A0 */ D,D,D,D,D,D,D,D,D,X,D, + +#define joining_offset_0x200c 856 + + /* General Punctuation */ + + /* 2000 */ U,C, + +#define joining_offset_0x2066 858 + + /* General Punctuation */ + + /* 2060 */ U,U,U,U, + +#define joining_offset_0xa840 862 + + /* Phags-pa */ + + /* A840 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, + /* A860 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,L,U, + +#define joining_offset_0x10ac0 914 + + /* Manichaean */ + + /* 10AC0 */ D,D,D,D,D,R,U,R,U,R,R,U,U,L,R,R,R,R,R,D,D,D,D,L,D,D,D,D,D,R,D,D, + /* 10AE0 */ D,R,U,U,R,X,X,X,X,X,X,D,D,D,D,R, + +#define joining_offset_0x10b80 962 + + /* Psalter Pahlavi */ + + /* 10B80 */ D,R,D,R,R,R,D,D,D,R,D,D,R,D,R,R,D,R,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + /* 10BA0 */ X,X,X,X,X,X,X,X,X,R,R,R,R,D,D,U, + +}; /* Table items: 1010; occupancy: 57% */ + + +static unsigned int +joining_type (hb_codepoint_t u) +{ + switch (u >> 12) + { + case 0x0: + if (0x0600 <= u && u <= 0x08B2) return joining_table[u - 0x0600 + joining_offset_0x0600]; + break; + + case 0x1: + if (0x1806 <= u && u <= 0x18AA) return joining_table[u - 0x1806 + joining_offset_0x1806]; + break; + + case 0x2: + if (0x200C <= u && u <= 0x200D) return joining_table[u - 0x200C + joining_offset_0x200c]; + if (0x2066 <= u && u <= 0x2069) return joining_table[u - 0x2066 + joining_offset_0x2066]; + break; + + case 0xA: + if (0xA840 <= u && u <= 0xA873) return joining_table[u - 0xA840 + joining_offset_0xa840]; + break; + + case 0x10: + if (0x10AC0 <= u && u <= 0x10AEF) return joining_table[u - 0x10AC0 + joining_offset_0x10ac0]; + if (0x10B80 <= u && u <= 0x10BAF) return joining_table[u - 0x10B80 + joining_offset_0x10b80]; + break; + + default: + break; + } + return X; +} + +#undef X +#undef R +#undef U +#undef A +#undef DR +#undef L +#undef C +#undef D + + +static const uint16_t shaping_table[][4] = +{ + {0x0000, 0x0000, 0x0000, 0xFE80}, /* U+0621 ARABIC LETTER HAMZA ISOLATED FORM */ + {0x0000, 0x0000, 0xFE82, 0xFE81}, /* U+0622 ARABIC LETTER ALEF WITH MADDA ABOVE */ + {0x0000, 0x0000, 0xFE84, 0xFE83}, /* U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE */ + {0x0000, 0x0000, 0xFE86, 0xFE85}, /* U+0624 ARABIC LETTER WAW WITH HAMZA ABOVE */ + {0x0000, 0x0000, 0xFE88, 0xFE87}, /* U+0625 ARABIC LETTER ALEF WITH HAMZA BELOW */ + {0xFE8B, 0xFE8C, 0xFE8A, 0xFE89}, /* U+0626 ARABIC LETTER YEH WITH HAMZA ABOVE */ + {0x0000, 0x0000, 0xFE8E, 0xFE8D}, /* U+0627 ARABIC LETTER ALEF */ + {0xFE91, 0xFE92, 0xFE90, 0xFE8F}, /* U+0628 ARABIC LETTER BEH */ + {0x0000, 0x0000, 0xFE94, 0xFE93}, /* U+0629 ARABIC LETTER TEH MARBUTA */ + {0xFE97, 0xFE98, 0xFE96, 0xFE95}, /* U+062A ARABIC LETTER TEH */ + {0xFE9B, 0xFE9C, 0xFE9A, 0xFE99}, /* U+062B ARABIC LETTER THEH */ + {0xFE9F, 0xFEA0, 0xFE9E, 0xFE9D}, /* U+062C ARABIC LETTER JEEM */ + {0xFEA3, 0xFEA4, 0xFEA2, 0xFEA1}, /* U+062D ARABIC LETTER HAH */ + {0xFEA7, 0xFEA8, 0xFEA6, 0xFEA5}, /* U+062E ARABIC LETTER KHAH */ + {0x0000, 0x0000, 0xFEAA, 0xFEA9}, /* U+062F ARABIC LETTER DAL */ + {0x0000, 0x0000, 0xFEAC, 0xFEAB}, /* U+0630 ARABIC LETTER THAL */ + {0x0000, 0x0000, 0xFEAE, 0xFEAD}, /* U+0631 ARABIC LETTER REH */ + {0x0000, 0x0000, 0xFEB0, 0xFEAF}, /* U+0632 ARABIC LETTER ZAIN */ + {0xFEB3, 0xFEB4, 0xFEB2, 0xFEB1}, /* U+0633 ARABIC LETTER SEEN */ + {0xFEB7, 0xFEB8, 0xFEB6, 0xFEB5}, /* U+0634 ARABIC LETTER SHEEN */ + {0xFEBB, 0xFEBC, 0xFEBA, 0xFEB9}, /* U+0635 ARABIC LETTER SAD */ + {0xFEBF, 0xFEC0, 0xFEBE, 0xFEBD}, /* U+0636 ARABIC LETTER DAD */ + {0xFEC3, 0xFEC4, 0xFEC2, 0xFEC1}, /* U+0637 ARABIC LETTER TAH */ + {0xFEC7, 0xFEC8, 0xFEC6, 0xFEC5}, /* U+0638 ARABIC LETTER ZAH */ + {0xFECB, 0xFECC, 0xFECA, 0xFEC9}, /* U+0639 ARABIC LETTER AIN */ + {0xFECF, 0xFED0, 0xFECE, 0xFECD}, /* U+063A ARABIC LETTER GHAIN */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+063B */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+063C */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+063D */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+063E */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+063F */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0640 */ + {0xFED3, 0xFED4, 0xFED2, 0xFED1}, /* U+0641 ARABIC LETTER FEH */ + {0xFED7, 0xFED8, 0xFED6, 0xFED5}, /* U+0642 ARABIC LETTER QAF */ + {0xFEDB, 0xFEDC, 0xFEDA, 0xFED9}, /* U+0643 ARABIC LETTER KAF */ + {0xFEDF, 0xFEE0, 0xFEDE, 0xFEDD}, /* U+0644 ARABIC LETTER LAM */ + {0xFEE3, 0xFEE4, 0xFEE2, 0xFEE1}, /* U+0645 ARABIC LETTER MEEM */ + {0xFEE7, 0xFEE8, 0xFEE6, 0xFEE5}, /* U+0646 ARABIC LETTER NOON */ + {0xFEEB, 0xFEEC, 0xFEEA, 0xFEE9}, /* U+0647 ARABIC LETTER HEH */ + {0x0000, 0x0000, 0xFEEE, 0xFEED}, /* U+0648 ARABIC LETTER WAW */ + {0xFBE8, 0xFBE9, 0xFEF0, 0xFEEF}, /* U+0649 ARABIC LETTER */ + {0xFEF3, 0xFEF4, 0xFEF2, 0xFEF1}, /* U+064A ARABIC LETTER YEH */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+064B */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+064C */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+064D */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+064E */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+064F */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0650 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0651 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0652 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0653 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0654 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0655 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0656 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0657 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0658 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0659 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+065A */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+065B */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+065C */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+065D */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+065E */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+065F */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0660 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0661 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0662 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0663 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0664 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0665 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0666 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0667 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0668 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0669 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+066A */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+066B */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+066C */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+066D */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+066E */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+066F */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0670 */ + {0x0000, 0x0000, 0xFB51, 0xFB50}, /* U+0671 ARABIC LETTER ALEF WASLA */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0672 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0673 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0674 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0675 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0676 */ + {0x0000, 0x0000, 0x0000, 0xFBDD}, /* U+0677 ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0678 */ + {0xFB68, 0xFB69, 0xFB67, 0xFB66}, /* U+0679 ARABIC LETTER TTEH */ + {0xFB60, 0xFB61, 0xFB5F, 0xFB5E}, /* U+067A ARABIC LETTER TTEHEH */ + {0xFB54, 0xFB55, 0xFB53, 0xFB52}, /* U+067B ARABIC LETTER BEEH */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+067C */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+067D */ + {0xFB58, 0xFB59, 0xFB57, 0xFB56}, /* U+067E ARABIC LETTER PEH */ + {0xFB64, 0xFB65, 0xFB63, 0xFB62}, /* U+067F ARABIC LETTER TEHEH */ + {0xFB5C, 0xFB5D, 0xFB5B, 0xFB5A}, /* U+0680 ARABIC LETTER BEHEH */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0681 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0682 */ + {0xFB78, 0xFB79, 0xFB77, 0xFB76}, /* U+0683 ARABIC LETTER NYEH */ + {0xFB74, 0xFB75, 0xFB73, 0xFB72}, /* U+0684 ARABIC LETTER DYEH */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0685 */ + {0xFB7C, 0xFB7D, 0xFB7B, 0xFB7A}, /* U+0686 ARABIC LETTER TCHEH */ + {0xFB80, 0xFB81, 0xFB7F, 0xFB7E}, /* U+0687 ARABIC LETTER TCHEHEH */ + {0x0000, 0x0000, 0xFB89, 0xFB88}, /* U+0688 ARABIC LETTER DDAL */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0689 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+068A */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+068B */ + {0x0000, 0x0000, 0xFB85, 0xFB84}, /* U+068C ARABIC LETTER DAHAL */ + {0x0000, 0x0000, 0xFB83, 0xFB82}, /* U+068D ARABIC LETTER DDAHAL */ + {0x0000, 0x0000, 0xFB87, 0xFB86}, /* U+068E ARABIC LETTER DUL */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+068F */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0690 */ + {0x0000, 0x0000, 0xFB8D, 0xFB8C}, /* U+0691 ARABIC LETTER RREH */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0692 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0693 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0694 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0695 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0696 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0697 */ + {0x0000, 0x0000, 0xFB8B, 0xFB8A}, /* U+0698 ARABIC LETTER JEH */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+0699 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+069A */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+069B */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+069C */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+069D */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+069E */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+069F */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06A0 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06A1 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06A2 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06A3 */ + {0xFB6C, 0xFB6D, 0xFB6B, 0xFB6A}, /* U+06A4 ARABIC LETTER VEH */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06A5 */ + {0xFB70, 0xFB71, 0xFB6F, 0xFB6E}, /* U+06A6 ARABIC LETTER PEHEH */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06A7 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06A8 */ + {0xFB90, 0xFB91, 0xFB8F, 0xFB8E}, /* U+06A9 ARABIC LETTER KEHEH */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06AA */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06AB */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06AC */ + {0xFBD5, 0xFBD6, 0xFBD4, 0xFBD3}, /* U+06AD ARABIC LETTER NG */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06AE */ + {0xFB94, 0xFB95, 0xFB93, 0xFB92}, /* U+06AF ARABIC LETTER GAF */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B0 */ + {0xFB9C, 0xFB9D, 0xFB9B, 0xFB9A}, /* U+06B1 ARABIC LETTER NGOEH */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B2 */ + {0xFB98, 0xFB99, 0xFB97, 0xFB96}, /* U+06B3 ARABIC LETTER GUEH */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B4 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B5 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B6 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B7 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B8 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06B9 */ + {0x0000, 0x0000, 0xFB9F, 0xFB9E}, /* U+06BA ARABIC LETTER NOON GHUNNA */ + {0xFBA2, 0xFBA3, 0xFBA1, 0xFBA0}, /* U+06BB ARABIC LETTER RNOON */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06BC */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06BD */ + {0xFBAC, 0xFBAD, 0xFBAB, 0xFBAA}, /* U+06BE ARABIC LETTER HEH DOACHASHMEE */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06BF */ + {0x0000, 0x0000, 0xFBA5, 0xFBA4}, /* U+06C0 ARABIC LETTER HEH WITH YEH ABOVE */ + {0xFBA8, 0xFBA9, 0xFBA7, 0xFBA6}, /* U+06C1 ARABIC LETTER HEH GOAL */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06C2 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06C3 */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06C4 */ + {0x0000, 0x0000, 0xFBE1, 0xFBE0}, /* U+06C5 ARABIC LETTER KIRGHIZ OE */ + {0x0000, 0x0000, 0xFBDA, 0xFBD9}, /* U+06C6 ARABIC LETTER OE */ + {0x0000, 0x0000, 0xFBD8, 0xFBD7}, /* U+06C7 ARABIC LETTER U */ + {0x0000, 0x0000, 0xFBDC, 0xFBDB}, /* U+06C8 ARABIC LETTER YU */ + {0x0000, 0x0000, 0xFBE3, 0xFBE2}, /* U+06C9 ARABIC LETTER KIRGHIZ YU */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06CA */ + {0x0000, 0x0000, 0xFBDF, 0xFBDE}, /* U+06CB ARABIC LETTER VE */ + {0xFBFE, 0xFBFF, 0xFBFD, 0xFBFC}, /* U+06CC ARABIC LETTER FARSI YEH */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06CD */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06CE */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06CF */ + {0xFBE6, 0xFBE7, 0xFBE5, 0xFBE4}, /* U+06D0 ARABIC LETTER E */ + {0x0000, 0x0000, 0x0000, 0x0000}, /* U+06D1 */ + {0x0000, 0x0000, 0xFBAF, 0xFBAE}, /* U+06D2 ARABIC LETTER YEH BARREE */ + {0x0000, 0x0000, 0xFBB1, 0xFBB0}, /* U+06D3 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE */ +}; + +#define SHAPING_TABLE_FIRST 0x0621 +#define SHAPING_TABLE_LAST 0x06D3 + + +static const struct ligature_set_t { + uint16_t first; + struct ligature_pairs_t { + uint16_t second; + uint16_t ligature; + } ligatures[4]; +} ligature_table[] = +{ + { 0xFEDF, { + { 0xFE88, 0xFEF9 }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM */ + { 0xFE82, 0xFEF5 }, /* ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM */ + { 0xFE8E, 0xFEFB }, /* ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM */ + { 0xFE84, 0xFEF7 }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM */ + }}, + { 0xFEE0, { + { 0xFE88, 0xFEFA }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM */ + { 0xFE82, 0xFEF6 }, /* ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM */ + { 0xFE8E, 0xFEFC }, /* ARABIC LIGATURE LAM WITH ALEF FINAL FORM */ + { 0xFE84, 0xFEF8 }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM */ + }}, +}; + + +#endif /* HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH */ + +/* == End of generated table == */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-arabic.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-arabic.cc index ea6d85c1e6c..b7aa694cb6b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-arabic.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-arabic.cc @@ -57,41 +57,15 @@ enum { static unsigned int get_joining_type (hb_codepoint_t u, hb_unicode_general_category_t gen_cat) { - if (likely (hb_in_range<hb_codepoint_t> (u, JOINING_TABLE_FIRST, JOINING_TABLE_LAST))) { - unsigned int j_type = joining_table[u - JOINING_TABLE_FIRST]; - if (likely (j_type != JOINING_TYPE_X)) - return j_type; - } - - /* Mongolian joining data is not in ArabicJoining.txt yet. */ - if (unlikely (hb_in_range<hb_codepoint_t> (u, 0x1800, 0x18AF))) - { - if (unlikely (hb_in_range<hb_codepoint_t> (u, 0x1880, 0x1886))) - return JOINING_TYPE_U; - - /* All letters, SIBE SYLLABLE BOUNDARY MARKER, and NIRUGU are D */ - if ((FLAG(gen_cat) & (FLAG (HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER) | - FLAG (HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER))) - || u == 0x1807 || u == 0x180A) - return JOINING_TYPE_D; - } - - /* 'Phags-pa joining data is not in ArabicJoining.txt yet. */ - if (unlikely (hb_in_range<hb_codepoint_t> (u, 0xA840, 0xA872))) - { - if (unlikely (u == 0xA872)) - return JOINING_TYPE_L; - - return JOINING_TYPE_D; - } - - if (unlikely (hb_in_range<hb_codepoint_t> (u, 0x200C, 0x200D))) - { - return u == 0x200C ? JOINING_TYPE_U : JOINING_TYPE_C; - } - - return (FLAG(gen_cat) & (FLAG(HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) | FLAG(HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) | FLAG(HB_UNICODE_GENERAL_CATEGORY_FORMAT))) ? - JOINING_TYPE_T : JOINING_TYPE_U; + unsigned int j_type = joining_type(u); + if (likely (j_type != JOINING_TYPE_X)) + return j_type; + + return (FLAG(gen_cat) & + (FLAG(HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) | + FLAG(HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) | + FLAG(HB_UNICODE_GENERAL_CATEGORY_FORMAT)) + ) ? JOINING_TYPE_T : JOINING_TYPE_U; } static const hb_tag_t arabic_features[] = diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-default.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-default.cc index f7f097eedaa..f7f097eedaa 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-default.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-default.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-hangul.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-hangul.cc index 47aa44fedba..47aa44fedba 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-hangul.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-hangul.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-hebrew.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-hebrew.cc index 6bb6043f652..6bb6043f652 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-hebrew.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-hebrew.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-indic-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-indic-machine.hh index 5fbdcc8366e..5fbdcc8366e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-indic-machine.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-indic-machine.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-indic-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-indic-machine.rl index f6768a581f2..f6768a581f2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-indic-machine.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-indic-machine.rl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-indic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-indic-private.hh index 266adbcd716..d8dfc6507d9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-indic-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-indic-private.hh @@ -105,57 +105,74 @@ enum indic_position_t { /* Categories used in IndicSyllabicCategory.txt from UCD. */ enum indic_syllabic_category_t { - INDIC_SYLLABIC_CATEGORY_OTHER = OT_X, - - INDIC_SYLLABIC_CATEGORY_AVAGRAHA = OT_Symbol, - INDIC_SYLLABIC_CATEGORY_BINDU = OT_SM, - INDIC_SYLLABIC_CATEGORY_CONSONANT = OT_C, - INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD = OT_C, - INDIC_SYLLABIC_CATEGORY_CONSONANT_FINAL = OT_CM, - INDIC_SYLLABIC_CATEGORY_CONSONANT_HEAD_LETTER = OT_C, - INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL = OT_CM, - INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER = OT_PLACEHOLDER, - INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED = OT_CM, - INDIC_SYLLABIC_CATEGORY_CONSONANT_REPHA = OT_Repha, - INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER = OT_X, - INDIC_SYLLABIC_CATEGORY_NUKTA = OT_N, - INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER = OT_RS, - INDIC_SYLLABIC_CATEGORY_TONE_LETTER = OT_X, - INDIC_SYLLABIC_CATEGORY_TONE_MARK = OT_N, - INDIC_SYLLABIC_CATEGORY_VIRAMA = OT_H, - INDIC_SYLLABIC_CATEGORY_VISARGA = OT_SM, - INDIC_SYLLABIC_CATEGORY_VOWEL = OT_V, - INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT = OT_M, - INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT = OT_V + INDIC_SYLLABIC_CATEGORY_OTHER = OT_X, + + INDIC_SYLLABIC_CATEGORY_AVAGRAHA = OT_Symbol, + INDIC_SYLLABIC_CATEGORY_BINDU = OT_SM, + INDIC_SYLLABIC_CATEGORY_BRAHMI_JOINING_NUMBER = OT_PLACEHOLDER, /* TODO */ + INDIC_SYLLABIC_CATEGORY_CANTILLATION_MARK = OT_A, + INDIC_SYLLABIC_CATEGORY_CONSONANT = OT_C, + INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD = OT_C, + INDIC_SYLLABIC_CATEGORY_CONSONANT_FINAL = OT_CM, + INDIC_SYLLABIC_CATEGORY_CONSONANT_HEAD_LETTER = OT_C, + INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL = OT_CM, + INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER = OT_PLACEHOLDER, + INDIC_SYLLABIC_CATEGORY_CONSONANT_PRECEDING_REPHA = OT_Repha, + INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED = OT_CM, + INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA = OT_N, + INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK = OT_SM, + INDIC_SYLLABIC_CATEGORY_INVISIBLE_STACKER = OT_H, /* TODO */ + INDIC_SYLLABIC_CATEGORY_JOINER = OT_ZWJ, + INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER = OT_X, + INDIC_SYLLABIC_CATEGORY_NON_JOINER = OT_ZWNJ, + INDIC_SYLLABIC_CATEGORY_NUKTA = OT_N, + INDIC_SYLLABIC_CATEGORY_NUMBER = OT_PLACEHOLDER, + INDIC_SYLLABIC_CATEGORY_NUMBER_JOINER = OT_PLACEHOLDER, /* TODO */ + INDIC_SYLLABIC_CATEGORY_PURE_KILLER = OT_H, /* TODO */ + INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER = OT_RS, + INDIC_SYLLABIC_CATEGORY_TONE_LETTER = OT_X, + INDIC_SYLLABIC_CATEGORY_TONE_MARK = OT_N, + INDIC_SYLLABIC_CATEGORY_VIRAMA = OT_H, + INDIC_SYLLABIC_CATEGORY_VISARGA = OT_SM, + INDIC_SYLLABIC_CATEGORY_VOWEL = OT_V, + INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT = OT_M, + INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT = OT_V }; /* Categories used in IndicSMatraCategory.txt from UCD */ enum indic_matra_category_t { - INDIC_MATRA_CATEGORY_NOT_APPLICABLE = POS_END, + INDIC_MATRA_CATEGORY_NOT_APPLICABLE = POS_END, - INDIC_MATRA_CATEGORY_LEFT = POS_PRE_C, - INDIC_MATRA_CATEGORY_TOP = POS_ABOVE_C, - INDIC_MATRA_CATEGORY_BOTTOM = POS_BELOW_C, - INDIC_MATRA_CATEGORY_RIGHT = POS_POST_C, + INDIC_MATRA_CATEGORY_LEFT = POS_PRE_C, + INDIC_MATRA_CATEGORY_TOP = POS_ABOVE_C, + INDIC_MATRA_CATEGORY_BOTTOM = POS_BELOW_C, + INDIC_MATRA_CATEGORY_RIGHT = POS_POST_C, /* These should resolve to the position of the last part of the split sequence. */ - INDIC_MATRA_CATEGORY_BOTTOM_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT, - INDIC_MATRA_CATEGORY_LEFT_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT, - INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM = INDIC_MATRA_CATEGORY_BOTTOM, - INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT, - INDIC_MATRA_CATEGORY_TOP_AND_LEFT = INDIC_MATRA_CATEGORY_TOP, - INDIC_MATRA_CATEGORY_TOP_AND_LEFT_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT, - INDIC_MATRA_CATEGORY_TOP_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT, - - INDIC_MATRA_CATEGORY_INVISIBLE = INDIC_MATRA_CATEGORY_NOT_APPLICABLE, - INDIC_MATRA_CATEGORY_OVERSTRUCK = POS_AFTER_MAIN, - INDIC_MATRA_CATEGORY_VISUAL_ORDER_LEFT = POS_PRE_M + INDIC_MATRA_CATEGORY_BOTTOM_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT, + INDIC_MATRA_CATEGORY_LEFT_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT, + INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM = INDIC_MATRA_CATEGORY_BOTTOM, + INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT, + INDIC_MATRA_CATEGORY_TOP_AND_LEFT = INDIC_MATRA_CATEGORY_TOP, + INDIC_MATRA_CATEGORY_TOP_AND_LEFT_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT, + INDIC_MATRA_CATEGORY_TOP_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT, + + INDIC_MATRA_CATEGORY_OVERSTRUCK = POS_AFTER_MAIN, + INDIC_MATRA_CATEGORY_VISUAL_ORDER_LEFT = POS_PRE_M }; /* Note: We use ASSERT_STATIC_EXPR_ZERO() instead of ASSERT_STATIC_EXPR() and the comma operation * because gcc fails to optimize the latter and fills the table in at runtime. */ #define INDIC_COMBINE_CATEGORIES(S,M) \ - (ASSERT_STATIC_EXPR_ZERO (M == INDIC_MATRA_CATEGORY_NOT_APPLICABLE || (S == INDIC_SYLLABIC_CATEGORY_VIRAMA || S == INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT)) + \ + (ASSERT_STATIC_EXPR_ZERO (M == INDIC_MATRA_CATEGORY_NOT_APPLICABLE || \ + ( \ + S == INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL || \ + S == INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK || \ + S == INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER || \ + S == INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA || \ + S == INDIC_SYLLABIC_CATEGORY_VIRAMA || \ + S == INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT || \ + false)) + \ ASSERT_STATIC_EXPR_ZERO (S < 255 && M < 255) + \ ((M << 8) | S)) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-indic-table.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-indic-table.cc index 18a022bc507..69da6507c3b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-indic-table.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-indic-table.cc @@ -6,54 +6,63 @@ * * on files with these headers: * - * # IndicSyllabicCategory-6.2.0.txt - * # Date: 2012-05-15, 21:12:00 GMT [KW] - * # IndicMatraCategory-6.2.0.txt - * # Date: 2012-05-15, 21:10:00 GMT [KW] - * # Blocks-6.2.0.txt - * # Date: 2012-05-14, 22:42:00 GMT [KW, LI] + * # IndicSyllabicCategory-7.0.0.txt + * # Date: 2014-06-03, 07:00:00 GMT [KW, LI, AG, RP] + * # IndicMatraCategory-7.0.0.txt + * # Date: 2014-06-03, 07:00:00 GMT [KW, LI, AG, RP] + * # Blocks-7.0.0.txt + * # Date: 2014-04-03, 23:23:00 GMT [RP, KW] */ #include "hb-ot-shape-complex-indic-private.hh" -#define ISC_A INDIC_SYLLABIC_CATEGORY_AVAGRAHA /* 11 chars; Avagraha */ -#define ISC_Bi INDIC_SYLLABIC_CATEGORY_BINDU /* 34 chars; Bindu */ -#define ISC_C INDIC_SYLLABIC_CATEGORY_CONSONANT /* 123 chars; Consonant */ -#define ISC_CD INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD /* 2 chars; Consonant_Dead */ -#define ISC_CF INDIC_SYLLABIC_CATEGORY_CONSONANT_FINAL /* 17 chars; Consonant_Final */ -#define ISC_CHL INDIC_SYLLABIC_CATEGORY_CONSONANT_HEAD_LETTER /* 1 chars; Consonant_Head_Letter */ -#define ISC_CM INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL /* 12 chars; Consonant_Medial */ -#define ISC_CP INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER /* 4 chars; Consonant_Placeholder */ -#define ISC_CR INDIC_SYLLABIC_CATEGORY_CONSONANT_REPHA /* 5 chars; Consonant_Repha */ -#define ISC_CS INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED /* 10 chars; Consonant_Subjoined */ +#define ISC_A INDIC_SYLLABIC_CATEGORY_AVAGRAHA /* 13 chars; Avagraha */ +#define ISC_Bi INDIC_SYLLABIC_CATEGORY_BINDU /* 59 chars; Bindu */ +#define ISC_BJN INDIC_SYLLABIC_CATEGORY_BRAHMI_JOINING_NUMBER /* 20 chars; Brahmi_Joining_Number */ +#define ISC_Ca INDIC_SYLLABIC_CATEGORY_CANTILLATION_MARK /* 30 chars; Cantillation_Mark */ +#define ISC_C INDIC_SYLLABIC_CATEGORY_CONSONANT /* 1744 chars; Consonant */ +#define ISC_CD INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD /* 7 chars; Consonant_Dead */ +#define ISC_CF INDIC_SYLLABIC_CATEGORY_CONSONANT_FINAL /* 61 chars; Consonant_Final */ +#define ISC_CHL INDIC_SYLLABIC_CATEGORY_CONSONANT_HEAD_LETTER /* 5 chars; Consonant_Head_Letter */ +#define ISC_CM INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL /* 19 chars; Consonant_Medial */ +#define ISC_CP INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER /* 11 chars; Consonant_Placeholder */ +#define ISC_CPR INDIC_SYLLABIC_CATEGORY_CONSONANT_PRECEDING_REPHA /* 1 chars; Consonant_Preceding_Repha */ +#define ISC_CS INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED /* 61 chars; Consonant_Subjoined */ +#define ISC_CSR INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA /* 4 chars; Consonant_Succeeding_Repha */ +#define ISC_GM INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK /* 2 chars; Gemination_Mark */ +#define ISC_IS INDIC_SYLLABIC_CATEGORY_INVISIBLE_STACKER /* 7 chars; Invisible_Stacker */ +#define ISC_ZWJ INDIC_SYLLABIC_CATEGORY_JOINER /* 1 chars; Joiner */ #define ISC_ML INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER /* 1 chars; Modifying_Letter */ -#define ISC_N INDIC_SYLLABIC_CATEGORY_NUKTA /* 12 chars; Nukta */ +#define ISC_ZWNJ INDIC_SYLLABIC_CATEGORY_NON_JOINER /* 1 chars; Non_Joiner */ +#define ISC_N INDIC_SYLLABIC_CATEGORY_NUKTA /* 18 chars; Nukta */ +#define ISC_Nd INDIC_SYLLABIC_CATEGORY_NUMBER /* 408 chars; Number */ +#define ISC_NJ INDIC_SYLLABIC_CATEGORY_NUMBER_JOINER /* 1 chars; Number_Joiner */ #define ISC_x INDIC_SYLLABIC_CATEGORY_OTHER /* 1 chars; Other */ -#define ISC_RS INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER /* 1 chars; Register_Shifter */ -#define ISC_TL INDIC_SYLLABIC_CATEGORY_TONE_LETTER /* 3 chars; Tone_Letter */ -#define ISC_TM INDIC_SYLLABIC_CATEGORY_TONE_MARK /* 16 chars; Tone_Mark */ -#define ISC_V INDIC_SYLLABIC_CATEGORY_VIRAMA /* 34 chars; Virama */ -#define ISC_Vs INDIC_SYLLABIC_CATEGORY_VISARGA /* 25 chars; Visarga */ -#define ISC_Vo INDIC_SYLLABIC_CATEGORY_VOWEL /* 5 chars; Vowel */ -#define ISC_M INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT /* 165 chars; Vowel_Dependent */ -#define ISC_VI INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT /* 59 chars; Vowel_Independent */ - -#define IMC_B INDIC_MATRA_CATEGORY_BOTTOM /* 65 chars; Bottom */ +#define ISC_PK INDIC_SYLLABIC_CATEGORY_PURE_KILLER /* 15 chars; Pure_Killer */ +#define ISC_RS INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER /* 3 chars; Register_Shifter */ +#define ISC_TL INDIC_SYLLABIC_CATEGORY_TONE_LETTER /* 7 chars; Tone_Letter */ +#define ISC_TM INDIC_SYLLABIC_CATEGORY_TONE_MARK /* 62 chars; Tone_Mark */ +#define ISC_V INDIC_SYLLABIC_CATEGORY_VIRAMA /* 22 chars; Virama */ +#define ISC_Vs INDIC_SYLLABIC_CATEGORY_VISARGA /* 29 chars; Visarga */ +#define ISC_Vo INDIC_SYLLABIC_CATEGORY_VOWEL /* 30 chars; Vowel */ +#define ISC_M INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT /* 553 chars; Vowel_Dependent */ +#define ISC_VI INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT /* 395 chars; Vowel_Independent */ + +#define IMC_B INDIC_MATRA_CATEGORY_BOTTOM /* 142 chars; Bottom */ #define IMC_BR INDIC_MATRA_CATEGORY_BOTTOM_AND_RIGHT /* 2 chars; Bottom_And_Right */ -#define IMC_I INDIC_MATRA_CATEGORY_INVISIBLE /* 6 chars; Invisible */ -#define IMC_L INDIC_MATRA_CATEGORY_LEFT /* 30 chars; Left */ -#define IMC_LR INDIC_MATRA_CATEGORY_LEFT_AND_RIGHT /* 8 chars; Left_And_Right */ +#define IMC_L INDIC_MATRA_CATEGORY_LEFT /* 57 chars; Left */ +#define IMC_LR INDIC_MATRA_CATEGORY_LEFT_AND_RIGHT /* 21 chars; Left_And_Right */ #define IMC_x INDIC_MATRA_CATEGORY_NOT_APPLICABLE /* 1 chars; Not_Applicable */ #define IMC_O INDIC_MATRA_CATEGORY_OVERSTRUCK /* 2 chars; Overstruck */ -#define IMC_R INDIC_MATRA_CATEGORY_RIGHT /* 75 chars; Right */ -#define IMC_T INDIC_MATRA_CATEGORY_TOP /* 83 chars; Top */ -#define IMC_TB INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM /* 6 chars; Top_And_Bottom */ +#define IMC_R INDIC_MATRA_CATEGORY_RIGHT /* 163 chars; Right */ +#define IMC_T INDIC_MATRA_CATEGORY_TOP /* 169 chars; Top */ +#define IMC_TB INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM /* 10 chars; Top_And_Bottom */ #define IMC_TBR INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM_AND_RIGHT /* 1 chars; Top_And_Bottom_And_Right */ -#define IMC_TL INDIC_MATRA_CATEGORY_TOP_AND_LEFT /* 4 chars; Top_And_Left */ -#define IMC_TLR INDIC_MATRA_CATEGORY_TOP_AND_LEFT_AND_RIGHT /* 2 chars; Top_And_Left_And_Right */ -#define IMC_TR INDIC_MATRA_CATEGORY_TOP_AND_RIGHT /* 8 chars; Top_And_Right */ -#define IMC_VOL INDIC_MATRA_CATEGORY_VISUAL_ORDER_LEFT /* 5 chars; Visual_Order_Left */ +#define IMC_TL INDIC_MATRA_CATEGORY_TOP_AND_LEFT /* 6 chars; Top_And_Left */ +#define IMC_TLR INDIC_MATRA_CATEGORY_TOP_AND_LEFT_AND_RIGHT /* 4 chars; Top_And_Left_And_Right */ +#define IMC_TR INDIC_MATRA_CATEGORY_TOP_AND_RIGHT /* 13 chars; Top_And_Right */ +#define IMC_VOL INDIC_MATRA_CATEGORY_VISUAL_ORDER_LEFT /* 15 chars; Visual_Order_Left */ #define _(S,M) INDIC_COMBINE_CATEGORIES (ISC_##S, IMC_##M) @@ -61,10 +70,26 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { -#define indic_offset_0x0900 0 +#define indic_offset_0x0028 0 - /* Devanagari (0900..097F) */ + /* Basic Latin */ + + /* 0028 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(CP,x), _(x,x), _(x,x), + /* 0030 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 0038 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + +#define indic_offset_0x00d0 24 + + + /* Latin-1 Supplement */ + + /* 00D0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(CP,x), + +#define indic_offset_0x0900 32 + + + /* Devanagari */ /* 0900 */ _(Bi,x), _(Bi,x), _(Bi,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), /* 0908 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), @@ -76,14 +101,14 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 0938 */ _(C,x), _(C,x), _(M,T), _(M,R), _(N,x), _(A,x), _(M,R), _(M,L), /* 0940 */ _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(M,T), _(M,T), _(M,T), /* 0948 */ _(M,T), _(M,R), _(M,R), _(M,R), _(M,R), _(V,B), _(M,L), _(M,R), - /* 0950 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,T), _(M,B), _(M,B), + /* 0950 */ _(x,x), _(TM,x), _(TM,x), _(x,x), _(x,x), _(M,T), _(M,B), _(M,B), /* 0958 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 0960 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0968 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 0960 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x), + /* 0968 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), /* 0970 */ _(x,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), - /* 0978 */ _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 0978 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* Bengali (0980..09FF) */ + /* Bengali */ /* 0980 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), /* 0988 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(x,x), _(VI,x), @@ -97,12 +122,12 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 09C8 */ _(M,L), _(x,x), _(x,x), _(M,LR), _(M,LR), _(V,B), _(CD,x), _(x,x), /* 09D0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,R), /* 09D8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(C,x), _(C,x), _(x,x), _(C,x), - /* 09E0 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(x,x), _(x,x), - /* 09E8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 09E0 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x), + /* 09E8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), /* 09F0 */ _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 09F8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Gurmukhi (0A00..0A7F) */ + /* Gurmukhi */ /* 0A00 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), /* 0A08 */ _(VI,x), _(VI,x), _(VI,x), _(x,x), _(x,x), _(x,x), _(x,x), _(VI,x), @@ -116,12 +141,12 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 0A48 */ _(M,T), _(x,x), _(x,x), _(M,T), _(M,T), _(V,B), _(x,x), _(x,x), /* 0A50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 0A58 */ _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x), _(x,x), - /* 0A60 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0A68 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0A70 */ _(Bi,x), _(x,x), _(CP,x), _(CP,x), _(x,x), _(CM,x), _(x,x), _(x,x), + /* 0A60 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(Nd,x), _(Nd,x), + /* 0A68 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 0A70 */ _(Bi,x), _(GM,T), _(CP,x), _(CP,x), _(x,x), _(CM,x), _(x,x), _(x,x), /* 0A78 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Gujarati (0A80..0AFF) */ + /* Gujarati */ /* 0A80 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), /* 0A88 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(VI,x), @@ -135,12 +160,12 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 0AC8 */ _(M,T), _(M,TR), _(x,x), _(M,R), _(M,R), _(V,B), _(x,x), _(x,x), /* 0AD0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 0AD8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0AE0 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0AE8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 0AE0 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x), + /* 0AE8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), /* 0AF0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 0AF8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Oriya (0B00..0B7F) */ + /* Oriya */ /* 0B00 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), /* 0B08 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(x,x), _(VI,x), @@ -154,12 +179,12 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 0B48 */ _(M,TL), _(x,x), _(x,x), _(M,LR),_(M,TLR), _(V,B), _(x,x), _(x,x), /* 0B50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,T), _(M,TR), /* 0B58 */ _(x,x), _(x,x), _(x,x), _(x,x), _(C,x), _(C,x), _(x,x), _(C,x), - /* 0B60 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0B68 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 0B60 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x), + /* 0B68 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), /* 0B70 */ _(x,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 0B78 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Tamil (0B80..0BFF) */ + /* Tamil */ /* 0B80 */ _(x,x), _(x,x), _(Bi,x), _(ML,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), /* 0B88 */ _(VI,x), _(VI,x), _(VI,x), _(x,x), _(x,x), _(x,x), _(VI,x), _(VI,x), @@ -173,33 +198,33 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 0BC8 */ _(M,L), _(x,x), _(M,LR), _(M,LR), _(M,LR), _(V,T), _(x,x), _(x,x), /* 0BD0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,R), /* 0BD8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0BE0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0BE8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 0BE0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(Nd,x), _(Nd,x), + /* 0BE8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), /* 0BF0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 0BF8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Telugu (0C00..0C7F) */ + /* Telugu */ - /* 0C00 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), + /* 0C00 */ _(Bi,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), /* 0C08 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(VI,x), _(VI,x), /* 0C10 */ _(VI,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), /* 0C18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0C20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0C28 */ _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 0C30 */ _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), + /* 0C30 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0C38 */ _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(A,x), _(M,T), _(M,T), /* 0C40 */ _(M,T), _(M,R), _(M,R), _(M,R), _(M,R), _(x,x), _(M,T), _(M,T), /* 0C48 */ _(M,TB), _(x,x), _(M,T), _(M,T), _(M,T), _(V,T), _(x,x), _(x,x), /* 0C50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,T), _(M,B), _(x,x), /* 0C58 */ _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0C60 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0C68 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 0C60 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x), + /* 0C68 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), /* 0C70 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 0C78 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Kannada (0C80..0CFF) */ + /* Kannada */ - /* 0C80 */ _(x,x), _(x,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), + /* 0C80 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), /* 0C88 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(VI,x), _(VI,x), /* 0C90 */ _(VI,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), /* 0C98 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -211,14 +236,14 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 0CC8 */ _(M,TR), _(x,x), _(M,TR), _(M,TR), _(M,T), _(V,T), _(x,x), _(x,x), /* 0CD0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,R), _(M,R), _(x,x), /* 0CD8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(C,x), _(x,x), - /* 0CE0 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0CE8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 0CE0 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x), + /* 0CE8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), /* 0CF0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 0CF8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Malayalam (0D00..0D7F) */ + /* Malayalam */ - /* 0D00 */ _(x,x), _(x,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), + /* 0D00 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), /* 0D08 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(VI,x), _(VI,x), /* 0D10 */ _(VI,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), /* 0D18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -227,15 +252,15 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 0D30 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0D38 */ _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(A,x), _(M,R), _(M,R), /* 0D40 */ _(M,R), _(M,R), _(M,R), _(M,B), _(M,B), _(x,x), _(M,L), _(M,L), - /* 0D48 */ _(M,L), _(x,x), _(M,LR), _(M,LR), _(M,LR), _(V,T), _(CR,x), _(x,x), + /* 0D48 */ _(M,L), _(x,x), _(M,LR), _(M,LR), _(M,LR), _(V,T),_(CPR,x), _(x,x), /* 0D50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,R), /* 0D58 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0D60 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0D68 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 0D60 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x), + /* 0D68 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), /* 0D70 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 0D78 */ _(x,x), _(x,x), _(CD,x), _(CD,x), _(CD,x), _(CD,x), _(CD,x), _(CD,x), - /* Sinhala (0D80..0DFF) */ + /* Sinhala */ /* 0D80 */ _(x,x), _(x,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), /* 0D88 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), @@ -248,86 +273,15 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 0DC0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), /* 0DC8 */ _(x,x), _(x,x), _(V,T), _(x,x), _(x,x), _(x,x), _(x,x), _(M,R), /* 0DD0 */ _(M,R), _(M,R), _(M,T), _(M,T), _(M,B), _(x,x), _(M,B), _(x,x), - /* 0DD8 */ _(M,R), _(M,L), _(M,TL), _(M,L), _(M,LR), _(M,LR), _(M,LR), _(M,R), - /* 0DE0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0DE8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 0DD8 */ _(M,R), _(M,L), _(M,TL), _(M,L), _(M,LR),_(M,TLR), _(M,LR), _(M,R), + /* 0DE0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(Nd,x), _(Nd,x), + /* 0DE8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), /* 0DF0 */ _(x,x), _(x,x), _(M,R), _(M,R), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0DF8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - - /* Thai (0E00..0E7F) */ - - /* 0E00 */ _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 0E08 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 0E10 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 0E18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 0E20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 0E28 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), - /* 0E30 */ _(M,R), _(M,T), _(M,R), _(M,R), _(M,T), _(M,T), _(M,T), _(M,T), - /* 0E38 */ _(M,B), _(M,B), _(V,B), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0E40 */_(M,VOL),_(M,VOL),_(M,VOL),_(M,VOL),_(M,VOL), _(M,R), _(x,x), _(M,T), - /* 0E48 */ _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(x,x), _(Bi,x), _(V,T), _(x,x), - /* 0E50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0E58 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0E60 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0E68 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0E70 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0E78 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - - /* Lao (0E80..0EFF) */ - - /* 0E80 */ _(x,x), _(C,x), _(C,x), _(x,x), _(C,x), _(x,x), _(x,x), _(C,x), - /* 0E88 */ _(C,x), _(x,x), _(C,x), _(x,x), _(x,x), _(C,x), _(x,x), _(x,x), - /* 0E90 */ _(x,x), _(x,x), _(x,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 0E98 */ _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 0EA0 */ _(x,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x), _(x,x), _(C,x), - /* 0EA8 */ _(x,x), _(x,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(x,x), - /* 0EB0 */ _(M,R), _(M,T), _(M,R), _(M,R), _(M,T), _(M,T), _(M,T), _(M,T), - /* 0EB8 */ _(M,B), _(M,B), _(x,x), _(M,T), _(CM,x), _(CM,x), _(x,x), _(x,x), - /* 0EC0 */_(M,VOL),_(M,VOL),_(M,VOL),_(M,VOL),_(M,VOL), _(x,x), _(x,x), _(x,x), - /* 0EC8 */ _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(x,x), _(Bi,x), _(x,x), _(x,x), - /* 0ED0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0ED8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(C,x), _(C,x), _(x,x), _(x,x), - /* 0EE0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0EE8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0EF0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0EF8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - - /* Tibetan (0F00..0FFF) */ - - /* 0F00 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0F08 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0F10 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0F18 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0F20 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0F28 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0F30 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0F38 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0F40 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 0F48 */ _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 0F50 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 0F58 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 0F60 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 0F68 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), - /* 0F70 */ _(x,x), _(M,B), _(M,T), _(M,TB), _(M,B), _(M,B), _(M,TB), _(M,TB), - /* 0F78 */ _(M,TB), _(M,TB), _(M,T), _(M,T), _(M,T), _(M,T), _(Bi,x), _(Vs,x), - /* 0F80 */ _(M,T), _(M,TB), _(Bi,x), _(Bi,x), _(V,B), _(A,x), _(x,x), _(x,x), - /* 0F88 */_(CHL,x),_(CHL,x),_(CHL,x),_(CHL,x),_(CHL,x), _(CS,x), _(CS,x), _(CS,x), - /* 0F90 */ _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), - /* 0F98 */ _(x,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), - /* 0FA0 */ _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), - /* 0FA8 */ _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), - /* 0FB0 */ _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), - /* 0FB8 */ _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(x,x), _(x,x), _(x,x), - /* 0FC0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0FC8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0FD0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0FD8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0FE0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0FE8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0FF0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 0FF8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - - /* Myanmar (1000..109F) */ + +#define indic_offset_0x1000 1304 + + + /* Myanmar */ /* 1000 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1008 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -336,9 +290,9 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 1020 */ _(C,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), /* 1028 */ _(VI,x), _(VI,x), _(VI,x), _(M,R), _(M,R), _(M,T), _(M,T), _(M,B), /* 1030 */ _(M,B), _(M,L), _(M,T), _(M,T), _(M,T), _(M,T), _(Bi,x), _(TM,x), - /* 1038 */ _(Vs,x), _(V,I), _(V,T), _(CM,x), _(CM,x), _(CM,x), _(CM,x), _(C,x), - /* 1040 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1048 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 1038 */ _(Vs,x), _(IS,x), _(PK,T), _(CM,x), _(CM,x), _(CM,x), _(CM,x), _(C,x), + /* 1040 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 1048 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(CP,x), _(x,x), /* 1050 */ _(C,x), _(C,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(M,R), _(M,R), /* 1058 */ _(M,B), _(M,B), _(C,x), _(C,x), _(C,x), _(C,x), _(CM,x), _(CM,x), /* 1060 */ _(CM,x), _(C,x), _(M,R), _(TM,x), _(TM,x), _(C,x), _(C,x), _(M,R), @@ -347,41 +301,41 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 1078 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1080 */ _(C,x), _(C,x), _(CM,x), _(M,R), _(M,L), _(M,T), _(M,T), _(TM,x), /* 1088 */ _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(C,x), _(TM,x), - /* 1090 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1098 */ _(x,x), _(x,x), _(TM,x), _(TM,x), _(M,R), _(M,T), _(x,x), _(x,x), + /* 1090 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 1098 */ _(Nd,x), _(Nd,x), _(TM,x), _(TM,x), _(M,R), _(M,T), _(x,x), _(x,x), -#define indic_offset_0x1700 1952 +#define indic_offset_0x1700 1464 - /* Tagalog (1700..171F) */ + /* Tagalog */ /* 1700 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1708 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), - /* 1710 */ _(C,x), _(C,x), _(M,T), _(M,B), _(V,B), _(x,x), _(x,x), _(x,x), + /* 1710 */ _(C,x), _(C,x), _(M,T), _(M,B), _(PK,B), _(x,x), _(x,x), _(x,x), /* 1718 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Hanunoo (1720..173F) */ + /* Hanunoo */ /* 1720 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1728 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 1730 */ _(C,x), _(C,x), _(M,T), _(M,B), _(V,B), _(x,x), _(x,x), _(x,x), + /* 1730 */ _(C,x), _(C,x), _(M,T), _(M,B), _(PK,B), _(x,x), _(x,x), _(x,x), /* 1738 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Buhid (1740..175F) */ + /* Buhid */ /* 1740 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1748 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1750 */ _(C,x), _(C,x), _(M,T), _(M,B), _(x,x), _(x,x), _(x,x), _(x,x), /* 1758 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Tagbanwa (1760..177F) */ + /* Tagbanwa */ /* 1760 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1768 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), /* 1770 */ _(C,x), _(x,x), _(M,T), _(M,B), _(x,x), _(x,x), _(x,x), _(x,x), /* 1778 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Khmer (1780..17FF) */ + /* Khmer */ /* 1780 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1788 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -392,31 +346,29 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 17B0 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(x,x), _(M,R), _(M,T), /* 17B8 */ _(M,T), _(M,T), _(M,T), _(M,B), _(M,B), _(M,B), _(M,TL),_(M,TLR), /* 17C0 */ _(M,LR), _(M,L), _(M,L), _(M,L), _(M,LR), _(M,LR), _(Bi,x), _(Vs,x), - /* 17C8 */ _(M,R), _(RS,x), _(RS,x), _(x,x), _(CR,x), _(x,x), _(x,x), _(x,x), - /* 17D0 */ _(x,x), _(V,T), _(V,I), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 17C8 */ _(M,R), _(RS,T), _(RS,T), _(RS,T),_(CSR,T), _(M,T), _(M,T), _(M,T), + /* 17D0 */ _(M,T), _(PK,T), _(IS,x), _(M,T), _(x,x), _(x,x), _(x,x), _(x,x), /* 17D8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(A,x), _(x,x), _(x,x), _(x,x), - /* 17E0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 17E8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 17F0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 17F8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 17E0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 17E8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), -#define indic_offset_0x1900 2208 +#define indic_offset_0x1900 1704 - /* Limbu (1900..194F) */ + /* Limbu */ /* 1900 */ _(CP,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1908 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1910 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 1918 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), + /* 1918 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), /* 1920 */ _(M,T), _(M,T), _(M,B), _(M,R), _(M,R), _(M,TR), _(M,TR), _(M,T), /* 1928 */ _(M,T), _(CS,x), _(CS,x), _(CS,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 1930 */ _(CF,x), _(CF,x), _(Bi,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), /* 1938 */ _(CF,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1940 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1948 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 1940 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(Nd,x), _(Nd,x), + /* 1948 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), - /* Tai Le (1950..197F) */ + /* Tai Le */ /* 1950 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1958 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -425,7 +377,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 1970 */ _(TL,x), _(TL,x), _(TL,x), _(TL,x), _(TL,x), _(x,x), _(x,x), _(x,x), /* 1978 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* New Tai Lue (1980..19DF) */ + /* New Tai Lue */ /* 1980 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1988 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -437,24 +389,21 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 19B8 */ _(M,R), _(M,R), _(M,L), _(M,R), _(M,R), _(M,R), _(M,R), _(M,R), /* 19C0 */ _(M,R), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), /* 19C8 */ _(TM,x), _(TM,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 19D0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 19D8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - - /* FILLER (19E0..19FF) */ - + /* 19D0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 19D8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 19E0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 19E8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 19F0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 19F8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Buginese (1A00..1A1F) */ + /* Buginese */ /* 1A00 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1A08 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1A10 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(M,T), - /* 1A18 */ _(M,B), _(M,L), _(M,R), _(M,L), _(x,x), _(x,x), _(x,x), _(x,x), + /* 1A18 */ _(M,B), _(M,L), _(M,R), _(M,T), _(x,x), _(x,x), _(x,x), _(x,x), - /* Tai Tham (1A20..1AAF) */ + /* Tai Tham */ /* 1A20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1A28 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -462,25 +411,23 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 1A38 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1A40 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1A48 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(VI,x), _(VI,x), _(VI,x), - /* 1A50 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(CM,x), _(CM,x), _(CF,x), + /* 1A50 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(CM,L), _(CM,x), _(CF,x), /* 1A58 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(x,x), - /* 1A60 */ _(V,I), _(M,R), _(M,T), _(M,R), _(M,R), _(M,T), _(M,T), _(M,T), + /* 1A60 */ _(IS,x), _(M,R), _(M,T), _(M,R), _(M,R), _(M,T), _(M,T), _(M,T), /* 1A68 */ _(M,T), _(M,B), _(M,B), _(M,T), _(M,B), _(M,R), _(M,L), _(M,L), /* 1A70 */ _(M,L), _(M,L), _(M,L), _(M,T), _(M,T), _(TM,x), _(TM,x), _(TM,x), /* 1A78 */ _(TM,x), _(TM,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1A80 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1A88 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1A90 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1A98 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1AA0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1AA8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 1A80 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 1A88 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 1A90 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 1A98 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), -#define indic_offset_0x1b00 2640 +#define indic_offset_0x1b00 2120 - /* Balinese (1B00..1B7F) */ + /* Balinese */ - /* 1B00 */ _(Bi,x), _(Bi,x), _(Bi,x), _(CR,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), + /* 1B00 */ _(Bi,x), _(Bi,x), _(Bi,x),_(CSR,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), /* 1B08 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), /* 1B10 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1B18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -490,36 +437,36 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 1B38 */ _(M,B), _(M,B), _(M,B), _(M,BR), _(M,TB),_(M,TBR), _(M,L), _(M,L), /* 1B40 */ _(M,LR), _(M,LR), _(M,T), _(M,TR), _(V,R), _(C,x), _(C,x), _(C,x), /* 1B48 */ _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1B50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1B58 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 1B50 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 1B58 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 1B60 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 1B68 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 1B70 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 1B78 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Sundanese (1B80..1BBF) */ + /* Sundanese */ - /* 1B80 */ _(Bi,x), _(CR,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), + /* 1B80 */ _(Bi,x),_(CSR,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), /* 1B88 */ _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1B90 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1B98 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1BA0 */ _(C,x), _(CS,x), _(CS,x), _(CS,x), _(M,T), _(M,B), _(M,L), _(M,R), - /* 1BA8 */ _(M,T), _(M,T), _(V,R), _(V,x), _(CS,x), _(CS,x), _(C,x), _(C,x), - /* 1BB0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1BB8 */ _(x,x), _(x,x), _(A,x), _(C,x), _(C,x), _(C,x), _(CF,x), _(CF,x), + /* 1BA8 */ _(M,T), _(M,T), _(PK,R), _(IS,x), _(CS,x), _(CS,x), _(C,x), _(C,x), + /* 1BB0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 1BB8 */ _(Nd,x), _(Nd,x), _(A,x), _(C,x), _(C,x), _(C,x), _(CF,x), _(CF,x), - /* Batak (1BC0..1BFF) */ + /* Batak */ /* 1BC0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1BC8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1BD0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1BD8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 1BE0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(VI,x), _(VI,x), _(N,x), _(M,x), - /* 1BE8 */ _(M,x), _(M,x), _(M,x), _(M,x), _(M,x), _(M,x), _(M,x), _(M,x), - /* 1BF0 */ _(CF,x), _(CF,x), _(V,R), _(V,R), _(x,x), _(x,x), _(x,x), _(x,x), + /* 1BE0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(VI,x), _(VI,x), _(N,x), _(M,R), + /* 1BE8 */ _(M,T), _(M,T), _(M,R), _(M,R), _(M,R), _(M,T), _(M,R), _(M,T), + /* 1BF0 */ _(CF,x), _(CF,x), _(PK,R), _(PK,R), _(x,x), _(x,x), _(x,x), _(x,x), /* 1BF8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Lepcha (1C00..1C4F) */ + /* Lepcha */ /* 1C00 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1C08 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -527,41 +474,45 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 1C18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1C20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(CS,x), _(CS,x), _(M,R), _(M,L), /* 1C28 */ _(M,L), _(M,TL), _(M,R), _(M,R), _(M,B), _(CF,x), _(CF,x), _(CF,x), - /* 1C30 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(Bi,x), _(Bi,x), _(x,x), _(N,x), + /* 1C30 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(Bi,L), _(Bi,L), _(x,x), _(N,x), /* 1C38 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1C40 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1C48 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(C,x), _(C,x), _(C,x), + /* 1C40 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 1C48 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(C,x), _(C,x), _(C,x), -#define indic_offset_0x1cd0 2976 +#define indic_offset_0x1cd0 2456 - /* Vedic Extensions (1CD0..1CFF) */ + /* Vedic Extensions */ - /* 1CD0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1CD8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1CE0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 1CD0 */ _(TM,x), _(TM,x), _(TM,x), _(x,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x), + /* 1CD8 */ _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x), + /* 1CE0 */ _(TM,x), _(TM,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 1CE8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1CF0 */ _(x,x), _(x,x), _(Vs,x), _(Vs,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 1CF8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 1CF0 */ _(x,x), _(x,x), _(Vs,x), _(Vs,x), _(TM,x), _(x,x), _(x,x), _(x,x), -#define indic_offset_0xa800 3024 +#define indic_offset_0x2008 2496 - /* Syloti Nagri (A800..A82F) */ + /* General Punctuation */ - /* A800 */ _(VI,x), _(VI,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), _(V,T), _(C,x), + /* 2008 */ _(x,x), _(x,x), _(x,x), _(x,x),_(ZWNJ,x),_(ZWJ,x), _(x,x), _(x,x), + /* 2010 */ _(x,x), _(x,x), _(CP,x), _(CP,x), _(CP,x), _(x,x), _(x,x), _(x,x), + +#define indic_offset_0xa800 2512 + + + /* Syloti Nagri */ + + /* A800 */ _(VI,x), _(VI,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), _(PK,T), _(C,x), /* A808 */ _(C,x), _(C,x), _(C,x), _(Bi,x), _(C,x), _(C,x), _(C,x), _(C,x), /* A810 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* A818 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* A820 */ _(C,x), _(C,x), _(C,x), _(M,R), _(M,R), _(M,B), _(M,T), _(M,R), /* A828 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - - /* FILLER (A830..A83F) */ - /* A830 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* A838 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Phags-pa (A840..A87F) */ + /* Phags-pa */ /* A840 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* A848 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -572,7 +523,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* A870 */ _(C,x), _(CS,x), _(C,x), _(Bi,x), _(x,x), _(x,x), _(x,x), _(x,x), /* A878 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Saurashtra (A880..A8DF) */ + /* Saurashtra */ /* A880 */ _(Bi,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), /* A888 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), @@ -584,44 +535,41 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* A8B8 */ _(M,R), _(M,R), _(M,R), _(M,R), _(M,R), _(M,R), _(M,R), _(M,R), /* A8C0 */ _(M,R), _(M,R), _(M,R), _(M,R), _(V,B), _(x,x), _(x,x), _(x,x), /* A8C8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* A8D0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* A8D8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* A8D0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* A8D8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* FILLER (A8E0..A8FF) */ + /* Devanagari Extended */ - /* A8E0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* A8E8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* A8F0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* A8E0 */ _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), + /* A8E8 */ _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), + /* A8F0 */ _(Ca,x), _(Ca,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* A8F8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Kayah Li (A900..A92F) */ + /* Kayah Li */ - /* A900 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* A908 */ _(x,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* A900 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* A908 */ _(Nd,x), _(Nd,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* A910 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* A918 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* A920 */ _(C,x), _(C,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), /* A928 */ _(Vo,x), _(Vo,x), _(Vo,x), _(TM,x), _(TM,x), _(TM,x), _(x,x), _(x,x), - /* Rejang (A930..A95F) */ + /* Rejang */ /* A930 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* A938 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* A940 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(M,B), /* A948 */ _(M,B), _(M,B), _(M,T), _(M,B), _(M,B), _(M,B), _(M,B), _(CF,x), - /* A950 */ _(CF,x), _(CF,x), _(CF,x), _(V,R), _(x,x), _(x,x), _(x,x), _(x,x), + /* A950 */ _(CF,x), _(CF,x), _(CF,x), _(PK,R), _(x,x), _(x,x), _(x,x), _(x,x), /* A958 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - - /* FILLER (A960..A97F) */ - /* A960 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* A968 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* A970 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* A978 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Javanese (A980..A9DF) */ + /* Javanese */ - /* A980 */ _(Bi,x), _(Bi,x), _(CR,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), + /* A980 */ _(Bi,x), _(Bi,x),_(CSR,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), /* A988 */ _(VI,x), _(C,x), _(C,x), _(C,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), /* A990 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* A998 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -631,17 +579,17 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* A9B8 */ _(M,B), _(M,B), _(M,L), _(M,L), _(M,T), _(CS,x), _(CM,x), _(CM,x), /* A9C0 */ _(V,BR), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* A9C8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* A9D0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* A9D8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* A9D0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* A9D8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* FILLER (A9E0..A9FF) */ + /* Myanmar Extended-B */ - /* A9E0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* A9E8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* A9F0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* A9F8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* A9E0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(C,x), + /* A9E8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* A9F0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* A9F8 */ _(Nd,x), _(Nd,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), - /* Cham (AA00..AA5F) */ + /* Cham */ /* AA00 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), /* AA08 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -649,21 +597,21 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* AA18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* AA20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* AA28 */ _(C,x), _(M,T), _(M,T), _(M,T), _(M,T), _(M,B), _(M,T), _(M,L), - /* AA30 */ _(M,L), _(M,T), _(M,B), _(CM,x), _(CM,x), _(CM,x), _(CM,x), _(x,x), + /* AA30 */ _(M,L), _(M,T), _(M,B), _(CM,x), _(CM,L), _(CM,x), _(CM,x), _(x,x), /* AA38 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* AA40 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), /* AA48 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(x,x), _(x,x), - /* AA50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* AA58 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* AA50 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* AA58 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Myanmar Extended-A (AA60..AA7F) */ + /* Myanmar Extended-A */ /* AA60 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* AA68 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* AA70 */ _(x,x), _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* AA78 */ _(x,x), _(x,x), _(C,x), _(TM,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* AA78 */ _(x,x), _(x,x), _(C,x), _(TM,x), _(TM,x), _(TM,x), _(C,x), _(C,x), - /* Tai Viet (AA80..AADF) */ + /* Tai Viet */ /* AA80 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* AA88 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -678,31 +626,30 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* AAD0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* AAD8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Meetei Mayek Extensions (AAE0..AAFF) */ + /* Meetei Mayek Extensions */ /* AAE0 */ _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* AAE8 */ _(C,x), _(C,x), _(C,x), _(M,L), _(M,B), _(M,T), _(M,L), _(M,R), - /* AAF0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(Vs,x), _(V,I), _(x,x), - /* AAF8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* AAF0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(Vs,x), _(IS,x), _(x,x), -#define indic_offset_0xabc0 3792 +#define indic_offset_0xabc0 3272 - /* Meetei Mayek (ABC0..ABFF) */ + /* Meetei Mayek */ /* ABC0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* ABC8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(VI,x), _(VI,x), /* ABD0 */ _(C,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* ABD8 */ _(C,x), _(C,x), _(C,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), /* ABE0 */ _(CF,x), _(CF,x), _(CF,x), _(M,R), _(M,R), _(M,T), _(M,R), _(M,R), - /* ABE8 */ _(M,B), _(M,R), _(M,R), _(x,x), _(TM,x), _(V,B), _(x,x), _(x,x), - /* ABF0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* ABF8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* ABE8 */ _(M,B), _(M,R), _(M,R), _(x,x), _(TM,x), _(PK,B), _(x,x), _(x,x), + /* ABF0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* ABF8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), -#define indic_offset_0x10a00 3856 +#define indic_offset_0x10a00 3336 - /* Kharoshthi (10A00..10A5F) */ + /* Kharoshthi */ /* 10A00 */ _(C,x), _(M,O), _(M,B), _(M,B), _(x,x), _(M,T), _(M,O), _(x,x), /* 10A08 */ _(x,x), _(x,x), _(x,x), _(x,x), _(M,B), _(x,x), _(Bi,x), _(Vs,x), @@ -711,16 +658,13 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 10A20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 10A28 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 10A30 */ _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 10A38 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(V,I), - /* 10A40 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 10A48 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 10A50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 10A58 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 10A38 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(IS,x), + /* 10A40 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), -#define indic_offset_0x11000 3952 +#define indic_offset_0x11000 3408 - /* Brahmi (11000..1107F) */ + /* Brahmi */ /* 11000 */ _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), /* 11008 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), @@ -732,14 +676,14 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 11038 */ _(M,T), _(M,T), _(M,T), _(M,T), _(M,B), _(M,B), _(M,B), _(M,B), /* 11040 */ _(M,B), _(M,B), _(M,T), _(M,T), _(M,T), _(M,T), _(V,T), _(x,x), /* 11048 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 11050 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 11058 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 11060 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 11068 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 11050 */ _(x,x), _(x,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x), + /* 11058 */_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x), + /* 11060 */_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x), _(Nd,x), _(Nd,x), + /* 11068 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), /* 11070 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 11078 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 11078 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(NJ,x), - /* Kaithi (11080..110CF) */ + /* Kaithi */ /* 11080 */ _(Bi,x), _(Bi,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), /* 11088 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), @@ -749,13 +693,11 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 110A8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 110B0 */ _(M,R), _(M,L), _(M,R), _(M,B), _(M,B), _(M,T), _(M,T), _(M,R), /* 110B8 */ _(M,R), _(V,B), _(N,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 110C0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 110C8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), -#define indic_offset_0x11100 4160 +#define indic_offset_0x11100 3600 - /* Chakma (11100..1114F) */ + /* Chakma */ /* 11100 */ _(Bi,x), _(Bi,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), /* 11108 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -763,15 +705,21 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 11118 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 11120 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(M,T), /* 11128 */ _(M,T), _(M,T), _(M,B), _(M,B), _(M,L), _(M,T), _(M,TB), _(M,TB), - /* 11130 */ _(M,T), _(M,B), _(M,B), _(V,I), _(V,T), _(x,x), _(x,x), _(x,x), - /* 11138 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 11130 */ _(M,T), _(M,B), _(M,B), _(IS,x), _(PK,T), _(x,x), _(Nd,x), _(Nd,x), + /* 11138 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), /* 11140 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 11148 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), -#define indic_offset_0x11180 4240 + /* Mahajani */ + /* 11150 */ _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(C,x), _(C,x), _(C,x), + /* 11158 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11160 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11168 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11170 */ _(C,x), _(C,x), _(C,x), _(N,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 11178 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* Sharada (11180..111DF) */ + /* Sharada */ /* 11180 */ _(Bi,x), _(Bi,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), /* 11188 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), @@ -783,13 +731,116 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 111B8 */ _(M,B), _(M,B), _(M,B), _(M,B), _(M,T), _(M,T), _(M,T), _(M,TR), /* 111C0 */ _(V,R), _(A,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 111C8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 111D0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 111D8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - -#define indic_offset_0x11680 4336 - - - /* Takri (11680..116CF) */ + /* 111D0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 111D8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + + /* Sinhala Archaic Numbers */ + + /* 111E0 */ _(x,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 111E8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 111F0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), + /* 111F8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + + /* Khojki */ + + /* 11200 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), + /* 11208 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11210 */ _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11218 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11220 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11228 */ _(C,x), _(C,x), _(C,x), _(C,x), _(M,R), _(M,R), _(M,R), _(M,B), + /* 11230 */ _(M,T), _(M,T), _(M,TR), _(M,TR), _(Bi,x), _(V,R), _(N,x), _(GM,T), + +#define indic_offset_0x112b0 3912 + + + /* Khudawadi */ + + /* 112B0 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), + /* 112B8 */ _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 112C0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 112C8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 112D0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 112D8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(Bi,x), + /* 112E0 */ _(M,R), _(M,L), _(M,R), _(M,B), _(M,B), _(M,T), _(M,T), _(M,T), + /* 112E8 */ _(M,T), _(N,x), _(PK,B), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 112F0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 112F8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + + /* Grantha */ + + /* 11300 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), + /* 11308 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(x,x), _(VI,x), + /* 11310 */ _(VI,x), _(x,x), _(x,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), + /* 11318 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11320 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11328 */ _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11330 */ _(C,x), _(x,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), + /* 11338 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,x), _(A,x), _(M,R), _(M,R), + /* 11340 */ _(M,T), _(M,R), _(M,R), _(M,R), _(M,R), _(x,x), _(x,x), _(M,L), + /* 11348 */ _(M,L), _(x,x), _(x,x), _(M,LR), _(M,LR), _(V,R), _(x,x), _(x,x), + /* 11350 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,R), + /* 11358 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 11360 */ _(VI,x), _(VI,x), _(M,R), _(M,R), _(x,x), _(x,x), _(Ca,x), _(Ca,x), + /* 11368 */ _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(x,x), _(x,x), _(x,x), + /* 11370 */ _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(x,x), _(x,x), _(x,x), + +#define indic_offset_0x11480 4112 + + + /* Tirhuta */ + + /* 11480 */ _(x,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), + /* 11488 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), + /* 11490 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11498 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 114A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 114A8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 114B0 */ _(M,R), _(M,L), _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(M,B), + /* 114B8 */ _(M,B), _(M,L), _(M,T), _(M,TL), _(M,LR), _(M,R), _(M,LR), _(Bi,x), + /* 114C0 */ _(Bi,x), _(Vs,x), _(V,B), _(N,x), _(A,x), _(x,x), _(x,x), _(x,x), + /* 114C8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 114D0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 114D8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + +#define indic_offset_0x11580 4208 + + + /* Siddham */ + + /* 11580 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), + /* 11588 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), + /* 11590 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11598 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 115A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 115A8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(M,R), + /* 115B0 */ _(M,L), _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(x,x), _(x,x), + /* 115B8 */ _(M,L), _(M,TL), _(M,LR),_(M,TLR), _(Bi,x), _(Bi,x), _(Vs,x), _(V,B), + /* 115C0 */ _(N,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + +#define indic_offset_0x11600 4280 + + + /* Modi */ + + /* 11600 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), + /* 11608 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), + /* 11610 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11618 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11620 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11628 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11630 */ _(M,R), _(M,R), _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(M,B), + /* 11638 */ _(M,B), _(M,T), _(M,T), _(M,R), _(M,R), _(Bi,x), _(Vs,x), _(V,B), + /* 11640 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 11648 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 11650 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 11658 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 11660 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 11668 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 11670 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 11678 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + + /* Takri */ /* 11680 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), /* 11688 */ _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -799,30 +850,57 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 116A8 */ _(C,x), _(C,x), _(C,x), _(Bi,x), _(Vs,x), _(M,T), _(M,L), _(M,R), /* 116B0 */ _(M,B), _(M,B), _(M,T), _(M,T), _(M,T), _(M,T), _(V,T), _(N,x), /* 116B8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 116C0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 116C8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), - -#define indic_offset_total 4416 + /* 116C0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 116C8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), -}; /* Table occupancy: 60% */ +}; /* Table items: 4488; occupancy: 73% */ INDIC_TABLE_ELEMENT_TYPE hb_indic_get_categories (hb_codepoint_t u) { - if (0x0900 <= u && u <= 0x10A0) return indic_table[u - 0x0900 + indic_offset_0x0900]; - if (0x1700 <= u && u <= 0x1800) return indic_table[u - 0x1700 + indic_offset_0x1700]; - if (0x1900 <= u && u <= 0x1AB0) return indic_table[u - 0x1900 + indic_offset_0x1900]; - if (0x1B00 <= u && u <= 0x1C50) return indic_table[u - 0x1B00 + indic_offset_0x1b00]; - if (0x1CD0 <= u && u <= 0x1D00) return indic_table[u - 0x1CD0 + indic_offset_0x1cd0]; - if (0xA800 <= u && u <= 0xAB00) return indic_table[u - 0xA800 + indic_offset_0xa800]; - if (0xABC0 <= u && u <= 0xAC00) return indic_table[u - 0xABC0 + indic_offset_0xabc0]; - if (0x10A00 <= u && u <= 0x10A60) return indic_table[u - 0x10A00 + indic_offset_0x10a00]; - if (0x11000 <= u && u <= 0x110D0) return indic_table[u - 0x11000 + indic_offset_0x11000]; - if (0x11100 <= u && u <= 0x11150) return indic_table[u - 0x11100 + indic_offset_0x11100]; - if (0x11180 <= u && u <= 0x111E0) return indic_table[u - 0x11180 + indic_offset_0x11180]; - if (0x11680 <= u && u <= 0x116D0) return indic_table[u - 0x11680 + indic_offset_0x11680]; - if (unlikely (u == 0x00A0)) return _(CP,x); - if (unlikely (u == 0x25CC)) return _(CP,x); + switch (u >> 12) + { + case 0x0: + if (0x0028 <= u && u <= 0x0040) return indic_table[u - 0x0028 + indic_offset_0x0028]; + if (0x00D0 <= u && u <= 0x00D8) return indic_table[u - 0x00D0 + indic_offset_0x00d0]; + if (0x0900 <= u && u <= 0x0DF8) return indic_table[u - 0x0900 + indic_offset_0x0900]; + if (unlikely (u == 0x00A0)) return _(CP,x); + break; + + case 0x1: + if (0x1000 <= u && u <= 0x10A0) return indic_table[u - 0x1000 + indic_offset_0x1000]; + if (0x1700 <= u && u <= 0x17F0) return indic_table[u - 0x1700 + indic_offset_0x1700]; + if (0x1900 <= u && u <= 0x1AA0) return indic_table[u - 0x1900 + indic_offset_0x1900]; + if (0x1B00 <= u && u <= 0x1C50) return indic_table[u - 0x1B00 + indic_offset_0x1b00]; + if (0x1CD0 <= u && u <= 0x1CF8) return indic_table[u - 0x1CD0 + indic_offset_0x1cd0]; + break; + + case 0x2: + if (0x2008 <= u && u <= 0x2018) return indic_table[u - 0x2008 + indic_offset_0x2008]; + if (unlikely (u == 0x25CC)) return _(CP,x); + break; + + case 0xA: + if (0xA800 <= u && u <= 0xAAF8) return indic_table[u - 0xA800 + indic_offset_0xa800]; + if (0xABC0 <= u && u <= 0xAC00) return indic_table[u - 0xABC0 + indic_offset_0xabc0]; + break; + + case 0x10: + if (0x10A00 <= u && u <= 0x10A48) return indic_table[u - 0x10A00 + indic_offset_0x10a00]; + break; + + case 0x11: + if (0x11000 <= u && u <= 0x110C0) return indic_table[u - 0x11000 + indic_offset_0x11000]; + if (0x11100 <= u && u <= 0x11238) return indic_table[u - 0x11100 + indic_offset_0x11100]; + if (0x112B0 <= u && u <= 0x11378) return indic_table[u - 0x112B0 + indic_offset_0x112b0]; + if (0x11480 <= u && u <= 0x114E0) return indic_table[u - 0x11480 + indic_offset_0x11480]; + if (0x11580 <= u && u <= 0x115C8) return indic_table[u - 0x11580 + indic_offset_0x11580]; + if (0x11600 <= u && u <= 0x116D0) return indic_table[u - 0x11600 + indic_offset_0x11600]; + break; + + default: + break; + } return _(x,x); } @@ -830,17 +908,27 @@ hb_indic_get_categories (hb_codepoint_t u) #undef ISC_A #undef ISC_Bi +#undef ISC_BJN +#undef ISC_Ca #undef ISC_C #undef ISC_CD #undef ISC_CF #undef ISC_CHL #undef ISC_CM #undef ISC_CP -#undef ISC_CR +#undef ISC_CPR #undef ISC_CS +#undef ISC_CSR +#undef ISC_GM +#undef ISC_IS +#undef ISC_ZWJ #undef ISC_ML +#undef ISC_ZWNJ #undef ISC_N +#undef ISC_Nd +#undef ISC_NJ #undef ISC_x +#undef ISC_PK #undef ISC_RS #undef ISC_TL #undef ISC_TM @@ -852,7 +940,6 @@ hb_indic_get_categories (hb_codepoint_t u) #undef IMC_B #undef IMC_BR -#undef IMC_I #undef IMC_L #undef IMC_LR #undef IMC_x diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-indic.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-indic.cc index d6520188c58..1100b4aae28 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-indic.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-indic.cc @@ -195,9 +195,6 @@ set_indic_properties (hb_glyph_info_t &info) /* The following act more like the Bindus. */ else if (unlikely (hb_in_range<hb_codepoint_t> (u, 0x0953, 0x0954))) cat = OT_SM; - /* Cantillation marks. */ - else if (unlikely (hb_in_range<hb_codepoint_t> (u, 0xA8E0, 0xA8F1))) - cat = OT_VD; /* The following act like consonants. */ else if (unlikely (hb_in_ranges<hb_codepoint_t> (u, 0x0A72, 0x0A73, 0x1CF5, 0x1CF6))) @@ -211,12 +208,6 @@ set_indic_properties (hb_glyph_info_t &info) * For now, just treat them like tone marks. */ else if (unlikely (u == 0x1CED)) cat = OT_A; - /* The following are Visarga variants. */ - else if (unlikely (hb_in_range<hb_codepoint_t> (u, 0x1CF2, 0x1CF3))) - { - cat = OT_SM; - ASSERT_STATIC ((int) INDIC_SYLLABIC_CATEGORY_VISARGA == OT_SM); - } /* The following take marks in standalone clusters, similar to Avagraha. */ else if (unlikely (hb_in_ranges<hb_codepoint_t> (u, 0xA8F2, 0xA8F7, 0x1CE9, 0x1CEC, @@ -234,31 +225,12 @@ set_indic_properties (hb_glyph_info_t &info) } else if (unlikely (u == 0x17C6)) cat = OT_N; /* Khmer Bindu doesn't like to be repositioned. */ else if (unlikely (u == 0x17D2)) cat = OT_Coeng; /* Khmer coeng */ - else if (unlikely (u == 0x200C)) cat = OT_ZWNJ; - else if (unlikely (u == 0x200D)) cat = OT_ZWJ; - else if (unlikely (u == 0x002D || u == 0x00D7 || - hb_in_range<hb_codepoint_t> (u, 0x2010, 0x2014))) + else if (unlikely (hb_in_range<hb_codepoint_t> (u, 0x2010, 0x2011))) cat = OT_PLACEHOLDER; else if (unlikely (u == 0x25CC)) cat = OT_DOTTEDCIRCLE; - else if (unlikely (u == 0x0A71)) cat = OT_SM; /* GURMUKHI ADDAK. Move it to the end. */ else if (unlikely (u == 0xA982)) cat = OT_SM; /* Javanese repha. */ else if (unlikely (u == 0xA9BE)) cat = OT_CM2; /* Javanese medial ya. */ else if (unlikely (u == 0xA9BD)) { cat = OT_M; pos = POS_POST_C; } /* Javanese vocalic r. */ - else if (cat == OT_Repha) { - /* There are two kinds of characters marked as Repha: - * - The ones that are GenCat=Mn are already positioned visually, ie. after base. (eg. Khmer) - * - The ones that are GenCat=Lo is encoded logically, ie. beginning of syllable. (eg. Malayalam) - * - * We recategorize the first kind to look like a Nukta and attached to the base directly. - */ - if (_hb_glyph_info_get_general_category (&info) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) - cat = OT_N; - } - /* Decimal and Brahmi numbers. */ - else if (unlikely (_hb_glyph_info_get_general_category (&info) == - HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER || - hb_in_range<hb_codepoint_t> (u, 0x11052, 0x11065))) cat = OT_PLACEHOLDER; - /* @@ -1336,6 +1308,27 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan, const indic_shape_plan_t *indic_plan = (const indic_shape_plan_t *) plan->data; hb_glyph_info_t *info = buffer->info; + + /* This function relies heavily on halant glyphs. Lots of ligation + * and possibly multiplication substitutions happened prior to this + * phase, and that might have messed up our properties. Recover + * from a particular case of that where we're fairly sure that a + * class of OT_H is desired but has been lost. */ + if (indic_plan->virama_glyph) + { + unsigned int virama_glyph = indic_plan->virama_glyph; + for (unsigned int i = start; i < end; i++) + if (info[i].codepoint == virama_glyph && + _hb_glyph_info_ligated (&info[i]) && + _hb_glyph_info_multiplied (&info[i])) + { + /* This will make sure that this glyph passes is_halant_or_coeng() test. */ + info[i].indic_category() = OT_H; + _hb_glyph_info_clear_ligated_and_multiplied (&info[i]); + } + } + + /* 4. Final reordering: * * After the localized forms and basic shaping forms GSUB features have been @@ -1344,20 +1337,43 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan, * cluster. */ + bool try_pref = !!indic_plan->mask_array[PREF]; + /* Find base again */ unsigned int base; for (base = start; base < end; base++) - if (info[base].indic_position() >= POS_BASE_C) { + if (info[base].indic_position() >= POS_BASE_C) + { + if (try_pref && base + 1 < end && indic_plan->config->pref_len == 2) + { + for (unsigned int i = base + 1; i < end; i++) + if ((info[i].mask & indic_plan->mask_array[PREF]) != 0) + { + if (!(_hb_glyph_info_substituted (&info[i]) && + _hb_glyph_info_ligated_and_didnt_multiply (&info[i]))) + { + /* Ok, this was a 'pref' candidate but didn't form any. + * Base is around here... */ + base = i; + while (base < end && is_halant_or_coeng (info[base])) + base++; + info[base].indic_position() = POS_BASE_C; + + try_pref = false; + } + break; + } + } + if (start < base && info[base].indic_position() > POS_BASE_C) base--; break; } if (base == end && start < base && - info[base - 1].indic_category() != OT_ZWJ) + is_one_of (info[base - 1], FLAG (OT_ZWJ))) base--; while (start < base && - (info[base].indic_category() == OT_H || - info[base].indic_category() == OT_N)) + is_one_of (info[base], (FLAG (OT_N) | HALANT_OR_COENG_FLAGS))) base--; @@ -1383,7 +1399,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan, if (buffer->props.script != HB_SCRIPT_MALAYALAM && buffer->props.script != HB_SCRIPT_TAMIL) { while (new_pos > start && - !(is_one_of (info[new_pos], (FLAG (OT_M) | FLAG (OT_H) | FLAG (OT_Coeng))))) + !(is_one_of (info[new_pos], (FLAG (OT_M) | HALANT_OR_COENG_FLAGS)))) new_pos--; /* If we found no Halant we are done. @@ -1446,7 +1462,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan, if (start + 1 < end && info[start].indic_position() == POS_RA_TO_BECOME_REPH && ((info[start].indic_category() == OT_Repha) ^ - _hb_glyph_info_ligated (&info[start]))) + _hb_glyph_info_ligated_and_didnt_multiply (&info[start]))) { unsigned int new_reph_pos; reph_position_t reph_pos = indic_plan->config->reph_pos; @@ -1583,7 +1599,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan, * the following rules: */ - if (indic_plan->mask_array[PREF] && base + 1 < end) /* Otherwise there can't be any pre-base reordering Ra. */ + if (try_pref && base + 1 < end) /* Otherwise there can't be any pre-base reordering Ra. */ { unsigned int pref_len = indic_plan->config->pref_len; for (unsigned int i = base + 1; i < end; i++) @@ -1599,7 +1615,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan, * If pref len is longer than one, then only reorder if it ligated. If * pref len is one, only reorder if it didn't ligate with other things. */ if (_hb_glyph_info_substituted (&info[i]) && - ((pref_len == 1) ^ _hb_glyph_info_ligated (&info[i]))) + ((pref_len == 1) ^ _hb_glyph_info_ligated_and_didnt_multiply (&info[i]))) { /* * 2. Try to find a target position the same way as for pre-base matra. diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-myanmar-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-myanmar-machine.hh index bb80d7a705d..bb80d7a705d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-myanmar-machine.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-myanmar-machine.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-myanmar-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-myanmar-machine.rl index 9649a916f02..9649a916f02 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-myanmar-machine.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-myanmar-machine.rl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-myanmar.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-myanmar.cc index 149a0250dbd..ae5446a6404 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-myanmar.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-myanmar.cc @@ -177,8 +177,6 @@ set_myanmar_properties (hb_glyph_info_t &info) */ if (unlikely (hb_in_range<hb_codepoint_t> (u, 0xFE00, 0xFE0F))) cat = (indic_category_t) OT_VS; - else if (unlikely (u == 0x200C)) cat = (indic_category_t) OT_ZWNJ; - else if (unlikely (u == 0x200D)) cat = (indic_category_t) OT_ZWJ; switch (u) { diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-private.hh index 104726e8af5..3e581afa9cc 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-private.hh @@ -173,6 +173,10 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner) /* Unicode-6.0 additions */ case HB_SCRIPT_MANDAIC: + /* Unicode-7.0 additions */ + case HB_SCRIPT_MANICHAEAN: + case HB_SCRIPT_PSALTER_PAHLAVI: + /* For Arabic script, use the Arabic shaper even if no OT script tag was found. * This is because we do fallback shaping for Arabic script (and not others). */ if (planner->map.chosen_script[0] != HB_OT_TAG_DEFAULT_SCRIPT || diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-sea-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-sea-machine.hh index 86b7ae7d5ca..86b7ae7d5ca 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-sea-machine.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-sea-machine.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-sea-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-sea-machine.rl index 46140fc4d5f..46140fc4d5f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-sea-machine.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-sea-machine.rl diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-sea.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-sea.cc index 6288a90c9a9..6288a90c9a9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-sea.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-sea.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-thai.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-thai.cc index 8664eca45cd..cb9a7d93b2a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-thai.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-thai.cc @@ -330,8 +330,11 @@ preprocess_text_thai (const hb_ot_shape_plan_t *plan, if (unlikely (buffer->in_error)) return; - /* Ok, let's see... */ + /* Make Nikhahit be recognized as a mark when zeroing widths. */ unsigned int end = buffer->out_len; + _hb_glyph_info_set_general_category (&buffer->out_info[end - 2], HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK); + + /* Ok, let's see... */ unsigned int start = end - 2; while (start > 0 && IS_TONE_MARK (buffer->out_info[start - 1].codepoint)) start--; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-tibetan.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-tibetan.cc index 01465a426f8..01465a426f8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-complex-tibetan.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-complex-tibetan.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-fallback-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-fallback-private.hh index ec653513f1b..ec653513f1b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-fallback-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-fallback-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-fallback.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-fallback.cc index 5d526c3a8e8..5d526c3a8e8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-fallback.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-fallback.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-normalize-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-normalize-private.hh index c744e26451d..c744e26451d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-normalize-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-normalize-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-normalize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-normalize.cc index 2a6a4390030..2a6a4390030 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-normalize.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-normalize.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-private.hh index 54ac2c3cf7c..54ac2c3cf7c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape.cc index 3080a1d03db..42f68ab2907 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape.cc @@ -452,26 +452,42 @@ hb_ot_substitute (hb_ot_shape_context_t *c) /* Position */ static inline void -zero_mark_widths_by_unicode (hb_buffer_t *buffer) +adjust_mark_offsets (hb_glyph_position_t *pos) +{ + pos->x_offset -= pos->x_advance; + pos->y_offset -= pos->y_advance; +} + +static inline void +zero_mark_width (hb_glyph_position_t *pos) +{ + pos->x_advance = 0; + pos->y_advance = 0; +} + +static inline void +zero_mark_widths_by_unicode (hb_buffer_t *buffer, bool adjust_offsets) { unsigned int count = buffer->len; for (unsigned int i = 0; i < count; i++) if (_hb_glyph_info_get_general_category (&buffer->info[i]) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) { - buffer->pos[i].x_advance = 0; - buffer->pos[i].y_advance = 0; + if (adjust_offsets) + adjust_mark_offsets (&buffer->pos[i]); + zero_mark_width (&buffer->pos[i]); } } static inline void -zero_mark_widths_by_gdef (hb_buffer_t *buffer) +zero_mark_widths_by_gdef (hb_buffer_t *buffer, bool adjust_offsets) { unsigned int count = buffer->len; for (unsigned int i = 0; i < count; i++) if (_hb_glyph_info_is_mark (&buffer->info[i])) { - buffer->pos[i].x_advance = 0; - buffer->pos[i].y_advance = 0; + if (adjust_offsets) + adjust_mark_offsets (&buffer->pos[i]); + zero_mark_width (&buffer->pos[i]); } } @@ -501,16 +517,28 @@ hb_ot_position_complex (hb_ot_shape_context_t *c) { bool ret = false; unsigned int count = c->buffer->len; + bool has_positioning = hb_ot_layout_has_positioning (c->face); + /* If the font has no GPOS, AND, no fallback positioning will + * happen, AND, direction is forward, then when zeroing mark + * widths, we shift the mark with it, such that the mark + * is positioned hanging over the previous glyph. When + * direction is backward we don't shift and it will end up + * hanging over the next glyph after the final reordering. + * If fallback positinoing happens or GPOS is present, we don't + * care. + */ + bool adjust_offsets_when_zeroing = !(has_positioning || c->plan->shaper->fallback_position || + HB_DIRECTION_IS_BACKWARD (c->buffer->props.direction)); switch (c->plan->shaper->zero_width_marks) { case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_EARLY: - zero_mark_widths_by_gdef (c->buffer); + zero_mark_widths_by_gdef (c->buffer, adjust_offsets_when_zeroing); break; /* Not currently used for any shaper: case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_EARLY: - zero_mark_widths_by_unicode (c->buffer); + zero_mark_widths_by_unicode (c->buffer, adjust_offsets_when_zeroing); break; */ @@ -521,7 +549,7 @@ hb_ot_position_complex (hb_ot_shape_context_t *c) break; } - if (hb_ot_layout_has_positioning (c->face)) + if (has_positioning) { hb_glyph_info_t *info = c->buffer->info; hb_glyph_position_t *pos = c->buffer->pos; @@ -550,11 +578,11 @@ hb_ot_position_complex (hb_ot_shape_context_t *c) switch (c->plan->shaper->zero_width_marks) { case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE: - zero_mark_widths_by_unicode (c->buffer); + zero_mark_widths_by_unicode (c->buffer, adjust_offsets_when_zeroing); break; case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE: - zero_mark_widths_by_gdef (c->buffer); + zero_mark_widths_by_gdef (c->buffer, adjust_offsets_when_zeroing); break; default: diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape.h index afe6fe9618c..1402f54acc5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-shape.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-shape.h @@ -24,31 +24,30 @@ * Red Hat Author(s): Behdad Esfahbod */ +#ifndef HB_OT_H_IN +#error "Include <hb-ot.h> instead." +#endif + #ifndef HB_OT_SHAPE_H #define HB_OT_SHAPE_H -#define HB_OT_SHAPE_H_IN #include "hb.h" -#include "hb-ot-layout.h" -#include "hb-ot-tag.h" - HB_BEGIN_DECLS /* TODO port to shape-plan / set. */ void hb_ot_shape_glyphs_closure (hb_font_t *font, - hb_buffer_t *buffer, - const hb_feature_t *features, - unsigned int num_features, - hb_set_t *glyphs); + hb_buffer_t *buffer, + const hb_feature_t *features, + unsigned int num_features, + hb_set_t *glyphs); void hb_ot_shape_plan_collect_lookups (hb_shape_plan_t *shape_plan, - hb_tag_t table_tag, - hb_set_t *lookup_indexes /* OUT */); + hb_tag_t table_tag, + hb_set_t *lookup_indexes /* OUT */); HB_END_DECLS -#undef HB_OT_SHAPE_H_IN #endif /* HB_OT_SHAPE_H */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-tag.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-tag.cc index 5594ef5074a..5594ef5074a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-tag.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-tag.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-tag.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-tag.h index 1bf12ab3c09..1bf12ab3c09 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot-tag.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot-tag.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot.h index 47c92a58e4b..47c92a58e4b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ot.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ot.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-private.hh index e08c1fe98e5..ccebd1cac2e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-private.hh @@ -54,23 +54,77 @@ #include <stdarg.h> +/* Compiler attributes */ -/* Essentials */ -#ifndef NULL -# define NULL ((void *) 0) +#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__) +#define _HB_BOOLEAN_EXPR(expr) ((expr) ? 1 : 0) +#define likely(expr) (__builtin_expect (_HB_BOOLEAN_EXPR(expr), 1)) +#define unlikely(expr) (__builtin_expect (_HB_BOOLEAN_EXPR(expr), 0)) +#else +#define likely(expr) (expr) +#define unlikely(expr) (expr) #endif +#ifndef __GNUC__ +#undef __attribute__ +#define __attribute__(x) +#endif + +#if __GNUC__ >= 3 +#define HB_PURE_FUNC __attribute__((pure)) +#define HB_CONST_FUNC __attribute__((const)) +#define HB_PRINTF_FUNC(format_idx, arg_idx) __attribute__((__format__ (__printf__, format_idx, arg_idx))) +#else +#define HB_PURE_FUNC +#define HB_CONST_FUNC +#define HB_PRINTF_FUNC(format_idx, arg_idx) +#endif +#if __GNUC__ >= 4 +#define HB_UNUSED __attribute__((unused)) +#else +#define HB_UNUSED +#endif + +#ifndef HB_INTERNAL +# if !defined(__MINGW32__) && !defined(__CYGWIN__) +# define HB_INTERNAL __attribute__((__visibility__("hidden"))) +# else +# define HB_INTERNAL +# endif +#endif + +#if (defined(__WIN32__) && !defined(__WINE__)) || defined(_MSC_VER) +#define snprintf _snprintf +#endif + +#ifdef _MSC_VER +#undef inline +#define inline __inline +#endif + +#ifdef __STRICT_ANSI__ +#undef inline +#define inline __inline__ +#endif + +#if __GNUC__ >= 3 +#define HB_FUNC __PRETTY_FUNCTION__ +#elif defined(_MSC_VER) +#define HB_FUNC __FUNCSIG__ +#else +#define HB_FUNC __func__ +#endif -/* Void! */ -struct _hb_void_t {}; -typedef const _hb_void_t &hb_void_t; -#define HB_VOID (* (const _hb_void_t *) NULL) /* Basics */ +#ifndef NULL +# define NULL ((void *) 0) +#endif + #undef MIN template <typename Type> static inline Type MIN (const Type &a, const Type &b) { return a < b ? a : b; } @@ -92,7 +146,7 @@ static inline unsigned int ARRAY_LENGTH (const Type (&)[n]) { return n; } #define HB_STMT_START do #define HB_STMT_END while (0) -#define _ASSERT_STATIC1(_line, _cond) typedef int _static_assert_on_line_##_line##_failed[(_cond)?1:-1] +#define _ASSERT_STATIC1(_line, _cond) HB_UNUSED typedef int _static_assert_on_line_##_line##_failed[(_cond)?1:-1] #define _ASSERT_STATIC0(_line, _cond) _ASSERT_STATIC1 (_line, (_cond)) #define ASSERT_STATIC(_cond) _ASSERT_STATIC0 (__LINE__, (_cond)) @@ -139,7 +193,7 @@ ASSERT_STATIC (sizeof (hb_var_int_t) == 4); /* Check _assertion in a method environment */ #define _ASSERT_POD1(_line) \ - inline void _static_assertion_on_line_##_line (void) const \ + HB_UNUSED inline void _static_assertion_on_line_##_line (void) const \ { _ASSERT_INSTANCE_POD1 (_line, *this); /* Make sure it's POD. */ } # define _ASSERT_POD0(_line) _ASSERT_POD1 (_line) # define ASSERT_POD() _ASSERT_POD0 (__LINE__) @@ -148,68 +202,10 @@ ASSERT_STATIC (sizeof (hb_var_int_t) == 4); /* Misc */ - -#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__) -#define _HB_BOOLEAN_EXPR(expr) ((expr) ? 1 : 0) -#define likely(expr) (__builtin_expect (_HB_BOOLEAN_EXPR(expr), 1)) -#define unlikely(expr) (__builtin_expect (_HB_BOOLEAN_EXPR(expr), 0)) -#else -#define likely(expr) (expr) -#define unlikely(expr) (expr) -#endif - -#ifndef __GNUC__ -#undef __attribute__ -#define __attribute__(x) -#endif - -#if __GNUC__ >= 3 -#define HB_PURE_FUNC __attribute__((pure)) -#define HB_CONST_FUNC __attribute__((const)) -#define HB_PRINTF_FUNC(format_idx, arg_idx) __attribute__((__format__ (__printf__, format_idx, arg_idx))) -#else -#define HB_PURE_FUNC -#define HB_CONST_FUNC -#define HB_PRINTF_FUNC(format_idx, arg_idx) -#endif -#if __GNUC__ >= 4 -#define HB_UNUSED __attribute__((unused)) -#else -#define HB_UNUSED -#endif - -#ifndef HB_INTERNAL -# if !defined(__MINGW32__) && !defined(__CYGWIN__) -# define HB_INTERNAL __attribute__((__visibility__("hidden"))) -# else -# define HB_INTERNAL -# endif -#endif - - -#if (defined(__WIN32__) && !defined(__WINE__)) || defined(_MSC_VER) -#define snprintf _snprintf -#endif - -#ifdef _MSC_VER -#undef inline -#define inline __inline -#endif - -#ifdef __STRICT_ANSI__ -#undef inline -#define inline __inline__ -#endif - - -#if __GNUC__ >= 3 -#define HB_FUNC __PRETTY_FUNCTION__ -#elif defined(_MSC_VER) -#define HB_FUNC __FUNCSIG__ -#else -#define HB_FUNC __func__ -#endif - +/* Void! */ +struct _hb_void_t {}; +typedef const _hb_void_t &hb_void_t; +#define HB_VOID (* (const _hb_void_t *) NULL) /* Return the number of 1 bits in mask. */ static inline HB_CONST_FUNC unsigned int @@ -276,7 +272,7 @@ typedef int (*hb_compare_func_t) (const void *, const void *); #define HB_PREALLOCED_ARRAY_INIT {0} -template <typename Type, unsigned int StaticSize> +template <typename Type, unsigned int StaticSize=16> struct hb_prealloced_array_t { unsigned int len; @@ -357,14 +353,14 @@ struct hb_prealloced_array_t return NULL; } - inline void sort (void) + inline void qsort (void) { - qsort (array, len, sizeof (Type), (hb_compare_func_t) Type::cmp); + ::qsort (array, len, sizeof (Type), (hb_compare_func_t) Type::cmp); } - inline void sort (unsigned int start, unsigned int end) + inline void qsort (unsigned int start, unsigned int end) { - qsort (array + start, end - start, sizeof (Type), (hb_compare_func_t) Type::cmp); + ::qsort (array + start, end - start, sizeof (Type), (hb_compare_func_t) Type::cmp); } template <typename T> @@ -387,12 +383,11 @@ struct hb_prealloced_array_t } }; -#define HB_AUTO_ARRAY_PREALLOCED 16 template <typename Type> -struct hb_auto_array_t : hb_prealloced_array_t <Type, HB_AUTO_ARRAY_PREALLOCED> +struct hb_auto_array_t : hb_prealloced_array_t <Type> { - hb_auto_array_t (void) { hb_prealloced_array_t<Type, HB_AUTO_ARRAY_PREALLOCED>::init (); } - ~hb_auto_array_t (void) { hb_prealloced_array_t<Type, HB_AUTO_ARRAY_PREALLOCED>::finish (); } + hb_auto_array_t (void) { hb_prealloced_array_t<Type>::init (); } + ~hb_auto_array_t (void) { hb_prealloced_array_t<Type>::finish (); } }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-set-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-set-private.hh index 705f554ce69..705f554ce69 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-set-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-set-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-set.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-set.cc index 59a0af46ed4..59a0af46ed4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-set.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-set.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-set.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-set.h index bafdae96333..bafdae96333 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-set.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-set.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shape-plan-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shape-plan-private.hh index 607da5e7791..607da5e7791 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shape-plan-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shape-plan-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shape-plan.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shape-plan.cc index e354f291763..5ffc6b1362e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shape-plan.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shape-plan.cc @@ -104,8 +104,6 @@ hb_shape_plan_create (hb_face_t *face, unsigned int num_user_features, const char * const *shaper_list) { - assert (props->direction != HB_DIRECTION_INVALID); - hb_shape_plan_t *shape_plan; hb_feature_t *features = NULL; @@ -120,6 +118,8 @@ hb_shape_plan_create (hb_face_t *face, return hb_shape_plan_get_empty (); } + assert (props->direction != HB_DIRECTION_INVALID); + hb_face_make_immutable (face); shape_plan->default_shaper_list = shaper_list == NULL; shape_plan->face_unsafe = face; diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shape-plan.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shape-plan.h index 8f54552f90b..8f54552f90b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shape-plan.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shape-plan.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shape.cc index c1b752405e1..c1b752405e1 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shape.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shape.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shape.h index 10a35cb517e..10a35cb517e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shape.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shape.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shaper-impl-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shaper-impl-private.hh index 7844081e95b..7844081e95b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shaper-impl-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shaper-impl-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shaper-list.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shaper-list.hh index 6c537d49215..6c537d49215 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shaper-list.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shaper-list.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shaper-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shaper-private.hh index 29c4493943d..29c4493943d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shaper-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shaper-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shaper.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shaper.cc index 44f718aa702..44f718aa702 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-shaper.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-shaper.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ucdn.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ucdn.cc index 7d24559de67..5b53821f923 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-ucdn.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-ucdn.cc @@ -125,6 +125,29 @@ static const hb_script_t ucdn_script_translate[] = HB_SCRIPT_SORA_SOMPENG, HB_SCRIPT_TAKRI, HB_SCRIPT_UNKNOWN, + HB_SCRIPT_BASSA_VAH, + HB_SCRIPT_CAUCASIAN_ALBANIAN, + HB_SCRIPT_DUPLOYAN, + HB_SCRIPT_ELBASAN, + HB_SCRIPT_GRANTHA, + HB_SCRIPT_KHOJKI, + HB_SCRIPT_KHUDAWADI, + HB_SCRIPT_LINEAR_A, + HB_SCRIPT_MAHAJANI, + HB_SCRIPT_MANICHAEAN, + HB_SCRIPT_MENDE_KIKAKUI, + HB_SCRIPT_MODI, + HB_SCRIPT_MRO, + HB_SCRIPT_NABATAEAN, + HB_SCRIPT_OLD_NORTH_ARABIAN, + HB_SCRIPT_OLD_PERMIC, + HB_SCRIPT_PAHAWH_HMONG, + HB_SCRIPT_PALMYRENE, + HB_SCRIPT_PAU_CIN_HAU, + HB_SCRIPT_PSALTER_PAHLAVI, + HB_SCRIPT_SIDDHAM, + HB_SCRIPT_TIRHUTA, + HB_SCRIPT_WARANG_CITI, }; static hb_unicode_combining_class_t diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-unicode-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-unicode-private.hh index 991130fa14e..583a19702cc 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-unicode-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-unicode-private.hh @@ -130,46 +130,39 @@ HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS_SIMPLE /* Default_Ignorable codepoints: * - * Note that as of Oct 2012 (Unicode 6.2), U+180E MONGOLIAN VOWEL SEPARATOR - * is NOT Default_Ignorable, but it really behaves in a way that it should - * be. That has been reported to the Unicode Technical Committee for - * consideration. As such, we include it here, since Uniscribe removes it. - * It *is* in Unicode 6.3 however. U+061C ARABIC LETTER MARK from Unicode - * 6.3 is also added manually. The new Unicode 6.3 bidi formatting - * characters are encoded in a block that was Default_Ignorable already. - * * Note: While U+115F, U+1160, U+3164 and U+FFA0 are Default_Ignorable, * we do NOT want to hide them, as the way Uniscribe has implemented them * is with regular spacing glyphs, and that's the way fonts are made to work. * As such, we make exceptions for those four. * - * Gathered from: - * http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:DI:]&abb=on&ucd=on&esc=on - * - * Last updated to the page with the following versions: - * Version 3.6; ICU version: 50.0.1.0; Unicode version: 6.1.0.0 - * - * 4,167 Code Points - * - * [\u00AD\u034F\u115F\u1160\u17B4\u17B5\u180B-\u180D\u200B-\u200F\u202A-\u202E\u2060-\u206F\u3164\uFE00-\uFE0F\uFEFF\uFFA0\uFFF0-\uFFF8\U0001D173-\U0001D17A\U000E0000-\U000E0FFF] - * - * 00AD ;SOFT HYPHEN - * 034F ;COMBINING GRAPHEME JOINER - * #115F ;HANGUL CHOSEONG FILLER - * #1160 ;HANGUL JUNGSEONG FILLER - * 17B4 ;KHMER VOWEL INHERENT AQ - * 17B5 ;KHMER VOWEL INHERENT AA - * 180B..180D ;MONGOLIAN FREE VARIATION SELECTOR THREE - * 200B..200F ;RIGHT-TO-LEFT MARK - * 202A..202E ;RIGHT-TO-LEFT OVERRIDE - * 2060..206F ;NOMINAL DIGIT SHAPES - * #3164 ;HANGUL FILLER - * FE00..FE0F ;VARIATION SELECTOR-16 - * FEFF ;ZERO WIDTH NO-BREAK SPACE - * #FFA0 ;HALFWIDTH HANGUL FILLER - * FFF0..FFF8 ;<unassigned-FFF8> - * 1D173..1D17A ;MUSICAL SYMBOL END PHRASE - * E0000..E0FFF ;<unassigned-E0FFF> + * Unicode 7.0: + * $ grep '; Default_Ignorable_Code_Point ' DerivedCoreProperties.txt | sed 's/;.*#/#/' + * 00AD # Cf SOFT HYPHEN + * 034F # Mn COMBINING GRAPHEME JOINER + * 061C # Cf ARABIC LETTER MARK + * 115F..1160 # Lo [2] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER + * 17B4..17B5 # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA + * 180B..180D # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE + * 180E # Cf MONGOLIAN VOWEL SEPARATOR + * 200B..200F # Cf [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK + * 202A..202E # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE + * 2060..2064 # Cf [5] WORD JOINER..INVISIBLE PLUS + * 2065 # Cn <reserved-2065> + * 2066..206F # Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES + * 3164 # Lo HANGUL FILLER + * FE00..FE0F # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 + * FEFF # Cf ZERO WIDTH NO-BREAK SPACE + * FFA0 # Lo HALFWIDTH HANGUL FILLER + * FFF0..FFF8 # Cn [9] <reserved-FFF0>..<reserved-FFF8> + * 1BCA0..1BCA3 # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP + * 1D173..1D17A # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE + * E0000 # Cn <reserved-E0000> + * E0001 # Cf LANGUAGE TAG + * E0002..E001F # Cn [30] <reserved-E0002>..<reserved-E001F> + * E0020..E007F # Cf [96] TAG SPACE..CANCEL TAG + * E0080..E00FF # Cn [128] <reserved-E0080>..<reserved-E00FF> + * E0100..E01EF # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 + * E01F0..E0FFF # Cn [3600] <reserved-E01F0>..<reserved-E0FFF> */ inline hb_bool_t is_default_ignorable (hb_codepoint_t ch) @@ -197,7 +190,8 @@ HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS_SIMPLE { /* Other planes */ switch (plane) { - case 0x01: return hb_in_range<hb_codepoint_t> (ch, 0x0001D173, 0x0001D17A); + case 0x01: return hb_in_ranges<hb_codepoint_t> (ch, 0x0001BCA0, 0x0001BCA3, + 0x0001D173, 0x0001D17A); case 0x0E: return hb_in_range<hb_codepoint_t> (ch, 0x000E0000, 0x000E0FFF); default: return false; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-unicode.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-unicode.cc index 84e5c06fd35..84e5c06fd35 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-unicode.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-unicode.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-unicode.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-unicode.h index 1c4e097b92d..1c4e097b92d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-unicode.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-unicode.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-uniscribe.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-uniscribe.cc index 6571448872a..f6994159f62 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-uniscribe.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-uniscribe.cc @@ -631,7 +631,7 @@ _hb_uniscribe_shape (hb_shape_plan_t *shape_plan, event->start = false; event->feature = feature; } - feature_events.sort (); + feature_events.qsort (); /* Add a strategic final event. */ { active_feature_t feature; @@ -663,7 +663,7 @@ _hb_uniscribe_shape (hb_shape_plan_t *shape_plan, unsigned int offset = feature_records.len; - active_features.sort (); + active_features.qsort (); for (unsigned int j = 0; j < active_features.len; j++) { if (!j || active_features[j].rec.tagFeature != feature_records[feature_records.len - 1].tagFeature) diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-uniscribe.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-uniscribe.h index 51887c8794b..51887c8794b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-uniscribe.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-uniscribe.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-utf-private.hh b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-utf-private.hh index b9a6519d28e..b9a6519d28e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-utf-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-utf-private.hh diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-version.h.in b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-version.h.in index 43634f91ce8..2517160d18b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-version.h.in +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-version.h.in @@ -42,8 +42,8 @@ HB_BEGIN_DECLS #define HB_VERSION_STRING "@HB_VERSION@" -#define HB_VERSION_CHECK(major,minor,micro) \ - ((major)*10000+(minor)*100+(micro) >= \ +#define HB_VERSION_ATLEAST(major,minor,micro) \ + ((major)*10000+(minor)*100+(micro) <= \ HB_VERSION_MAJOR*10000+HB_VERSION_MINOR*100+HB_VERSION_MICRO) @@ -56,9 +56,9 @@ const char * hb_version_string (void); hb_bool_t -hb_version_check (unsigned int major, - unsigned int minor, - unsigned int micro); +hb_version_atleast (unsigned int major, + unsigned int minor, + unsigned int micro); HB_END_DECLS diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-warning.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-warning.cc index e0f88e2d4ad..e0f88e2d4ad 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb-warning.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb-warning.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb.h b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb.h index c5a938a3818..c5a938a3818 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/hb.h +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/hb.h diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/main.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/main.cc index 6ba636e1a61..f9708cc948e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/main.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/main.cc @@ -151,8 +151,8 @@ main (int argc, char **argv) for (int n_feature = 0; n_feature < num_features; n_feature++) { const Feature &feature = g.get_feature (n_feature); int num_lookups = feature.get_lookup_count (); - printf (" Feature %2d of %2d: %.4s\n", n_feature, num_features, - (const char *)g.get_feature_tag(n_feature)); + printf (" Feature %2d of %2d: %c%c%c%c\n", n_feature, num_features, + HB_UNTAG(g.get_feature_tag(n_feature))); printf (" %d lookup(s) found in feature\n", num_lookups); for (int n_lookup = 0; n_lookup < num_lookups; n_lookup++) { diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/test-buffer-serialize.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/test-buffer-serialize.cc index 18c46e9524b..18c46e9524b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/test-buffer-serialize.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/test-buffer-serialize.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/test-size-params.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/test-size-params.cc index 35d9e3c8e25..35d9e3c8e25 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/test-size-params.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/test-size-params.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/test-would-substitute.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/test-would-substitute.cc index 8ea87cdf397..8ea87cdf397 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/test-would-substitute.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/test-would-substitute.cc diff --git a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/test.cc b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/test.cc index a8fe046f34c..a8fe046f34c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-0.9.29/src/test.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-0.9.30/src/test.cc diff --git a/Build/source/libs/harfbuzz/include/Makefile.in b/Build/source/libs/harfbuzz/include/Makefile.in index 37e6c3fd131..1b9e1edca05 100644 --- a/Build/source/libs/harfbuzz/include/Makefile.in +++ b/Build/source/libs/harfbuzz/include/Makefile.in @@ -118,6 +118,7 @@ am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ +AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac index 1e2ff2eac6e..0d22b514761 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.29]) +m4_define([harfbuzz_version], [0.9.30]) |