From f4b76f9ebfdadf174da0ada9d6d48c71e40bf47d Mon Sep 17 00:00:00 2001 From: Akira Kakuto Date: Tue, 12 Jan 2016 02:51:24 +0000 Subject: harfbuzz 1.1.3 git-svn-id: svn://tug.org/texlive/trunk@39361 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/libs/README | 2 +- Build/source/libs/harfbuzz/ChangeLog | 6 + Build/source/libs/harfbuzz/Makefile.am | 1 + Build/source/libs/harfbuzz/Makefile.in | 1 + Build/source/libs/harfbuzz/configure | 22 +- .../libs/harfbuzz/harfbuzz-src-PATCHES/ChangeLog | 5 + .../libs/harfbuzz/harfbuzz-src-PATCHES/TL-Changes | 2 +- Build/source/libs/harfbuzz/harfbuzz-src/BUILD.md | 10 +- Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog | 2525 ++++++++++++++------ Build/source/libs/harfbuzz/harfbuzz-src/NEWS | 29 + .../source/libs/harfbuzz/harfbuzz-src/configure.ac | 2 +- .../libs/harfbuzz/harfbuzz-src/src/Makefile.am | 10 +- .../harfbuzz-src/src/check-header-guards.sh | 5 +- .../harfbuzz/harfbuzz-src/src/gen-indic-table.py | 1 + .../harfbuzz/harfbuzz-src/src/hb-atomic-private.hh | 25 + .../harfbuzz/harfbuzz-src/src/hb-buffer-private.hh | 18 + .../harfbuzz-src/src/hb-buffer-serialize.cc | 88 +- .../libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc | 393 ++- .../libs/harfbuzz/harfbuzz-src/src/hb-buffer.h | 154 +- .../libs/harfbuzz/harfbuzz-src/src/hb-common.cc | 43 +- .../libs/harfbuzz/harfbuzz-src/src/hb-common.h | 15 +- .../libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc | 50 +- .../harfbuzz/harfbuzz-src/src/hb-font-private.hh | 41 +- .../libs/harfbuzz/harfbuzz-src/src/hb-font.cc | 102 +- .../libs/harfbuzz/harfbuzz-src/src/hb-font.h | 72 +- .../source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc | 21 + .../harfbuzz-src/src/hb-open-type-private.hh | 5 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc | 62 +- .../harfbuzz/harfbuzz-src/src/hb-ot-head-table.hh | 4 +- .../src/hb-ot-layout-common-private.hh | 3 + .../harfbuzz-src/src/hb-ot-layout-gpos-table.hh | 2 +- .../src/hb-ot-layout-gsubgpos-private.hh | 12 +- .../harfbuzz-src/src/hb-ot-layout-private.hh | 6 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc | 28 +- .../harfbuzz/harfbuzz-src/src/hb-ot-map-private.hh | 3 +- .../harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh | 105 + .../harfbuzz-src/src/hb-ot-shape-complex-arabic.cc | 41 +- .../src/hb-ot-shape-complex-default.cc | 2 +- .../src/hb-ot-shape-complex-indic-private.hh | 40 +- .../src/hb-ot-shape-complex-indic-table.cc | 372 +-- .../harfbuzz-src/src/hb-ot-shape-complex-indic.cc | 53 +- .../src/hb-ot-shape-complex-myanmar.cc | 4 + .../src/hb-ot-shape-complex-private.hh | 4 +- .../harfbuzz-src/src/hb-ot-shape-complex-thai.cc | 2 +- .../src/hb-ot-shape-complex-tibetan.cc | 2 +- .../harfbuzz-src/src/hb-ot-shape-complex-use.cc | 22 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-tag.cc | 30 +- .../libs/harfbuzz/harfbuzz-src/src/hb-private.hh | 2 + .../libs/harfbuzz/harfbuzz-src/src/hb-shape.cc | 10 +- .../harfbuzz/harfbuzz-src/src/hb-shaper-list.hh | 3 + .../libs/harfbuzz/harfbuzz-src/src/hb-unicode.h | 16 + .../libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc | 4 +- .../source/libs/harfbuzz/harfbuzz-src/src/test.cc | 2 +- Build/source/libs/harfbuzz/version.ac | 2 +- 54 files changed, 3231 insertions(+), 1253 deletions(-) create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh (limited to 'Build/source/libs') diff --git a/Build/source/libs/README b/Build/source/libs/README index f5c05e3b165..cb8c9661453 100644 --- a/Build/source/libs/README +++ b/Build/source/libs/README @@ -24,7 +24,7 @@ gmp 6.1.0 - checked 28dec15 graphite2 1.3.3 - checked 27sep15 http://sourceforge.net/projects/silgraphite/files/graphite2/ -harfbuzz 1.1.2 - checked 28dec15 +harfbuzz 1.1.3 - checked 12Jan16 http://www.freedesktop.org/software/harfbuzz/release/ icu 56.1 (release) - checked 8oct15 diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog index 3f260cf530e..54466c685b0 100644 --- a/Build/source/libs/harfbuzz/ChangeLog +++ b/Build/source/libs/harfbuzz/ChangeLog @@ -1,3 +1,9 @@ +2016-01-12 Akira Kakuto + + Import harfbuzz-1.1.3. + * Makefile.am: Add hb-ot-os2-table.hh. + * version.ac: Adjusted. + 2015-12-28 Akira Kakuto Import harfbuzz-1.1.2. diff --git a/Build/source/libs/harfbuzz/Makefile.am b/Build/source/libs/harfbuzz/Makefile.am index eab4d365a76..058368caa41 100644 --- a/Build/source/libs/harfbuzz/Makefile.am +++ b/Build/source/libs/harfbuzz/Makefile.am @@ -51,6 +51,7 @@ libharfbuzz_a_SOURCES = \ @HARFBUZZ_TREE@/src/hb-ot-hmtx-table.hh \ @HARFBUZZ_TREE@/src/hb-ot-maxp-table.hh \ @HARFBUZZ_TREE@/src/hb-ot-name-table.hh \ + @HARFBUZZ_TREE@/src/hb-ot-os2-table.hh \ @HARFBUZZ_TREE@/src/hb-ot-tag.cc \ @HARFBUZZ_TREE@/src/hb-private.hh \ @HARFBUZZ_TREE@/src/hb-set-private.hh \ diff --git a/Build/source/libs/harfbuzz/Makefile.in b/Build/source/libs/harfbuzz/Makefile.in index 35811728ceb..277f4593c1c 100644 --- a/Build/source/libs/harfbuzz/Makefile.in +++ b/Build/source/libs/harfbuzz/Makefile.in @@ -664,6 +664,7 @@ libharfbuzz_a_SOURCES = @HARFBUZZ_TREE@/src/hb-atomic-private.hh \ @HARFBUZZ_TREE@/src/hb-ot-hmtx-table.hh \ @HARFBUZZ_TREE@/src/hb-ot-maxp-table.hh \ @HARFBUZZ_TREE@/src/hb-ot-name-table.hh \ + @HARFBUZZ_TREE@/src/hb-ot-os2-table.hh \ @HARFBUZZ_TREE@/src/hb-ot-tag.cc \ @HARFBUZZ_TREE@/src/hb-private.hh \ @HARFBUZZ_TREE@/src/hb-set-private.hh \ diff --git a/Build/source/libs/harfbuzz/configure b/Build/source/libs/harfbuzz/configure index 97d492c4a33..990ac5dbf0f 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) 1.1.2. +# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 1.1.3. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='harfbuzz (TeX Live)' PACKAGE_TARNAME='harfbuzz--tex-live-' -PACKAGE_VERSION='1.1.2' -PACKAGE_STRING='harfbuzz (TeX Live) 1.1.2' +PACKAGE_VERSION='1.1.3' +PACKAGE_STRING='harfbuzz (TeX Live) 1.1.3' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1312,7 +1312,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) 1.1.2 to adapt to many kinds of systems. +\`configure' configures harfbuzz (TeX Live) 1.1.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1383,7 +1383,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of harfbuzz (TeX Live) 1.1.2:";; + short | recursive ) echo "Configuration of harfbuzz (TeX Live) 1.1.3:";; esac cat <<\_ACEOF @@ -1490,7 +1490,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -harfbuzz (TeX Live) configure 1.1.2 +harfbuzz (TeX Live) configure 1.1.3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2080,7 +2080,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by harfbuzz (TeX Live) $as_me 1.1.2, which was +It was created by harfbuzz (TeX Live) $as_me 1.1.3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4003,7 +4003,7 @@ fi # Define the identity of the package. PACKAGE='harfbuzz--tex-live-' - VERSION='1.1.2' + VERSION='1.1.3' cat >>confdefs.h <<_ACEOF @@ -4207,7 +4207,7 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags HB_VERSION_MAJOR=1 HB_VERSION_MINOR=0 HB_VERSION_MICRO=4 -HB_VERSION=1.1.2 +HB_VERSION=1.1.3 ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -6866,7 +6866,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 1.1.2, which was +This file was extended by harfbuzz (TeX Live) $as_me 1.1.3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -6932,7 +6932,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 1.1.2 +harfbuzz (TeX Live) config.status 1.1.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/libs/harfbuzz/harfbuzz-src-PATCHES/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-src-PATCHES/ChangeLog index 6cc48e250a5..c0434328266 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src-PATCHES/ChangeLog +++ b/Build/source/libs/harfbuzz/harfbuzz-src-PATCHES/ChangeLog @@ -1,3 +1,8 @@ +2016-01-12 Akira Kakuto + + Imported harfbuzz-1.1.3 source tree from: + http://www.freedesktop.org/software/harfbuzz/release/ + 2015-12-28 Akira Kakuto Imported harfbuzz-1.1.2 source tree from: diff --git a/Build/source/libs/harfbuzz/harfbuzz-src-PATCHES/TL-Changes b/Build/source/libs/harfbuzz/harfbuzz-src-PATCHES/TL-Changes index 8ad66250b35..817d2eeed7b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src-PATCHES/TL-Changes +++ b/Build/source/libs/harfbuzz/harfbuzz-src-PATCHES/TL-Changes @@ -1,4 +1,4 @@ -Changes applied to the harfbuzz-1.1.2/ tree as obtained from: +Changes applied to the harfbuzz-1.1.3/ tree as obtained from: http://www.freedesktop.org/software/harfbuzz/release/ Removed: diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/BUILD.md b/Build/source/libs/harfbuzz/harfbuzz-src/BUILD.md index 7f4d4bca7b0..e9d7d4d5da3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/BUILD.md +++ b/Build/source/libs/harfbuzz/harfbuzz-src/BUILD.md @@ -6,9 +6,12 @@ Cairo, and GLib. For example, on Ubuntu / Debian, you would do: whereas on Fedora, RHEL, CentOS, and other Red Hat based systems you would do: * sudo yum install gcc gcc-c++ freetype-devel glib2-devel cairo-devel -or using MacPorts: +on the Mac, using MacPorts: * sudo port install freetype glib2 cairo +or using Homebrew: +* brew install freetype glib cairo + If you are using a tarball, you can now proceed to running configure and make as with any other standard package. That should leave you with a shared library in src/, and a few utility programs including hb-view and hb-shape @@ -21,5 +24,8 @@ on Ubuntu / Debian: and on Fedora, RHEL, CentOS: * sudo yum install autoconf automake libtool pkgconfig ragel gtk-doc -or using MacPorts: +on the Mac, using MacPorts: * sudo port install autoconf automake libtool pkgconfig ragel gtk-doc + +or using Homebrew: +* brew port install autoconf automake libtool pkgconfig ragel gtk-doc diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog index 1d34c693294..22424f26fdc 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog +++ b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog @@ -1,6 +1,1015 @@ +commit 97624d9244de0fdb9c03f60e03fe242028efa8a1 +Author: Behdad Esfahbod +Date: Mon Jan 11 12:58:45 2016 +0000 + + [docs] Minor fixes. + + src/hb-buffer.h | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +commit a39ff95fce39226e80850ff251cb34a7aad12bd7 +Author: Behdad Esfahbod +Date: Mon Jan 11 12:28:37 2016 +0000 + + [coretext] Speed up CoreText font fallback + + Fixes https://code.google.com/p/chromium/issues/detail?id=547912 + + src/hb-coretext.cc | 45 ++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 40 insertions(+), 5 deletions(-) + +commit 5afebbdcb2dab0e9a42d580df629d8e60b50d2f9 +Author: Behdad Esfahbod +Date: Thu Jan 7 22:53:59 2016 +0000 + + Add Homebrew build instructions + + BUILD.md | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit e8a27d79476a5d7a83cf2287d92ca291257546f4 +Author: Behdad Esfahbod +Date: Thu Jan 7 22:52:16 2016 +0000 + + Don't build hb-fuzzer in "make", only "make check" + + test/fuzzing/Makefile.am | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 25671466d245449187f8ab17e1a233f1d087d5ed +Author: Behdad Esfahbod +Date: Thu Jan 7 19:11:41 2016 +0000 + + Add 9 reserved entries to hb_font_extents_t + + Might add italic-angle, underline/strikethrough-position/thickness + in the future. Do this before new struct goes into a release. + + src/hb-font.h | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit e6d5e4c3106180cb22253c2c278b40f7c4c98f2f +Author: Behdad Esfahbod +Date: Wed Jan 6 12:29:50 2016 +0000 + + [uniscribe] Fix negative advance + + This happens with at least one test font I have. + + src/hb-uniscribe.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 99d34955762d0fff4b66a30e6fbe65fd1cf9976b +Author: Behdad Esfahbod +Date: Wed Jan 6 12:20:47 2016 +0000 + + [test] Add test text for Kaithi + + test/shaping/texts/in-tree/shaper-hangul/MANIFEST | 1 + + test/shaping/texts/in-tree/shaper-hebrew/MANIFEST | 1 + + test/shaping/texts/in-tree/shaper-tibetan/MANIFEST | 1 + + test/shaping/texts/in-tree/shaper-use/MANIFEST | 1 + + test/shaping/texts/in-tree/shaper-use/script-kaithi/MANIFEST | 1 + + test/shaping/texts/in-tree/shaper-use/script-kaithi/misc.txt | 6 ++++++ + 6 files changed, 11 insertions(+) + +commit 53c47c85827a7e3ca82000e3baa9aa87c5770ce9 +Author: Behdad Esfahbod +Date: Tue Jan 5 13:26:20 2016 +0000 + + Increase sanitize edit count from 8 to 32 + + See previous commit. + + src/hb-open-type-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit da2fcfdc51a2cc0d0a782efa6c91b733f7aa84ba +Author: Behdad Esfahbod +Date: Tue Jan 5 13:23:45 2016 +0000 + + Don't count fixing-up FeatureParams offset as error + + The font Garamond Premier Pro Caption (and possibly many other + Adobe fonts), have many FeatureParamsSize tables with the old + wrong offset. We handle fixing those up, but they were still + contributing to edit_count, and when I reduced HB_SANITIZE_MAX_EDIT + from 100 to 8 in 14c2de321826c36037adde859ccca3e2011325a9, these + fonts were now getting GPOS dropped and hence kerning disabled. + + Fix, by not counting edits made towareds offset fix-up. I'll + also increase edit count again, in the next commit. + + src/hb-ot-layout-common-private.hh | 3 +++ + 1 file changed, 3 insertions(+) + +commit d0adc80965506810820f9ec165b8df80cc8907e3 +Author: Behdad Esfahbod +Date: Sat Jan 2 13:25:18 2016 +0000 + + Check magicNumber in head table during sanitize + + src/hb-ot-head-table.hh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 3a48c776701a919e11b067129586e40372d90d54 +Merge: 9230911 4b4948d +Author: Behdad Esfahbod +Date: Sat Jan 2 00:59:14 2016 +0000 + + Merge pull request #208 from khaledhosny/travis-trusty + + [travis] Try building on Trusty + +commit 4b4948d360a2141e0ffda2994aa308645dc32f59 +Author: Khaled Hosny +Date: Sat Jan 2 00:36:19 2016 +0400 + + [travis] Try building on Trusty + + Trusty has gtk-doc 1.20 which has better markdown support which should + fix some of the brokenness in the newly added documentation. The build + seems to be as fast as the current container-based build on Precise. + + .travis.yml | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 9230911facf90c06626e54023ca4d99f5e05f1a4 +Author: Behdad Esfahbod +Date: Fri Jan 1 19:06:43 2016 +0000 + + [travis] Only run coveralls if testing behdad/harfbuzz + + Fixes failures in others' forks, like: + https://travis-ci.org/khaledhosny/harfbuzz/jobs/99719710#L3912 + + .travis.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6f66f05757d3d5738571b3d4ee40afffb8f26ff9 +Merge: bfdf684 9ab9f97 +Author: Behdad Esfahbod +Date: Fri Jan 1 16:44:01 2016 +0000 + + Merge pull request #207 from khaledhosny/docs-4 + + [docs] More buffers documentation + +commit 9ab9f974d42e0001966e243a23a64e6aefbd4764 +Author: Khaled Hosny +Date: Fri Jan 1 20:38:21 2016 +0400 + + [docs] More buffers documentation + + docs/harfbuzz-sections.txt | 4 +- + src/hb-buffer-serialize.cc | 85 + ++++++++++++++++++++++++++++++------------- + src/hb-buffer.cc | 91 + +++++++++++++++++++++++++++++++++++----------- + src/hb-buffer.h | 78 +++++++++++++++++++++++++-------------- + src/hb-shape.cc | 10 +++-- + 5 files changed, 187 insertions(+), 81 deletions(-) + +commit bfdf684f7957645dd016fbf76700c5911c4bee2d +Merge: d7ed6f5 85c2443 +Author: Behdad Esfahbod +Date: Wed Dec 30 22:20:14 2015 +0100 + + Merge pull request #205 from khaledhosny/more-docs + + More docs + +commit d7ed6f50b4ff13a94701131913d931f13a4d1266 +Merge: b758e5e a7f0e25 +Author: Behdad Esfahbod +Date: Wed Dec 30 22:20:00 2015 +0100 + + Merge pull request #206 from nico/patch-3 + + Remove unused HB_SHAPER_DATA_ENSURE_DECLARE lines. + +commit a7f0e25dafa90bd21b01c38cb0782ade54b75cdc +Author: Nico Weber +Date: Wed Dec 30 16:05:52 2015 -0500 + + Remove unused HB_SHAPER_DATA_ENSURE_DECLARE lines. + + The coretext_aat shaper delegates to the regular coretext_..._ensure() + functions, so coretext_aat_..._ensure() functions defined by these + macros are unused. The compiler warns about them, which in turn can + confuse people to think that the coretext_aat_..._ensure() functions + weren't called by accident. + + src/hb-coretext.cc | 4 ---- + 1 file changed, 4 deletions(-) + +commit 85c2443b737335b77c7e9bb6fd6741912f70fcef +Author: Khaled Hosny +Date: Wed Dec 30 22:57:04 2015 +0400 + + [docs] Reduce gtkdoc-check errors + + Now it is just reporting one error about “503 undocumented or + incomplete + symbols”, that will be the easy part I guess. + + docs/harfbuzz-docs.xml | 74 + ++++++++++++++++++++++++++++++++++++++++++++++ + docs/harfbuzz-sections.txt | 40 +++++++++++++++++++++++++ + 2 files changed, 114 insertions(+) + +commit 9cffe329f15b3a74a3af4e68c1884f1dbda49666 +Author: Khaled Hosny +Date: Wed Dec 30 22:50:08 2015 +0400 + + [docs] Typo + + src/hb-buffer.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b758e5ea223eced0fde9a3e62d0fdf04c04914a1 +Merge: 266bfa3 8b1224f +Author: Behdad Esfahbod +Date: Wed Dec 30 16:44:19 2015 +0100 + + Merge pull request #203 from nico/patch-1 + + Remove unused `retry:` label. + +commit 266bfa3772e75fedcd93db22bf8672a13ad7a7d9 +Author: Behdad Esfahbod +Date: Wed Dec 30 16:25:48 2015 +0100 + + [docs] Minor + + .ci/deploy-docs.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d08035f8f15b7ddd89a318ea34bc386a9e33a8ea +Author: Behdad Esfahbod +Date: Wed Dec 30 16:15:36 2015 +0100 + + [docs] Fix up build, really + + .ci/deploy-docs.sh | 9 ++++----- + .travis.yml | 2 +- + 2 files changed, 5 insertions(+), 6 deletions(-) + +commit 0d45c3cf63692151166ca7071f755dfaa8922a67 +Author: Behdad Esfahbod +Date: Wed Dec 30 16:09:39 2015 +0100 + + [docs] Turn bash tracing on + + .ci/deploy-docs.sh | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 33b2d981a0b12ea165ef9282204a73f4a1ce0477 +Author: Behdad Esfahbod +Date: Wed Dec 30 15:56:56 2015 +0100 + + [docs] Another try, not sure why the bot isn't building + + .ci/deploy-docs.sh | 13 ++++--------- + 1 file changed, 4 insertions(+), 9 deletions(-) + +commit f3a051149b3b565b5ad4e489bf730c5203c3549e +Author: Behdad Esfahbod +Date: Wed Dec 30 15:45:43 2015 +0100 + + [docs] Shuffling code around in deploy-docs.sh + + Temporarily makes it rebuild docs on every change again. + + .ci/deploy-docs.sh | 46 +++++++++++++++++++++++++++------------------- + 1 file changed, 27 insertions(+), 19 deletions(-) + +commit 8f31d0a94b27bb658aabe600472fc10bc47885f6 +Merge: 9d280cf fb192c2 +Author: Behdad Esfahbod +Date: Wed Dec 30 15:13:37 2015 +0100 + + Merge pull request #202 from khaledhosny/doc-fixes + + Doc fixes + +commit fb192c263e17081c87f4cc971274d9be42f19513 +Author: Khaled Hosny +Date: Wed Dec 30 15:05:50 2015 +0400 + + [docs] A bit more buffers documentation + + docs/harfbuzz-sections.txt | 2 ++ + src/hb-buffer.cc | 7 +++--- + src/hb-buffer.h | 56 + ++++++++++++++++++++++++++++++++++++++++++++-- + 3 files changed, 60 insertions(+), 5 deletions(-) + +commit 8ab797c5b86c33eab6ee024471fd3c147325d26a +Author: Khaled Hosny +Date: Tue Dec 29 17:42:16 2015 +0400 + + [docs] A bit more buffers documentation + + docs/harfbuzz-sections.txt | 60 +++++++++++++++--------------- + src/hb-buffer.cc | 93 + +++++++++++++++++++++++++++++++--------------- + src/hb-buffer.h | 7 +++- + src/hb-common.cc | 43 +++++++++++++-------- + src/hb-common.h | 15 +++++--- + 5 files changed, 135 insertions(+), 83 deletions(-) + +commit f18d2226b62f20d29e6299c01ae8467c725ea971 +Author: Khaled Hosny +Date: Tue Dec 29 15:21:20 2015 +0400 + + [docs] Some documentation on buffers + + Some of it (create, reference, destroy) are adapted from Cairo docs. + + docs/harfbuzz-sections.txt | 55 +++++++------- + src/hb-buffer.cc | 174 + +++++++++++++++++++++++++++------------------ + 2 files changed, 132 insertions(+), 97 deletions(-) + +commit d7bf9d05c519a369a7b3a02e9ed5ecc05a20cd3e +Author: Khaled Hosny +Date: Tue Dec 29 02:23:24 2015 +0400 + + [docs] Fix comment syntax + + To lower the number of gtk-doc warnings. + + .travis.yml | 2 +- + src/hb-directwrite.cc | 4 ++-- + src/hb-ot-layout.cc | 14 ++++++++++++++ + src/hb-unicode.h | 16 ++++++++++++++++ + 4 files changed, 33 insertions(+), 3 deletions(-) + +commit 8b1224f0eece7a5b6846e206333e57ac4653a705 +Author: Nico Weber +Date: Mon Dec 28 21:31:28 2015 -0500 + + Remove unused `retry:` label. + + Fixes a -Wunused-label warning when building harfbuzz with clang + -Wall. + + src/hb-coretext.cc | 1 - + 1 file changed, 1 deletion(-) + +commit 1f5559293f9bb1b4e911f4bdecf276ff1f6ae01c +Author: Khaled Hosny +Date: Tue Dec 29 02:15:21 2015 +0400 + + [docs] Ignore the new HB_EXTERN decoration + + Otherwise, almost all API functions are not extracted. + + docs/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 9d280cf49f25181f64c978752f926b79e7c3746a +Author: Khaled Hosny +Date: Sat Dec 26 06:45:51 2015 +0400 + + Fix previous commit + + .ci/deploy-docs.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b789199f107912cfce5e4a95d6152f9a1a7993f2 +Author: Khaled Hosny +Date: Sat Dec 26 06:35:08 2015 +0400 + + [travis] Build docs only on tagged revisions + + Lets see if it works… + + .ci/deploy-docs.sh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit e5b90c08a4c1f475560209a5e47628f695606d89 +Author: Behdad Esfahbod +Date: Fri Dec 25 18:41:41 2015 +0100 + + [travis] Remove secure var + + I've set up a secure var for behdad/harfbuzz through Travis web + interface, no need + to set the var here. + + .ci/deploy-docs.sh | 2 +- + .travis.yml | 1 - + 2 files changed, 1 insertion(+), 2 deletions(-) + +commit e75c1ffdf548185ce1f1df7937f0d028e5e40efe +Merge: 6173c2a d25317f +Author: Behdad Esfahbod +Date: Fri Dec 25 18:21:08 2015 +0100 + + Merge pull request #199 from behdad/travis-docs + + Deploy docs to gh-pages branch from Travis builds + +commit 6173c2a6fc6ea0bf812f7f398770b5342974f9bf +Author: Behdad Esfahbod +Date: Fri Dec 25 18:18:23 2015 +0100 + + Fix flaky test + + This test font had a upem of 769, which results in rounding-related + errors with + the FreeType font funcs. Change the upem to 1024 to fix that. + + Fixes https://github.com/behdad/harfbuzz/issues/201 + + .../1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf | Bin 0 -> 4064 bytes + test/shaping/fonts/sha1sum/MANIFEST | 2 +- + .../c78d1f25ea1df1210414f2fe2e0e1e53082bba76.ttf | Bin 4064 -> 0 bytes + test/shaping/tests/ligature-id.tests | 70 + ++++++++++----------- + 4 files changed, 36 insertions(+), 36 deletions(-) + +commit 3fcae6d82da389c9944386a8ab41eb1c13b99330 +Author: Behdad Esfahbod +Date: Fri Dec 25 18:18:02 2015 +0100 + + [tests] Add --reference, for re-recording tests + + test/shaping/run-tests.sh | 18 ++++++++++++++---- + 1 file changed, 14 insertions(+), 4 deletions(-) + +commit d25317f67f3c5c77f9059961935b0f35cbaa9ac4 +Author: Khaled Hosny +Date: Wed Dec 23 01:29:48 2015 +0400 + + Move more docs from FreeDesktop page + + docs/Makefile.am | 1 + + docs/harfbuzz-docs.xml | 15 ++++---- + docs/usermanual-install-harfbuzz.xml | 70 + ++++++++++++++++++++++++++++++++++++ + 3 files changed, 80 insertions(+), 6 deletions(-) + +commit 493a92220844c8996be67c8a7a2c5447942fe2c1 +Author: Khaled Hosny +Date: Wed Dec 23 00:33:41 2015 +0400 + + Rename user manual files + + Use chapter ids instead of numbers, so that we can reorder them, + introduce new ones etc. without the numbers becoming out of date. + + docs/Makefile.am | 12 +- + docs/harfbuzz-docs.xml | 12 +- + ...anual-buffers-language-script-and-direction.xml | 77 +++++++++ + docs/usermanual-ch01.xml | 115 ------------- + docs/usermanual-ch02.xml | 183 + --------------------- + docs/usermanual-ch03.xml | 77 --------- + docs/usermanual-ch04.xml | 18 -- + docs/usermanual-ch05.xml | 13 -- + docs/usermanual-ch06.xml | 8 - + docs/usermanual-fonts-and-faces.xml | 18 ++ + docs/usermanual-glyph-information.xml | 8 + + docs/usermanual-hello-harfbuzz.xml | 183 + +++++++++++++++++++++ + docs/usermanual-opentype-features.xml | 13 ++ + docs/usermanual-what-is-harfbuzz.xml | 115 +++++++++++++ + 14 files changed, 426 insertions(+), 426 deletions(-) + +commit 4dc2265918089ee08c6d82eed0cfd41e02d7d231 +Author: Khaled Hosny +Date: Wed Dec 23 00:26:20 2015 +0400 + + Intro from freedesktop.org/wiki/Software/HarfBuzz/ + + docs/HarfBuzz.png | Bin 0 -> 3419 bytes + docs/Makefile.am | 3 ++- + docs/harfbuzz-docs.xml | 31 ++++++++++++++++++++++++++++++- + 3 files changed, 32 insertions(+), 2 deletions(-) + +commit 22b07782ced6503a0bf33f2fe157b70540238f6d +Author: Khaled Hosny +Date: Mon Dec 14 23:33:51 2015 +0400 + + Deploy docs to gh-pages branch from Travis builds + + Build docs in Travis and push them to the gh-pages branch, which makes + them available at http://behdad.github.io/harfbuzz/ + + .ci/deploy-docs.sh | 25 +++++++++++++++++++++++++ + .travis.yml | 4 ++++ + 2 files changed, 29 insertions(+) + +commit fc38e6034c76d5450f5398d667184bc3696efcc4 +Author: Behdad Esfahbod +Date: Wed Dec 23 14:50:53 2015 +0100 + + [layout] Collect coverage glyphs in PairPos + + Apparently class=0 is used for ClassDef1. See: + https://github.com/adobe-type-tools/afdko/issues/90 + + src/hb-ot-layout-gpos-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8718dae818b22c3933c33bdfc8a7413ef4c3110a +Author: Behdad Esfahbod +Date: Fri Dec 18 19:53:40 2015 +0000 + + [python] Hook up sample debugger + + src/sample.py | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 0475ef2f97e3035a2eea9a0f96031331e07e8e29 +Author: Behdad Esfahbod +Date: Fri Dec 18 18:17:07 2015 +0000 + + [buffer] Add debugging, aka, message, API + + Currently just announces lookup applications. Message-API *will* + change. + hb-shape / hb-view are updated to print-out messages to stder + if --debug + is specified. + + src/hb-buffer-private.hh | 18 ++++++++++++++++++ + src/hb-buffer.cc | 44 + ++++++++++++++++++++++++++++++++++++++++++++ + src/hb-buffer.h | 15 +++++++++++++++ + src/hb-ot-layout.cc | 12 ++---------- + util/main-font-text.hh | 18 ++++++++++++++++++ + 5 files changed, 97 insertions(+), 10 deletions(-) + +commit 9ea0aa43ac5cf243b698aae0ec80241b5efd7488 +Author: Behdad Esfahbod +Date: Fri Dec 18 17:30:18 2015 +0000 + + Don't deserialize positions if buffer has no positions + + src/hb-buffer-serialize.cc | 3 +++ + src/hb-ot-layout.cc | 2 -- + 2 files changed, 3 insertions(+), 2 deletions(-) + +commit 862b1644e9469a7e70555141f53729409d50d0d2 +Author: Behdad Esfahbod +Date: Fri Dec 18 13:54:06 2015 +0000 + + [use] Only set syllable-based topographical features if not + Arabic-joining + + src/hb-ot-shape-complex-use.cc | 3 +++ + 1 file changed, 3 insertions(+) + +commit 45b7ec365225109eb0854e6c417f48860b5f24af +Author: Behdad Esfahbod +Date: Fri Dec 18 13:47:16 2015 +0000 + + [indic] Followup fix for Malayalam context matching + + We regeressed Malayalam in 508cc3d3cfcfb0383df0fe795cc28db4e0fd5729 + This brings down the failures to 198 (from 750). + + BENGALI: 353725 out of 354188 tests passed. 463 failed (0.130722%) + DEVANAGARI: 707307 out of 707394 tests passed. 87 failed (0.0122987%) + GUJARATI: 366349 out of 366457 tests passed. 108 failed (0.0294714%) + GURMUKHI: 60732 out of 60747 tests passed. 15 failed (0.0246926%) + KANNADA: 951190 out of 951913 tests passed. 723 failed (0.0759523%) + KHMER: 299070 out of 299124 tests passed. 54 failed (0.0180527%) + MALAYALAM: 1048136 out of 1048334 tests passed. 198 failed + (0.0188871%) + ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%) + SINHALA: 271662 out of 271847 tests passed. 185 failed (0.068053%) + TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%) + TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%) + MYANMAR: 1123865 out of 1123883 tests passed. 18 failed (0.00160159%) + + src/hb-ot-shape-complex-indic.cc | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +commit 2813e3049a69d64e5395f68c52c4690e1d256d55 +Author: Behdad Esfahbod +Date: Fri Dec 18 11:05:11 2015 +0000 + + [indic] Update data tables to Unicode 8.0 + + Test stats remain unchanged, except for Malayalam, which we + investigate: + + BENGALI: 353725 out of 354188 tests passed. 463 failed (0.130722%) + DEVANAGARI: 707307 out of 707394 tests passed. 87 failed (0.0122987%) + GUJARATI: 366349 out of 366457 tests passed. 108 failed (0.0294714%) + GURMUKHI: 60732 out of 60747 tests passed. 15 failed (0.0246926%) + KANNADA: 951190 out of 951913 tests passed. 723 failed (0.0759523%) + KHMER: 299070 out of 299124 tests passed. 54 failed (0.0180527%) + MALAYALAM: 1047584 out of 1048334 tests passed. 750 failed + (0.0715421%) + ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%) + SINHALA: 271662 out of 271847 tests passed. 185 failed (0.068053%) + TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%) + TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%) + + Myanmar, compared to Windows 10 mmrtext.ttf: + + MYANMAR: 1123865 out of 1123883 tests passed. 18 failed (0.00160159%) + + src/gen-indic-table.py | 1 + + src/hb-ot-shape-complex-indic-private.hh | 40 ++-- + src/hb-ot-shape-complex-indic-table.cc | 372 + ++++++++++++++++++------------- + src/hb-ot-shape-complex-indic.cc | 23 +- + src/hb-ot-shape-complex-myanmar.cc | 4 + + 5 files changed, 244 insertions(+), 196 deletions(-) + +commit fc06cff40f136440f6402d0a5e735e2a4a3c062a +Author: Behdad Esfahbod +Date: Thu Dec 17 17:47:35 2015 +0000 + + Remove HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT + + The DEFAULT naming wasn't helpful, so just remove it. + + src/hb-ot-shape-complex-default.cc | 2 +- + src/hb-ot-shape-complex-private.hh | 4 +--- + src/hb-ot-shape-complex-thai.cc | 2 +- + src/hb-ot-shape-complex-tibetan.cc | 2 +- + 4 files changed, 4 insertions(+), 6 deletions(-) + +commit 508cc3d3cfcfb0383df0fe795cc28db4e0fd5729 +Author: Behdad Esfahbod +Date: Thu Dec 17 17:31:17 2015 +0000 + + [indic] Allow context when matching for Malayalam new-spec + + Test sequence: + U+0995,U+09CD,U+09B0 + + With Nirmala shipped on Windows 10, this failed to form the below + form. + Works now. + + Reported by Sairus. + + src/hb-ot-shape-complex-indic.cc | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +commit eaf1e93ef1ee19a3e72d781e8abbd7f1165c1618 +Author: Behdad Esfahbod +Date: Thu Dec 17 16:57:47 2015 +0000 + + [uniscribe] Handle E_NOT_SUFFICIENT_BUFFER as well as E_OUTOFMEMORY + + On Windows 10 we are seeing that other error message... + + Test sequence: U+0995,U+-9CD,U+09B0 + With Nirmala shipped on Windows 10, this failed to form the below + form. + Works now. + + Reported by Sairus. + + src/hb-uniscribe.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 21e5d7edc4f28157254ef29a8ac247f3a572f6a6 +Author: Behdad Esfahbod +Date: Thu Dec 17 16:28:38 2015 +0000 + + [util] Use O_BINARY instead of _O_BINARY + + The latter doesn't seem to be available in Cygwin. I'm surprised it + compiled before... + + util/options.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 100fbeaf196515774c985ee839d0fa0695f9a6fa +Author: Behdad Esfahbod +Date: Thu Dec 17 15:23:09 2015 +0000 + + Fix ligature component of a mark happening after a ligature within + a ligature! + + Say, if we are ligating "A B_C m D", then previously 'm' was being + attached to 'B' in the combined A_B_C_D ligature. Now we attach it + to 'C'. No test for this though :(. + + src/hb-ot-layout-gsubgpos-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2f02fc79a5018e3348fccf366c470803554e1e58 +Author: Behdad Esfahbod +Date: Thu Dec 17 15:21:14 2015 +0000 + + Improve ligature-component handling + + We use three bits for lig_id these days, so we finally got a report of + two separate ligatures with the same lig_id happening adjacent to each + other, and then the component-handling code was breaking things. + Protect against that by ignoring same-lig-id but lig-comp=0 glyphs + after + a new ligature. + + Fixes https://github.com/behdad/harfbuzz/issues/198 + + src/hb-ot-layout-gsubgpos-private.hh | 12 +++++-- + test/shaping/Makefile.am | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 1 + + .../c78d1f25ea1df1210414f2fe2e0e1e53082bba76.ttf | Bin 0 -> 4064 bytes + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/ligature-id.tests | 35 + +++++++++++++++++++++ + 6 files changed, 47 insertions(+), 3 deletions(-) + +commit 2ab0de9fbd03231b647345b01e31b136e2e00978 +Author: Behdad Esfahbod +Date: Thu Dec 17 11:59:15 2015 +0000 + + [use] Fix halant detection + + Before, we were just checking the use_category(). This detects as + halant a ligature that had the halant as first glyph (as seen in + NotoSansBalinese.) Change that to use the is_ligated() glyph prop + bit. The font is forming this ligature in ccmp, which is before + the rphf / pref tests. So we need to make sure the "ligated" bit + survives those tests. Since those only check the "substituted" bit, + we now only clear that bit for them and "ligated" survives. + + Fixes https://github.com/behdad/harfbuzz/issues/180 + + src/hb-ot-layout-private.hh | 6 ++---- + src/hb-ot-shape-complex-use.cc | 19 + ++++++++++++------- + test/shaping/Makefile.am | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 1 + + .../fbb6c84c9e1fe0c39e152fbe845e51fd81f6748e.ttf | Bin 0 -> + 2616 bytes + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/use.tests | 1 + + 7 files changed, 18 insertions(+), 11 deletions(-) + +commit 86bcbd65b0d98357fb3d67a2f4f2a704ace55e10 +Author: Behdad Esfahbod +Date: Thu Dec 17 11:04:33 2015 +0000 + + [arabic] Use glyph advance width in apply_stch() instead of extents + + That seems to be what Windows is doing, and makes more sense. + + src/hb-ot-shape-complex-arabic.cc | 24 +++++++----------------- + 1 file changed, 7 insertions(+), 17 deletions(-) + +commit f11c11a1f123ef245e59ba892230db14170a8e5a +Author: Behdad Esfahbod +Date: Wed Dec 16 17:08:36 2015 +0100 + + Fix Since: tags for new API + + https://github.com/behdad/harfbuzz/commit/e1d4d0f1dbd8518b5672245c05d73f22a9ed03ea#commitcomment-15006653 + + src/hb-font.cc | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 15f2c055c17c54b0a6ae6eef50dcda13c58cda75 +Merge: 49e7263 a13b023 +Author: Behdad Esfahbod +Date: Mon Dec 14 14:19:03 2015 +0100 + + Merge pull request #196 from srl295/aix + + AIX fixes + +commit a13b023dbfd0532e8cd74c356fbbd4453d0ffaa0 +Author: Steven R. Loomis +Date: Fri Dec 11 10:21:27 2015 -0800 + + AIX fixes + + - use '-w' instead of '\<...\>' for check-header-guards + grep manpage says these are the same + + - put '-q' first in the grep options + + - move VAR into hb-private.hh + + - hb-font-private.hh - use [VAR] instead of [] for variable array + + src/check-header-guards.sh | 5 ++--- + src/hb-font-private.hh | 2 +- + src/hb-open-type-private.hh | 3 --- + src/hb-private.hh | 2 ++ + 4 files changed, 5 insertions(+), 7 deletions(-) + +commit 49e72634af74a9fbad01f42f48e104218413acc0 +Author: Behdad Esfahbod +Date: Thu Dec 10 17:44:19 2015 +0100 + + Limit use of AIX intrinsics to IBM's compiler + + src/hb-atomic-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e1d4d0f1dbd8518b5672245c05d73f22a9ed03ea +Merge: 70b33ed 808d3fc +Author: Behdad Esfahbod +Date: Thu Dec 10 16:56:07 2015 +0100 + + Merge branch 'font-extents' + + Fixes https://github.com/behdad/harfbuzz/pull/165 + +commit 808d3fc0eadd379909f2a0308fd3db474f1efde8 +Author: Behdad Esfahbod +Date: Thu Dec 10 16:55:16 2015 +0100 + + [util] Port hb-view to use font metrics from HarfBuzz instead of cairo + + util/helper-cairo.cc | 4 +++- + util/view-cairo.cc | 24 ++++++++++++------------ + 2 files changed, 15 insertions(+), 13 deletions(-) + +commit 31fa3892947138c7950303ea3719bb5ceb813625 +Author: Behdad Esfahbod +Date: Thu Dec 10 16:38:29 2015 +0100 + + [ft] Use ftface->size->metrics for font extent info + + src/hb-ft.cc | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 3ad16048fdd841f31f1cb98d7ff9ea1871841146 +Author: Behdad Esfahbod +Date: Thu Dec 10 16:37:49 2015 +0100 + + [ot-font] Respect OS/2 fsSelection USE_TYPO_METRICS bit + + src/hb-ot-font.cc | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +commit 70b33edae7c8b9c031b83c95f00cb383789f1041 +Author: Behdad Esfahbod +Date: Thu Dec 10 15:54:42 2015 +0100 + + Add atomic ops for AIX + + Patch from Volker Simonis. + + src/hb-atomic-private.hh | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +commit 98460779bae19e4d64d29461ff154b3527bf8420 +Author: Behdad Esfahbod +Date: Mon Dec 7 21:38:47 2015 +0100 + + Remove final pause from Arabic shaper + + Back in the old days, we used to apply 'calt' and 'cswh' in Arabic + shaper, + with a pause in between. Then we disabled the 'cswh' because + Microsoft + disabled it, but forgot to remove the unnecessary pause. Do that now. + + This has the benefit that it fixes shaping with monbaiti from + Windows 10. + In that version of that font, the lookups from 'calt' are duplicated + in + 'rclt', and Mongolian was changed to go through Universal Shaping + Engine. + We still use the Arabic shaper for Mongolian. With a pause after + 'calt', + we were applying the duplicate lookups from 'calt' and 'rclt' twice. + It + happened to be the case that these lookups were NOT idempotent. So we + were getting wrong shaping. See thread "Windows 10 monbaiti.ttf + upgrade + (5.01 -> 5.51) caused loss of diacritical marks when shaped with + harfbuz" + on the mailing list. This fixes that. + + src/hb-ot-shape-complex-arabic.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dee0fbf9e2eac8b61730efc4978bc10c552b5227 +Merge: 255df68 a7ffe35 +Author: Behdad Esfahbod +Date: Mon Dec 7 10:44:08 2015 +0100 + + Merge pull request #192 from behdad/jfkthame-stch + + [issue 191] Make apply_stch() give a more precise fit + +commit 255df6801201fb22402420f7b7b7ea8b042df8ba +Author: Behdad Esfahbod +Date: Mon Dec 7 10:34:47 2015 +0100 + + Fix undefined behavior in cmp function + + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=93274 + + src/hb-ot-map-private.hh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit fcf9e61bad13c828b5482f26491c82db65d91c96 +Author: Behdad Esfahbod +Date: Mon Dec 7 10:30:43 2015 +0100 + + Fix sorting order of ot_languages array + + Looks like the original sort was wrongly done. + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=93275 + + src/hb-ot-tag.cc | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit 70952ddb5a29c5bcbb4b6c3a05a428496033234a +Author: Behdad Esfahbod +Date: Mon Dec 7 10:28:46 2015 +0100 + + Add test to make sure ot-languages array is sorted + + Currently fails. Part of + https://bugs.freedesktop.org/show_bug.cgi?id=93275 + + src/Makefile.am | 9 ++++++++- + src/hb-ot-tag.cc | 23 +++++++++++++++++++++++ + 2 files changed, 31 insertions(+), 1 deletion(-) + +commit 8c37556f730d7e961394075cd863f624af4c53c4 +Merge: 8e5f902 f35b3e9 +Author: Behdad Esfahbod +Date: Mon Dec 7 09:34:58 2015 +0100 + + Merge pull request #134 from ebraminio/dwrite + + Add working but less prefect DirectWrite backend + +commit a7ffe3535836032dba5559080dffeec79473197b +Author: jfkthame +Date: Sat Dec 5 17:47:37 2015 +0000 + + Make apply_stch() give a more precise fit + + This aims to make Syriac Abbr Mark sizing more accurate when repeating + segments are used, by adding an extra repeat and tightening up the + spacing slightly rather than leaving a shortfall corresponding to + a partial repeat-width. + + src/hb-ot-shape-complex-arabic.cc | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +commit 8e5f902656d2882d24c30e8b26ddbd3963baa55c +Author: Behdad Esfahbod +Date: Mon Nov 30 16:53:21 2015 -0800 + + src/test.cc: wrong field printed + + Fixes https://github.com/behdad/harfbuzz/issues/188 + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=93182 + + src/test.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6f2e6de1fae0ab2269b472a750788817de6c2a6e +Author: Simon Cozens +Date: Mon Oct 26 16:23:22 2015 +0900 + + Get font ascender and descender metrics from OS/2 table. + + src/hb-font-private.hh | 39 ++++++++++++++++++- + src/hb-font.cc | 102 + ++++++++++++++++++++++++++++++++++++++++++++++++- + src/hb-font.h | 62 ++++++++++++++++++++++++++++-- + src/hb-ft.cc | 21 ++++++++++ + src/hb-ot-font.cc | 58 ++++++++++++++++++++++++++-- + 5 files changed, 274 insertions(+), 8 deletions(-) + +commit 097c998a0c7b250924801bb69f5fa0c529edd183 +Author: Simon Cozens +Date: Mon Oct 26 16:22:38 2015 +0900 + + Parse the OS/2 table. + + src/Makefile.am | 1 + + src/hb-ot-os2-table.hh | 105 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 106 insertions(+) + +commit d44d52bd0da033865641dfd39d94852119fd4fd7 +Author: Behdad Esfahbod +Date: Thu Nov 26 19:35:43 2015 -0500 + + 1.1.2 + + NEWS | 15 +++++++++++++++ + configure.ac | 2 +- + 2 files changed, 16 insertions(+), 1 deletion(-) + commit 35d18585fc57750d817f57bfffe569069f9803b5 Author: Behdad Esfahbod -Date: Thu Nov 26 19:30:37 2015 -0500 +Date: Thu Nov 26 19:30:37 2015 -0500 Fix a few docs blocks @@ -13,7 +1022,7 @@ Date: Thu Nov 26 19:30:37 2015 -0500 commit 0e38c918b66df31978d8fd3d8271a9b781384545 Author: Behdad Esfahbod -Date: Thu Nov 26 19:26:26 2015 -0500 +Date: Thu Nov 26 19:26:26 2015 -0500 [introspection] Make scanner happy with HB_EXTERN @@ -22,26 +1031,26 @@ Date: Thu Nov 26 19:26:26 2015 -0500 commit ea512f71084296be3bd893f78650def894066de0 Author: Behdad Esfahbod -Date: Thu Nov 26 19:22:22 2015 -0500 +Date: Thu Nov 26 19:22:22 2015 -0500 Use C-style casts instead of compare to 0, to convert hb_bool_t to bool - src/hb-common.cc | 2 +- - src/hb-fallback-shape.cc | 2 +- - src/hb-font-private.hh | 2 +- - src/hb-ot-layout.cc | 2 +- - src/hb-ot-map.cc | 2 +- + src/hb-common.cc | 2 +- + src/hb-fallback-shape.cc | 2 +- + src/hb-font-private.hh | 2 +- + src/hb-ot-layout.cc | 2 +- + src/hb-ot-map.cc | 2 +- src/hb-ot-shape-complex-hangul.cc | 2 +- src/hb-ot-shape-complex-hebrew.cc | 2 +- src/hb-ot-shape-complex-indic.cc | 4 ++-- - src/hb-ot-shape-normalize.cc | 6 +++--- - src/hb-ot-shape.cc | 2 +- + src/hb-ot-shape-normalize.cc | 6 +++--- + src/hb-ot-shape.cc | 2 +- 10 files changed, 13 insertions(+), 13 deletions(-) commit 67a36a725e2a61a096ba0324f359d17f9b02d312 Author: Behdad Esfahbod -Date: Thu Nov 26 18:48:42 2015 -0500 +Date: Thu Nov 26 18:48:42 2015 -0500 Fix vertical GPOS @@ -56,21 +1065,21 @@ Date: Thu Nov 26 18:48:42 2015 -0500 commit 1c6a057dd1a52511474630896a597bf8e5215214 Author: Behdad Esfahbod -Date: Thu Nov 26 18:48:30 2015 -0500 +Date: Thu Nov 26 18:48:30 2015 -0500 Add tests for previous commit - test/shaping/Makefile.am | 1 + + test/shaping/Makefile.am | 1 + .../sha1sum/49c9f7485c1392fa09a1b801bc2ffea79275f22e.ttf | Bin 0 -> 1496 bytes - test/shaping/fonts/sha1sum/MANIFEST | 1 + - test/shaping/tests/MANIFEST | 1 + - test/shaping/tests/simple.tests | 2 ++ + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/simple.tests | 2 ++ 5 files changed, 5 insertions(+) commit c41c145c7386ebe72b1cfb0475d836a689fecc5e Author: Behdad Esfahbod -Date: Thu Nov 26 18:43:15 2015 -0500 +Date: Thu Nov 26 18:43:15 2015 -0500 Make nil glyph_h_origin() function return true @@ -90,7 +1099,7 @@ Date: Thu Nov 26 18:43:15 2015 -0500 commit 766963adba6770dcd45de4417481ed8eda60a716 Merge: b344af8 f798b8e Author: Behdad Esfahbod -Date: Tue Nov 24 15:38:43 2015 -0600 +Date: Tue Nov 24 15:38:43 2015 -0600 Merge pull request #114 from ThePhD/vc++-fixes @@ -99,7 +1108,7 @@ Date: Tue Nov 24 15:38:43 2015 -0600 commit b344af80ca95b9eddfd6017aa6ae103388d6b5f8 Merge: 662acd2 835bbdc Author: Behdad Esfahbod -Date: Tue Nov 24 15:30:27 2015 -0600 +Date: Tue Nov 24 15:30:27 2015 -0600 Merge pull request #177 from fanc999/exporting @@ -108,7 +1117,7 @@ Date: Tue Nov 24 15:30:27 2015 -0600 commit 662acd26d10c38e96a9afcdaab2cb2979794966f Merge: b24e93e 1979f6f Author: Behdad Esfahbod -Date: Tue Nov 24 15:29:44 2015 -0600 +Date: Tue Nov 24 15:29:44 2015 -0600 Merge pull request #181 from mhosken/master @@ -116,18 +1125,18 @@ Date: Tue Nov 24 15:29:44 2015 -0600 commit b24e93e3a4d98111c4684fa08e9080b471881d5c Author: Behdad Esfahbod -Date: Tue Nov 24 13:18:20 2015 -0600 +Date: Tue Nov 24 13:18:20 2015 -0600 1.1.1 - NEWS | 7 +++++++ + NEWS | 7 +++++++ configure.ac | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) commit 233944ac91bb81250c0e63150eecfedfaf09f590 Merge: 5a24b1d d538201 Author: Khaled Hosny -Date: Tue Nov 24 18:37:35 2015 +0400 +Date: Tue Nov 24 18:37:35 2015 +0400 Merge pull request #185 from khaledhosny/travis-osx @@ -135,7 +1144,7 @@ Date: Tue Nov 24 18:37:35 2015 +0400 commit d538201918e6932ef7645f8d5b2c3491954936f8 Author: Khaled Hosny -Date: Tue Nov 24 12:46:35 2015 +0400 +Date: Tue Nov 24 12:46:35 2015 +0400 [travis] Enable Mac OS X support @@ -146,19 +1155,19 @@ Date: Tue Nov 24 12:46:35 2015 +0400 commit 5a24b1d25c59865e298bf105f54503e79587265c Author: Behdad Esfahbod -Date: Mon Nov 23 16:46:14 2015 -0600 +Date: Mon Nov 23 16:46:14 2015 -0600 [travis] Remove coverity scan I never could get it to work, and it's a proprietary platform. .travis.yml | 11 ----------- - README | 1 - + README | 1 - 2 files changed, 12 deletions(-) commit 1979f6fedca82fa1e4f65491de491db1aa6dc645 Author: Martin Hosken -Date: Mon Nov 23 10:03:56 2015 +0700 +Date: Mon Nov 23 10:03:56 2015 +0700 Fix y_scale problems in hb-gr @@ -167,7 +1176,7 @@ Date: Mon Nov 23 10:03:56 2015 +0700 commit 835bbdc7c92bd774ff92c42a9277ded72066d29d Author: Chun-wei Fan -Date: Thu Nov 19 18:34:12 2015 +0800 +Date: Thu Nov 19 18:34:12 2015 +0800 Public headers: Decorate public symbols with HB_EXTERN @@ -177,35 +1186,35 @@ Date: Thu Nov 19 18:34:12 2015 +0800 symbols listing files, as this is what was and is done in GLib and GTK+. - src/hb-blob.h | 24 +++++----- - src/hb-buffer.h | 100 +++++++++++++++++++------------------- - src/hb-common.h | 22 ++++----- - src/hb-coretext.h | 6 +-- - src/hb-face.h | 34 ++++++------- - src/hb-font.h | 114 + src/hb-blob.h | 24 +++++----- + src/hb-buffer.h | 100 +++++++++++++++++++------------------- + src/hb-common.h | 22 ++++----- + src/hb-coretext.h | 6 +-- + src/hb-face.h | 34 ++++++------- + src/hb-font.h | 114 ++++++++++++++++++++++---------------------- - src/hb-ft.h | 18 +++---- - src/hb-glib.h | 8 ++-- - src/hb-gobject-enums.h.tmpl | 2 +- - src/hb-gobject-structs.h | 26 +++++----- - src/hb-graphite2.h | 4 +- - src/hb-icu.h | 6 +-- - src/hb-ot-font.h | 2 +- - src/hb-ot-layout.h | 56 +++++++++++----------- - src/hb-ot-shape.h | 4 +- - src/hb-ot-tag.h | 8 ++-- - src/hb-set.h | 52 ++++++++++---------- - src/hb-shape-plan.h | 18 +++---- - src/hb-shape.h | 10 ++-- - src/hb-unicode.h | 52 ++++++++++---------- - src/hb-uniscribe.h | 4 +- - src/hb-version.h.in | 6 +-- - src/hb.h | 4 ++ + src/hb-ft.h | 18 +++---- + src/hb-glib.h | 8 ++-- + src/hb-gobject-enums.h.tmpl | 2 +- + src/hb-gobject-structs.h | 26 +++++----- + src/hb-graphite2.h | 4 +- + src/hb-icu.h | 6 +-- + src/hb-ot-font.h | 2 +- + src/hb-ot-layout.h | 56 +++++++++++----------- + src/hb-ot-shape.h | 4 +- + src/hb-ot-tag.h | 8 ++-- + src/hb-set.h | 52 ++++++++++---------- + src/hb-shape-plan.h | 18 +++---- + src/hb-shape.h | 10 ++-- + src/hb-unicode.h | 52 ++++++++++---------- + src/hb-uniscribe.h | 4 +- + src/hb-version.h.in | 6 +-- + src/hb.h | 4 ++ 23 files changed, 292 insertions(+), 288 deletions(-) commit f798b8e2d683a1b89b6905b1a8615375b847b468 Author: ThePhD -Date: Sat Nov 21 16:57:26 2015 -0500 +Date: Sat Nov 21 16:57:26 2015 -0500 c-style cast @@ -215,7 +1224,7 @@ Date: Sat Nov 21 16:57:26 2015 -0500 commit a6991813659376a6a11c00a9f67d85b4f7ba9b5d Merge: 1dc32ea f19c6db Author: Behdad Esfahbod -Date: Fri Nov 20 13:28:42 2015 -0800 +Date: Fri Nov 20 13:28:42 2015 -0800 Merge pull request #176 from behdad/missing-braces @@ -223,7 +1232,7 @@ Date: Fri Nov 20 13:28:42 2015 -0800 commit 1dc32ea4d2f294f9d1ae1c8fd19fb75f9278223b Author: Behdad Esfahbod -Date: Fri Nov 20 13:24:19 2015 -0800 +Date: Fri Nov 20 13:24:19 2015 -0800 Whitespace @@ -232,7 +1241,7 @@ Date: Fri Nov 20 13:24:19 2015 -0800 commit f94c0ecbb1488138d3ec3b9d6d9fb78113dfee4f Author: Behdad Esfahbod -Date: Fri Nov 20 13:21:29 2015 -0800 +Date: Fri Nov 20 13:21:29 2015 -0800 Define HB_MARK_AS_FLAG_T as a macro instead of using templates @@ -253,7 +1262,7 @@ Date: Fri Nov 20 13:21:29 2015 -0800 commit f19c6db18e2e2dd0e9a406fc7e8533049fab48b0 Author: jfkthame -Date: Fri Nov 20 08:43:49 2015 +0000 +Date: Fri Nov 20 08:43:49 2015 +0000 Add braces for subobject initializer in _hb_font_funcs_nil @@ -265,7 +1274,7 @@ Date: Fri Nov 20 08:43:49 2015 +0000 commit 9cc1ed4fa68075b3b142a2737438109772dd0002 Author: Behdad Esfahbod -Date: Thu Nov 19 12:39:09 2015 -0800 +Date: Thu Nov 19 12:39:09 2015 -0800 Do not allow recursiving to same position and same lookup @@ -275,16 +1284,16 @@ Date: Thu Nov 19 12:39:09 2015 -0800 Fixes https://github.com/behdad/harfbuzz/issues/174 - src/hb-ot-layout-gsubgpos-private.hh | 5 +++++ - test/shaping/fonts/sha1sum/MANIFEST | 1 + + src/hb-ot-layout-gsubgpos-private.hh | 5 +++++ + test/shaping/fonts/sha1sum/MANIFEST | 1 + .../sha1sum/fab39d60d758cb586db5a504f218442cd1395725.ttf | Bin 0 -> 1894 bytes - test/shaping/tests/fuzzed.tests | 1 + + test/shaping/tests/fuzzed.tests | 1 + 4 files changed, 7 insertions(+) commit 7d75eee799bbb5ee7eef2651cf7b7d3aee6f09b0 Author: Behdad Esfahbod -Date: Thu Nov 19 12:03:04 2015 -0800 +Date: Thu Nov 19 12:03:04 2015 -0800 [fuzzing] Run fuzzing tests using hb-fuzzer as well @@ -293,7 +1302,7 @@ Date: Thu Nov 19 12:03:04 2015 -0800 commit 13188cba7f0eaacd587beeb1c2258526ae24c438 Author: Behdad Esfahbod -Date: Thu Nov 19 11:59:03 2015 -0800 +Date: Thu Nov 19 11:59:03 2015 -0800 Revert "Fix hang in OOM situations" @@ -307,7 +1316,7 @@ Date: Thu Nov 19 11:59:03 2015 -0800 commit 18e1c6b6ef7c85a1b02e3dae86280d8ed6b65118 Author: Behdad Esfahbod -Date: Thu Nov 19 11:50:58 2015 -0800 +Date: Thu Nov 19 11:50:58 2015 -0800 Revert "Make sure we make progress in OOM situations" @@ -317,22 +1326,22 @@ Date: Thu Nov 19 11:50:58 2015 -0800 fix for this. src/hb-buffer-private.hh | 7 +++++-- - src/hb-buffer.cc | 31 ++++++++----------------------- + src/hb-buffer.cc | 31 ++++++++----------------------- 2 files changed, 13 insertions(+), 25 deletions(-) commit e1118aeac3b5556df0ce502732df8ac92bdac45a Author: Behdad Esfahbod -Date: Wed Nov 18 23:40:47 2015 -0800 +Date: Wed Nov 18 23:40:47 2015 -0800 1.1.0 - NEWS | 22 ++++++++++++++++++++++ + NEWS | 22 ++++++++++++++++++++++ configure.ac | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) commit 63fe05c8b1cd4f08b525028409e1299f34750810 Author: Behdad Esfahbod -Date: Wed Nov 18 23:52:34 2015 -0800 +Date: Wed Nov 18 23:52:34 2015 -0800 Fix make distcheck @@ -341,7 +1350,7 @@ Date: Wed Nov 18 23:52:34 2015 -0800 commit 9b087dec7753ad96d256ce1b9ae347bd8d697c75 Author: Behdad Esfahbod -Date: Wed Nov 18 23:23:35 2015 -0800 +Date: Wed Nov 18 23:23:35 2015 -0800 [travis] Only coverity-scan the coverity_scan branch @@ -356,7 +1365,7 @@ Date: Wed Nov 18 23:23:35 2015 -0800 commit 85062e3b4655ec6d5c3cf5344ce22cd88c21a2aa Author: Behdad Esfahbod -Date: Wed Nov 18 23:09:13 2015 -0800 +Date: Wed Nov 18 23:09:13 2015 -0800 Add tests for previous two commits @@ -366,15 +1375,15 @@ Date: Wed Nov 18 23:09:13 2015 -0800 .../sha1sum/43979b90b2dd929723cf4fe1715990bcb9c9a56b.ttf | Bin 0 -> 1804 bytes - test/shaping/fonts/sha1sum/MANIFEST | 2 ++ + test/shaping/fonts/sha1sum/MANIFEST | 2 ++ .../sha1sum/b9e2aaa0d75fcef6971ec3a96d806ba4a6b31fe2.ttf | Bin 0 -> 1804 bytes - test/shaping/tests/fuzzed.tests | 2 ++ + test/shaping/tests/fuzzed.tests | 2 ++ 4 files changed, 4 insertions(+) commit 37b40cd8a18e25d3324f829acec197f016f4a524 Author: Behdad Esfahbod -Date: Wed Nov 18 23:04:45 2015 -0800 +Date: Wed Nov 18 23:04:45 2015 -0800 Fix another move_to assertion failure @@ -387,7 +1396,7 @@ Date: Wed Nov 18 23:04:45 2015 -0800 commit abadc1717d997b69f987fdf1be9e12156d2d13d6 Author: Behdad Esfahbod -Date: Wed Nov 18 17:52:08 2015 -0800 +Date: Wed Nov 18 17:52:08 2015 -0800 Try to better handle OOM situations @@ -395,18 +1404,18 @@ Date: Wed Nov 18 17:52:08 2015 -0800 with libharfbuzz-fuzzing. src/hb-ot-layout-gsubgpos-private.hh | 2 +- - src/hb-ot-layout.cc | 2 +- + src/hb-ot-layout.cc | 2 +- src/hb-ot-shape-complex-hangul.cc | 2 +- src/hb-ot-shape-complex-indic.cc | 2 +- src/hb-ot-shape-complex-thai.cc | 2 +- src/hb-ot-shape-complex-use.cc | 8 +------- - src/hb-ot-shape-normalize.cc | 10 +++++----- - src/hb-ot-shape.cc | 2 +- + src/hb-ot-shape-normalize.cc | 10 +++++----- + src/hb-ot-shape.cc | 2 +- 8 files changed, 12 insertions(+), 18 deletions(-) commit ec625f7dfb5f6df19d35d81af6605d05e08321f2 Author: Behdad Esfahbod -Date: Wed Nov 18 16:37:59 2015 -0800 +Date: Wed Nov 18 16:37:59 2015 -0800 Try to fix gnome-continuous build fail @@ -415,20 +1424,20 @@ Date: Wed Nov 18 16:37:59 2015 -0800 commit ff16ef3379e06afe44b5e78b8893aeae0cee2b5b Author: Behdad Esfahbod -Date: Wed Nov 18 16:27:32 2015 -0800 +Date: Wed Nov 18 16:27:32 2015 -0800 Enable building a bounded version of the library for fuzzing test/fuzzing/hb-fuzzer links against libharfbuzz-fuzzing.so now. - src/Makefile.am | 16 ++++++++++++++++ + src/Makefile.am | 16 ++++++++++++++++ test/fuzzing/Makefile.am | 9 ++------- - test/fuzzing/README | 6 ++---- + test/fuzzing/README | 6 ++---- 3 files changed, 20 insertions(+), 11 deletions(-) commit e0082ae60dbd87d433f3b2b9d2bfa64b9a4c3663 Author: Behdad Esfahbod -Date: Tue Nov 17 18:42:13 2015 -0800 +Date: Tue Nov 17 18:42:13 2015 -0800 Move things around @@ -438,7 +1447,7 @@ Date: Tue Nov 17 18:42:13 2015 -0800 commit dde8cc87bd880bd35baf764820f4c85bd0a58696 Merge: e97835a 167c327 Author: Behdad Esfahbod -Date: Tue Nov 17 18:40:10 2015 -0800 +Date: Tue Nov 17 18:40:10 2015 -0800 Merge pull request #163 from fanc999/msvc.src @@ -446,7 +1455,7 @@ Date: Tue Nov 17 18:40:10 2015 -0800 commit 167c3271778cd1a8c4433b9d2230901ce17c099e Author: Chun-wei Fan -Date: Mon Nov 9 17:17:56 2015 +0800 +Date: Mon Nov 9 17:17:56 2015 +0800 Fix build on MSVC >= 2012 @@ -470,16 +1479,16 @@ Date: Mon Nov 9 17:17:56 2015 +0800 C4800 is harmless but is so far an unavoidable side effect of using DEFINE_ENUM_FLAG_OPERATORS. - src/hb-buffer-private.hh | 6 +++--- + src/hb-buffer-private.hh | 6 +++--- src/hb-ot-layout-common-private.hh | 2 +- - src/hb-ot-layout-private.hh | 4 ++-- - src/hb-ot-map-private.hh | 2 +- - src/hb-private.hh | 11 +++++++++++ + src/hb-ot-layout-private.hh | 4 ++-- + src/hb-ot-map-private.hh | 2 +- + src/hb-private.hh | 11 +++++++++++ 5 files changed, 18 insertions(+), 7 deletions(-) commit 4d27bb87468a1b84387e7ce084e3d92c0fc8f065 Author: Chun-wei Fan -Date: Fri Nov 6 14:28:30 2015 +0800 +Date: Fri Nov 6 14:28:30 2015 +0800 hb-ot-shape-complex-arabic.cc: Fix build on Visual Studio @@ -492,7 +1501,7 @@ Date: Fri Nov 6 14:28:30 2015 +0800 commit a49e7b7e40127beba25f39ef3c10d7a77e2bb0f0 Author: Chun-wei Fan -Date: Tue Nov 3 18:49:34 2015 +0800 +Date: Tue Nov 3 18:49:34 2015 +0800 MSVC builds: Add fallback implementation for pre-2013 MSVC @@ -507,14 +1516,14 @@ Date: Tue Nov 3 18:49:34 2015 +0800 commit 998e8dda938cfef0146f1bfc4e8973a0e12d7d35 Author: Chun-wei Fan -Date: Mon Nov 2 16:55:29 2015 +0800 +Date: Mon Nov 2 16:55:29 2015 +0800 util: Fix build on Visual Studio Use the fallback implementation for lround() only on pre-2013 Visual Studio, and ensure we are clear about the types of the parameters for lround() and scalbnf(), since Visual Studio can be quite picky on - ambiguous parameter types. Also, use g_ascii_strcasecmp() rather than + ambiguous parameter types. Also, use g_ascii_strcasecmp() rather than strcasecmp() as we are already using GLib for this code and we are assured that g_ascii_strcasemp() is available. @@ -533,7 +1542,7 @@ Date: Mon Nov 2 16:55:29 2015 +0800 commit e97835ad43f5c68e8cb29599246cae0f4461d663 Author: Behdad Esfahbod -Date: Tue Nov 10 11:37:01 2015 -0800 +Date: Tue Nov 10 11:37:01 2015 -0800 [util] Fix crash when --output-file is specified but not --output-format @@ -544,7 +1553,7 @@ Date: Tue Nov 10 11:37:01 2015 -0800 commit d5f0d7c9fb14255388ab616f56e178cb7ca10ec2 Merge: 04ff23e 529a933 Author: Behdad Esfahbod -Date: Sat Nov 7 07:50:58 2015 -0800 +Date: Sat Nov 7 07:50:58 2015 -0800 Merge pull request #167 from KonstantinRitt/unicode_cp_opt @@ -552,11 +1561,11 @@ Date: Sat Nov 7 07:50:58 2015 -0800 commit 04ff23e73d847ab3a5da0e9fac4fbca19aefd284 Author: Behdad Esfahbod -Date: Fri Nov 6 16:29:44 2015 -0800 +Date: Fri Nov 6 16:29:44 2015 -0800 [arabic] Improve stretch length calculation - Err on the side of being too short, than too wide. Reduces chance + Err on the side of being too short, than too wide. Reduces chance of overlaps with neighboring glyphs. src/hb-ot-shape-complex-arabic.cc | 2 +- @@ -564,23 +1573,23 @@ Date: Fri Nov 6 16:29:44 2015 -0800 commit 59821ab8b413df3a444c38b80582a5137e364a70 Author: Behdad Esfahbod -Date: Fri Nov 6 16:27:44 2015 -0800 +Date: Fri Nov 6 16:27:44 2015 -0800 [arabic] Don't stretch over cased letters Addresses https://github.com/behdad/harfbuzz/commit/6e6f82b6f3dde0fc6c3c7d991d9ec6cfff57823d#commitcomment-14248516 - src/hb-ot-shape-complex-arabic.cc | 24 + src/hb-ot-shape-complex-arabic.cc | 24 +++++++++++++++++++++- - src/hb-unicode-private.hh | 20 + src/hb-unicode-private.hh | 20 ------------------ - .../script-syriac/misc/abbreviation-mark.txt | 4 ++-- + .../script-syriac/misc/abbreviation-mark.txt | 4 ++-- 3 files changed, 25 insertions(+), 23 deletions(-) commit 5337db29af39084d677a63154f404eca0c20cfeb Author: Behdad Esfahbod -Date: Fri Nov 6 16:18:09 2015 -0800 +Date: Fri Nov 6 16:18:09 2015 -0800 Revert "Don't process lookups if buffer is in error" @@ -595,7 +1604,7 @@ Date: Fri Nov 6 16:18:09 2015 -0800 commit 529a93312815dff3c2f37f880bf6ccb428bd3da0 Author: Konstantin Ritt -Date: Sat Nov 7 02:00:04 2015 +0400 +Date: Sat Nov 7 02:00:04 2015 +0400 Micro optimization to hb_utf16_t and hb_utf32_t ::prev() @@ -606,7 +1615,7 @@ Date: Sat Nov 7 02:00:04 2015 +0400 commit 44ae9be7a29eebd6003cad2fdb90b40512a9c8eb Author: Konstantin Ritt -Date: Sat Nov 7 01:58:38 2015 +0400 +Date: Sat Nov 7 01:58:38 2015 +0400 Nano optimization to hb_utf16_t and hb_utf32_t ::next() @@ -615,7 +1624,7 @@ Date: Sat Nov 7 01:58:38 2015 +0400 commit a6d7668a954a763a053f8af8edbff4731aa43729 Author: Behdad Esfahbod -Date: Fri Nov 6 09:46:54 2015 -0800 +Date: Fri Nov 6 09:46:54 2015 -0800 [fuzzing] Cap max buffer len at 128 @@ -624,7 +1633,7 @@ Date: Fri Nov 6 09:46:54 2015 -0800 commit f1c4adbcd3f6275e81e118ddadc9396f82daeccf Author: Behdad Esfahbod -Date: Fri Nov 6 09:46:05 2015 -0800 +Date: Fri Nov 6 09:46:05 2015 -0800 Fix typo @@ -633,17 +1642,17 @@ Date: Fri Nov 6 09:46:05 2015 -0800 commit 68b507a3c3c62c28c38e13fee733702bb703b6ca Author: Behdad Esfahbod -Date: Fri Nov 6 00:09:26 2015 -0800 +Date: Fri Nov 6 00:09:26 2015 -0800 Make sure we make progress in OOM situations src/hb-buffer-private.hh | 7 ++----- - src/hb-buffer.cc | 31 +++++++++++++++++++++++-------- + src/hb-buffer.cc | 31 +++++++++++++++++++++++-------- 2 files changed, 25 insertions(+), 13 deletions(-) commit 5a7eb5d4d862f402136044c19ead87ad098bd78f Author: Behdad Esfahbod -Date: Fri Nov 6 00:01:24 2015 -0800 +Date: Fri Nov 6 00:01:24 2015 -0800 [fuzzing] Add test case for OOM @@ -651,13 +1660,13 @@ Date: Fri Nov 6 00:01:24 2015 -0800 .../sha1sum/3511ff5c1647150595846ac414c595cccac34f18.ttf | Bin 0 -> 1483 bytes - test/shaping/fonts/sha1sum/MANIFEST | 2 +- - test/shaping/tests/fuzzed.tests | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 2 +- + test/shaping/tests/fuzzed.tests | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) commit f0599db761d7fc2d585d86e757a797f75ebc7499 Author: Behdad Esfahbod -Date: Thu Nov 5 23:52:41 2015 -0800 +Date: Thu Nov 5 23:52:41 2015 -0800 Fix hang in OOM situations @@ -668,7 +1677,7 @@ Date: Thu Nov 5 23:52:41 2015 -0800 commit f92bd86cc8c11d262d1830c631cb7c63fc9d4bc8 Author: Behdad Esfahbod -Date: Thu Nov 5 23:52:29 2015 -0800 +Date: Thu Nov 5 23:52:29 2015 -0800 Don't process lookups if buffer is in error @@ -677,35 +1686,35 @@ Date: Thu Nov 5 23:52:29 2015 -0800 commit 4301703bddb63a01651a0d58474bb15ac0ebbcf6 Author: Behdad Esfahbod -Date: Thu Nov 5 23:44:59 2015 -0800 +Date: Thu Nov 5 23:44:59 2015 -0800 Limit buffer max size growth https://github.com/behdad/harfbuzz/issues/161 src/hb-buffer-private.hh | 11 +++++++++++ - src/hb-buffer.cc | 8 ++++++++ - src/hb-ot-shape.cc | 6 ++++++ + src/hb-buffer.cc | 8 ++++++++ + src/hb-ot-shape.cc | 6 ++++++ test/fuzzing/Makefile.am | 2 ++ 4 files changed, 27 insertions(+) commit 19300183a6f0bac0d23f7a994b40a51e9c90d6e1 Author: Behdad Esfahbod -Date: Thu Nov 5 23:08:50 2015 -0800 +Date: Thu Nov 5 23:08:50 2015 -0800 [fuzzing] Add build system - configure.ac | 1 + - test/Makefile.am | 2 +- + configure.ac | 1 + + test/Makefile.am | 2 +- test/fuzzing/Makefile.am | 44 ++++++++++++++++++++++++++++++++++++++++++++ - test/fuzzing/README | 2 ++ + test/fuzzing/README | 2 ++ test/fuzzing/hb-fuzzer.cc | 4 ++-- 5 files changed, 50 insertions(+), 3 deletions(-) commit 9c9ad214af43685b00f6d8493b7807d6607d4e2d Author: Behdad Esfahbod -Date: Thu Nov 5 22:50:52 2015 -0800 +Date: Thu Nov 5 22:50:52 2015 -0800 [fuzzer] Add README @@ -716,7 +1725,7 @@ Date: Thu Nov 5 22:50:52 2015 -0800 commit 6e6f82b6f3dde0fc6c3c7d991d9ec6cfff57823d Author: Behdad Esfahbod -Date: Thu Nov 5 17:29:03 2015 -0800 +Date: Thu Nov 5 17:29:03 2015 -0800 Implement SYRIAC ABBREVIATION MARK with 'stch' feature @@ -727,16 +1736,16 @@ Date: Thu Nov 5 17:29:03 2015 -0800 Fixes https://github.com/behdad/harfbuzz/issues/141 - src/hb-ot-shape-complex-arabic.cc | 219 + src/hb-ot-shape-complex-arabic.cc | 219 ++++++++++++++++++++- - src/hb-unicode-private.hh | 19 ++ - .../shaper-arabic/script-syriac/misc/MANIFEST | 1 + - .../script-syriac/misc/abbreviation-mark.txt | 11 ++ + src/hb-unicode-private.hh | 19 ++ + .../shaper-arabic/script-syriac/misc/MANIFEST | 1 + + .../script-syriac/misc/abbreviation-mark.txt | 11 ++ 4 files changed, 244 insertions(+), 6 deletions(-) commit c743ec5886a1f6d57de26da33a770a8706be83d6 Author: Behdad Esfahbod -Date: Thu Nov 5 17:33:57 2015 -0800 +Date: Thu Nov 5 17:33:57 2015 -0800 [ft] Fix extents with negative scales @@ -747,7 +1756,7 @@ Date: Thu Nov 5 17:33:57 2015 -0800 commit 73fec3992acb492829bde1d885f1ebeed8dcc133 Author: Behdad Esfahbod -Date: Thu Nov 5 15:22:18 2015 -0800 +Date: Thu Nov 5 15:22:18 2015 -0800 Reserve a few scratch-flags bits for complex shapers @@ -756,7 +1765,7 @@ Date: Thu Nov 5 15:22:18 2015 -0800 commit 136863371c1402769426d892aef1b92f9ca1a25e Author: Behdad Esfahbod -Date: Thu Nov 5 13:24:15 2015 -0800 +Date: Thu Nov 5 13:24:15 2015 -0800 Add new shaper method postprocess_glyphs() @@ -774,12 +1783,12 @@ Date: Thu Nov 5 13:24:15 2015 -0800 src/hb-ot-shape-complex-thai.cc | 1 + src/hb-ot-shape-complex-tibetan.cc | 1 + src/hb-ot-shape-complex-use.cc | 1 + - src/hb-ot-shape.cc | 9 ++++++--- + src/hb-ot-shape.cc | 9 ++++++--- 11 files changed, 29 insertions(+), 7 deletions(-) commit 6c0ebd02c99e7536975ba7194832a1f33abd7faf Author: Behdad Esfahbod -Date: Thu Nov 5 11:37:48 2015 -0800 +Date: Thu Nov 5 11:37:48 2015 -0800 [util] If font has color, generate PNG with color @@ -790,7 +1799,7 @@ Date: Thu Nov 5 11:37:48 2015 -0800 commit e95eb23a4ee920eab1e2f4eec9cf490bb431452c Author: Behdad Esfahbod -Date: Wed Nov 4 22:55:11 2015 -0800 +Date: Wed Nov 4 22:55:11 2015 -0800 Don't try zeroing marks by GDEF if there are no non-ASCII @@ -801,7 +1810,7 @@ Date: Wed Nov 4 22:55:11 2015 -0800 commit 7fa54ed75aa30ae1d6ee9136ccb83b630c24fb65 Author: Behdad Esfahbod -Date: Wed Nov 4 22:54:49 2015 -0800 +Date: Wed Nov 4 22:54:49 2015 -0800 Don't try zeroing mark attachments by Unicode if there's no non-ASCII @@ -810,17 +1819,17 @@ Date: Wed Nov 4 22:54:49 2015 -0800 commit 550bd14d2b21ec2a2b509ff42f4df4341dbf2d46 Author: Behdad Esfahbod -Date: Wed Nov 4 22:58:58 2015 -0800 +Date: Wed Nov 4 22:58:58 2015 -0800 Actually commit changes for previous commit - src/hb-buffer-private.hh | 2 ++ + src/hb-buffer-private.hh | 2 ++ src/hb-ot-layout-gpos-table.hh | 15 ++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) commit ff31b3c1b8a2a21b57dba37eb5bb5db0579e0640 Author: Behdad Esfahbod -Date: Wed Nov 4 22:42:41 2015 -0800 +Date: Wed Nov 4 22:42:41 2015 -0800 Skip GPOS cursive / attachment adjustmnent if none happened @@ -831,7 +1840,7 @@ Date: Wed Nov 4 22:42:41 2015 -0800 commit 0f407325f6923db11d332585e8250e3646cb74d6 Author: Behdad Esfahbod -Date: Wed Nov 4 22:28:44 2015 -0800 +Date: Wed Nov 4 22:28:44 2015 -0800 Minor @@ -840,7 +1849,7 @@ Date: Wed Nov 4 22:28:44 2015 -0800 commit 497a6c2071cd0638e4c6af07621d01335fd963a9 Author: Behdad Esfahbod -Date: Wed Nov 4 22:24:19 2015 -0800 +Date: Wed Nov 4 22:24:19 2015 -0800 Skip forming clusters if text is all ASCII @@ -849,19 +1858,19 @@ Date: Wed Nov 4 22:24:19 2015 -0800 commit 28de104f15b80df4b678267c4488b7d09a42720c Author: Behdad Esfahbod -Date: Wed Nov 4 22:00:25 2015 -0800 +Date: Wed Nov 4 22:00:25 2015 -0800 Move variable-sized struct member to end Hopefully makes clang build happy src/hb-font-private.hh | 21 ++++++++++----------- - src/hb-font.cc | 20 ++++++++++++++++++++ + src/hb-font.cc | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+), 11 deletions(-) commit 5bc28b5f688ee90d103d052e98bc15d6e0e7e0b1 Author: Behdad Esfahbod -Date: Wed Nov 4 21:53:16 2015 -0800 +Date: Wed Nov 4 21:53:16 2015 -0800 Optimize positioning for when h_origin is nil @@ -870,7 +1879,7 @@ Date: Wed Nov 4 21:53:16 2015 -0800 commit 762770c964f9f0591bf4c44427f73ea3e1c51733 Author: Behdad Esfahbod -Date: Wed Nov 4 21:42:55 2015 -0800 +Date: Wed Nov 4 21:42:55 2015 -0800 Add font->has_...() to check for individual nil font funcs @@ -878,12 +1887,12 @@ Date: Wed Nov 4 21:42:55 2015 -0800 moments to getting this to compile... src/hb-font-private.hh | 19 +++++++++++++++++-- - src/hb-font.cc | 7 +++++++ + src/hb-font.cc | 7 +++++++ 2 files changed, 24 insertions(+), 2 deletions(-) commit 88e9a9bcae61421d9dd65715d25e5f20b2847c03 Author: Behdad Esfahbod -Date: Wed Nov 4 21:16:26 2015 -0800 +Date: Wed Nov 4 21:16:26 2015 -0800 Minor reshaping of hb_font_funcs_t implementation @@ -891,12 +1900,12 @@ Date: Wed Nov 4 21:16:26 2015 -0800 src/hb-font-private.hh | 80 ++++++++++++++++++++++++++------------------------ - src/hb-font.cc | 4 +-- + src/hb-font.cc | 4 +-- 2 files changed, 43 insertions(+), 41 deletions(-) commit a6a7715bac8b0c8f5473b84bc649c315ad4d2d51 Author: Behdad Esfahbod -Date: Wed Nov 4 20:51:21 2015 -0800 +Date: Wed Nov 4 20:51:21 2015 -0800 Comments @@ -905,7 +1914,7 @@ Date: Wed Nov 4 20:51:21 2015 -0800 commit 6c48ec830ffac00a920d047ed77acd1b05549074 Author: Behdad Esfahbod -Date: Wed Nov 4 20:47:42 2015 -0800 +Date: Wed Nov 4 20:47:42 2015 -0800 [ot] Remove font funcs that do nothing @@ -915,7 +1924,7 @@ Date: Wed Nov 4 20:47:42 2015 -0800 commit 75ea2daa1d9bbe235cd4a8570efb1913d58c3c62 Author: Behdad Esfahbod -Date: Wed Nov 4 20:43:59 2015 -0800 +Date: Wed Nov 4 20:43:59 2015 -0800 [ot] Port ot font funcs to allocated object @@ -924,7 +1933,7 @@ Date: Wed Nov 4 20:43:59 2015 -0800 commit 44f82750807475aa5b16099ccccd917d488df703 Author: Behdad Esfahbod -Date: Wed Nov 4 20:40:05 2015 -0800 +Date: Wed Nov 4 20:40:05 2015 -0800 [ft] Remove font funcs that do nothing @@ -933,7 +1942,7 @@ Date: Wed Nov 4 20:40:05 2015 -0800 commit 7918c261efd283e0428ce7836e9e42768a6aa05c Author: Behdad Esfahbod -Date: Wed Nov 4 20:37:49 2015 -0800 +Date: Wed Nov 4 20:37:49 2015 -0800 [ft] Port ft font funcs to allocated object @@ -942,7 +1951,7 @@ Date: Wed Nov 4 20:37:49 2015 -0800 commit da29b43794cfa3f9a602c34b33c5d8a9c36f87b5 Author: Behdad Esfahbod -Date: Wed Nov 4 20:22:44 2015 -0800 +Date: Wed Nov 4 20:22:44 2015 -0800 Separate nil font-funcs from parent-peeking font-funcs @@ -956,31 +1965,31 @@ Date: Wed Nov 4 20:22:44 2015 -0800 commit bee901b38ef3c26a04f69c299c8d5e028a0090e9 Author: Behdad Esfahbod -Date: Wed Nov 4 19:28:17 2015 -0800 +Date: Wed Nov 4 19:28:17 2015 -0800 Optimize positioning direction calculations It makes the binary smaller AND faster. Yumm! src/hb-font-private.hh | 40 +++++++++++++++++++++++++++++++++++++++ - src/hb-ot-shape.cc | 51 + src/hb-ot-shape.cc | 51 +++++++++++++++++++++++++++----------------------- 2 files changed, 68 insertions(+), 23 deletions(-) commit e3e4bb011ae1a2f1ba05e7ea450595b185304bec Author: Behdad Esfahbod -Date: Wed Nov 4 18:58:02 2015 -0800 +Date: Wed Nov 4 18:58:02 2015 -0800 Don't do fractions if buffer is ASCII-only src/hb-buffer-private.hh | 5 +++-- src/hb-ot-layout-private.hh | 1 + - src/hb-ot-shape.cc | 3 ++- + src/hb-ot-shape.cc | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) commit 6986208ba3b395534f4c7bcfa51df6bf9038f717 Author: Behdad Esfahbod -Date: Wed Nov 4 18:46:22 2015 -0800 +Date: Wed Nov 4 18:46:22 2015 -0800 Optimize runs without Default_Ignorable's @@ -990,13 +1999,13 @@ Date: Wed Nov 4 18:46:22 2015 -0800 src/hb-buffer-private.hh | 3 ++- src/hb-ot-layout-private.hh | 4 +++- src/hb-ot-shape-normalize.cc | 4 ++-- - src/hb-ot-shape.cc | 10 ++++++---- - src/hb-private.hh | 3 +++ + src/hb-ot-shape.cc | 10 ++++++---- + src/hb-private.hh | 3 +++ 5 files changed, 16 insertions(+), 8 deletions(-) commit 14c2de321826c36037adde859ccca3e2011325a9 Author: Behdad Esfahbod -Date: Wed Nov 4 18:00:57 2015 -0800 +Date: Wed Nov 4 18:00:57 2015 -0800 Limit max edits during sanitize to 8 @@ -1011,7 +2020,7 @@ Date: Wed Nov 4 18:00:57 2015 -0800 commit 9cbc39aef962a95b0eba32c24ff9c415d1316d56 Author: Behdad Esfahbod -Date: Wed Nov 4 18:00:53 2015 -0800 +Date: Wed Nov 4 18:00:53 2015 -0800 Minor @@ -1020,7 +2029,7 @@ Date: Wed Nov 4 18:00:53 2015 -0800 commit 52e6c4e15893ed1cb0997795912a07b3e446b65a Author: Behdad Esfahbod -Date: Wed Nov 4 17:45:06 2015 -0800 +Date: Wed Nov 4 17:45:06 2015 -0800 If font doesn't support U+2011, fall back to U+2010 @@ -1031,7 +2040,7 @@ Date: Wed Nov 4 17:45:06 2015 -0800 commit 75483aafa6ad02d6391712d082d093823edcd758 Author: Behdad Esfahbod -Date: Wed Nov 4 17:43:36 2015 -0800 +Date: Wed Nov 4 17:43:36 2015 -0800 Untangle if/else waterfall @@ -1041,24 +2050,24 @@ Date: Wed Nov 4 17:43:36 2015 -0800 commit 04fd8517f85ae9aa05b44f25578d2b19abfef7cb Author: Behdad Esfahbod -Date: Wed Nov 4 17:38:22 2015 -0800 +Date: Wed Nov 4 17:38:22 2015 -0800 Add tests for hyphen fallback U+2011 is equivaent of U+2010, so we should do the fallback for it. Currently fails. - test/shaping/Makefile.am | 1 + + test/shaping/Makefile.am | 1 + .../sha1sum/1c04a16f32a39c26c851b7fc014d2e8d298ba2b8.ttf | Bin 0 -> 820 bytes - test/shaping/fonts/sha1sum/MANIFEST | 2 ++ - test/shaping/tests/MANIFEST | 1 + - test/shaping/tests/hyphens.tests | 2 ++ + test/shaping/fonts/sha1sum/MANIFEST | 2 ++ + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/hyphens.tests | 2 ++ 5 files changed, 6 insertions(+) commit 550417117da7e14457a11f49a20145311f58587b Author: Behdad Esfahbod -Date: Wed Nov 4 17:37:30 2015 -0800 +Date: Wed Nov 4 17:37:30 2015 -0800 [test] Drop hintings when subsetting fonts to record @@ -1067,7 +2076,7 @@ Date: Wed Nov 4 17:37:30 2015 -0800 commit 49ef630936325b2e56a870fcef9aa8473a8f8526 Author: Behdad Esfahbod -Date: Wed Nov 4 17:27:07 2015 -0800 +Date: Wed Nov 4 17:27:07 2015 -0800 Adjust the width of various spaces if font does not cover them @@ -1075,38 +2084,38 @@ Date: Wed Nov 4 17:27:07 2015 -0800 https://github.com/behdad/harfbuzz/commit/81ef4f407d9c7bd98cf62cef951dc538b13442eb There's no way to disable this fallback, but I don't think it would - be needed. Let's hope for the best! + be needed. Let's hope for the best! Fixes https://github.com/behdad/harfbuzz/issues/153 - src/hb-buffer-private.hh | 7 ++++ - src/hb-buffer.cc | 2 ++ - src/hb-ot-shape-fallback-private.hh | 4 +++ - src/hb-ot-shape-fallback.cc | 67 + src/hb-buffer-private.hh | 7 ++++ + src/hb-buffer.cc | 2 ++ + src/hb-ot-shape-fallback-private.hh | 4 +++ + src/hb-ot-shape-fallback.cc | 67 +++++++++++++++++++++++++++++++++++++ - src/hb-ot-shape-normalize.cc | 1 + - src/hb-ot-shape.cc | 3 ++ - src/hb-unicode-private.hh | 56 +++++++++++++++++-------------- + src/hb-ot-shape-normalize.cc | 1 + + src/hb-ot-shape.cc | 3 ++ + src/hb-unicode-private.hh | 56 +++++++++++++++++-------------- test/shaping/tests/spaces.tests | 24 ++++++------- 8 files changed, 126 insertions(+), 38 deletions(-) commit aa7044de0ceacd71cab19212d266c3a66c03b41e Author: Behdad Esfahbod -Date: Wed Nov 4 16:25:57 2015 -0800 +Date: Wed Nov 4 16:25:57 2015 -0800 Generalize flags types - src/hb-buffer-private.hh | 3 +++ + src/hb-buffer-private.hh | 3 +++ src/hb-ot-layout-common-private.hh | 5 +++++ - src/hb-ot-layout-private.hh | 8 +++++--- - src/hb-ot-map-private.hh | 16 +--------------- - src/hb-ot-shape.cc | 2 +- - src/hb-private.hh | 14 ++++++++++++++ + src/hb-ot-layout-private.hh | 8 +++++--- + src/hb-ot-map-private.hh | 16 +--------------- + src/hb-ot-shape.cc | 2 +- + src/hb-private.hh | 14 ++++++++++++++ 6 files changed, 29 insertions(+), 19 deletions(-) commit 7793aad946e09b53523b30d57de85abd1d15f8b6 Author: Behdad Esfahbod -Date: Wed Nov 4 14:48:46 2015 -0800 +Date: Wed Nov 4 14:48:46 2015 -0800 Normalize various spaces to space if font doesn't support @@ -1116,26 +2125,26 @@ Date: Wed Nov 4 14:48:46 2015 -0800 It also remembers which space character it was, such that later on we can approximate the width of this particular space - character. That part is not implemented yet. + character. That part is not implemented yet. We normalize all GC=Zs chars except for U+1680 OGHA SPACE MARK, which is better left alone. - src/hb-ot-layout-private.hh | 47 + src/hb-ot-layout-private.hh | 47 +++------------------ - src/hb-ot-shape-normalize.cc | 12 +++++- - src/hb-unicode-private.hh | 40 + src/hb-ot-shape-normalize.cc | 12 +++++- + src/hb-unicode-private.hh | 40 ++++++++++++++++++ - test/shaping/Makefile.am | 1 + + test/shaping/Makefile.am | 1 + .../1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf | Bin 0 -> 316 bytes - test/shaping/fonts/sha1sum/MANIFEST | 1 + - test/shaping/tests/MANIFEST | 1 + - test/shaping/tests/spaces.tests | 17 ++++++++ + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/spaces.tests | 17 ++++++++ 8 files changed, 76 insertions(+), 43 deletions(-) commit 8b3c7f9ede77052225cff8495d660860bf9c7629 Author: Behdad Esfahbod -Date: Wed Nov 4 15:30:48 2015 -0800 +Date: Wed Nov 4 15:30:48 2015 -0800 [test] Support recording multiple lines of text in record-test.sh @@ -1144,7 +2153,7 @@ Date: Wed Nov 4 15:30:48 2015 -0800 commit 85658394809fe0593ab5dfb30fd96118765c7dc5 Author: Behdad Esfahbod -Date: Wed Nov 4 14:46:52 2015 -0800 +Date: Wed Nov 4 14:46:52 2015 -0800 Protect against possible invalid-memory access after OOM @@ -1153,7 +2162,7 @@ Date: Wed Nov 4 14:46:52 2015 -0800 commit 4cc80bed25450af3d84a30ea417fa9275b15e014 Author: Behdad Esfahbod -Date: Wed Nov 4 14:46:10 2015 -0800 +Date: Wed Nov 4 14:46:10 2015 -0800 Fix typo! @@ -1164,7 +2173,7 @@ Date: Wed Nov 4 14:46:10 2015 -0800 commit 9ac4b9656dd78ffd129bc3d560a92e2692bc3058 Author: Behdad Esfahbod -Date: Wed Nov 4 14:18:39 2015 -0800 +Date: Wed Nov 4 14:18:39 2015 -0800 Add Unicode space category @@ -1176,7 +2185,7 @@ Date: Wed Nov 4 14:18:39 2015 -0800 commit 8249ec3f86510fd24462ce71ed64a6978f0ade17 Author: Behdad Esfahbod -Date: Wed Nov 4 13:26:17 2015 -0800 +Date: Wed Nov 4 13:26:17 2015 -0800 Make top-byte of unicode_props available to be used differently per-GC @@ -1185,17 +2194,17 @@ Date: Wed Nov 4 13:26:17 2015 -0800 commit cc5d3a33882b52f906ee4346707700f5e846d2ac Author: Behdad Esfahbod -Date: Wed Nov 4 13:21:25 2015 -0800 +Date: Wed Nov 4 13:21:25 2015 -0800 Towards using top-byte of unicode-props for more things src/hb-ot-layout-gsubgpos-private.hh | 1 - - src/hb-ot-layout-private.hh | 3 ++- + src/hb-ot-layout-private.hh | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) commit 2f38dde5a1ea5459789fabaee661cae9235d204e Author: Behdad Esfahbod -Date: Wed Nov 4 13:17:33 2015 -0800 +Date: Wed Nov 4 13:17:33 2015 -0800 Add _hb_glyph_info_is_unicode_mark() @@ -1206,17 +2215,17 @@ Date: Wed Nov 4 13:17:33 2015 -0800 commit 90d75f93bb85aeb627c4e6bb9e4cbd75895c99f7 Author: Behdad Esfahbod -Date: Tue Nov 3 12:58:12 2015 -0800 +Date: Tue Nov 3 12:58:12 2015 -0800 Tighten ccc-setting a bit and document it src/hb-ot-layout-private.hh | 12 +++++++++++- - src/hb-unicode-private.hh | 5 +++++ + src/hb-unicode-private.hh | 5 +++++ 2 files changed, 16 insertions(+), 1 deletion(-) commit 2f0dfd43cdc2259e6117704f8077ab6951c761e5 Author: Behdad Esfahbod -Date: Tue Nov 3 12:28:34 2015 -0800 +Date: Tue Nov 3 12:28:34 2015 -0800 Fix test expectation @@ -1225,7 +2234,7 @@ Date: Tue Nov 3 12:28:34 2015 -0800 commit df698f3299d92867e3305715f675b2621c316acd Author: Behdad Esfahbod -Date: Tue Nov 3 12:15:12 2015 -0800 +Date: Tue Nov 3 12:15:12 2015 -0800 [ot-font] Fix hmtx table length checking, *again* @@ -1241,29 +2250,29 @@ Date: Tue Nov 3 12:15:12 2015 -0800 https://github.com/behdad/harfbuzz/issues/139#issuecomment-153449473 Fixes https://github.com/behdad/harfbuzz/issues/156 - src/hb-ot-font.cc | 4 ++-- + src/hb-ot-font.cc | 4 ++-- .../sha1sum/8240789f6d12d4cfc4b5e8e6f246c3701bcf861f.ttf | Bin 0 -> 633 bytes - test/shaping/fonts/sha1sum/MANIFEST | 1 + - test/shaping/tests/fuzzed.tests | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/fuzzed.tests | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) commit 3530cc2d7c3b7102902cb0e38b0bf9f46188078d Author: Behdad Esfahbod -Date: Tue Nov 3 11:34:47 2015 -0800 +Date: Tue Nov 3 11:34:47 2015 -0800 [util] Fix option-parsing leaks - util/helper-cairo.cc | 7 +++++-- + util/helper-cairo.cc | 7 +++++-- util/main-font-text.hh | 22 ++++++++++++++++++--- - util/options.cc | 21 ++++++++++---------- - util/options.hh | 53 + util/options.cc | 21 ++++++++++---------- + util/options.hh | 53 +++++++++++++++++++++++++++++++++----------------- 4 files changed, 70 insertions(+), 33 deletions(-) commit 642135f3b2d6d6eb800153c76c4718239733c0e6 Author: Behdad Esfahbod -Date: Tue Nov 3 11:26:34 2015 -0800 +Date: Tue Nov 3 11:26:34 2015 -0800 [util] In --debug mode, duplicate font data @@ -1280,7 +2289,7 @@ Date: Tue Nov 3 11:26:34 2015 -0800 commit ed2024ef93ac3af214082016e5aa8c14db9d7515 Author: Behdad Esfahbod -Date: Mon Nov 2 17:58:12 2015 -0800 +Date: Mon Nov 2 17:58:12 2015 -0800 [perf] Micro-optimize @@ -1289,7 +2298,7 @@ Date: Mon Nov 2 17:58:12 2015 -0800 commit 76a5310a830c7ae12037b768c5043bef0ff733a0 Author: Behdad Esfahbod -Date: Mon Nov 2 17:52:45 2015 -0800 +Date: Mon Nov 2 17:52:45 2015 -0800 Remove irrelevant comment @@ -1302,7 +2311,7 @@ Date: Mon Nov 2 17:52:45 2015 -0800 commit 8259669fbd1b070fc02287325894caf1bc4d590e Author: Behdad Esfahbod -Date: Mon Nov 2 17:44:05 2015 -0800 +Date: Mon Nov 2 17:44:05 2015 -0800 Minor @@ -1312,7 +2321,7 @@ Date: Mon Nov 2 17:44:05 2015 -0800 commit 9382c471eabce8d36d3a73c97499ab60af422716 Author: Behdad Esfahbod -Date: Mon Nov 2 17:36:51 2015 -0800 +Date: Mon Nov 2 17:36:51 2015 -0800 Combine unicode_props0/1 into a uint16 @@ -1324,7 +2333,7 @@ Date: Mon Nov 2 17:36:51 2015 -0800 commit 71277185454482cff9b0c10b85c416eb4d6e0ed9 Author: Behdad Esfahbod -Date: Mon Nov 2 17:27:48 2015 -0800 +Date: Mon Nov 2 17:27:48 2015 -0800 [perf] Only call combining_class() for marks @@ -1336,7 +2345,7 @@ Date: Mon Nov 2 17:27:48 2015 -0800 commit 5ba450407b9d9856453e63a815499da8721ff6a7 Author: Behdad Esfahbod -Date: Mon Nov 2 15:43:08 2015 -0800 +Date: Mon Nov 2 15:43:08 2015 -0800 Make max context-length and max nesting level configurable @@ -1349,7 +2358,7 @@ Date: Mon Nov 2 15:43:08 2015 -0800 commit 67f8821fb25d9bd55719f5e29a582ae1af4b02b3 Author: Behdad Esfahbod -Date: Mon Nov 2 15:37:29 2015 -0800 +Date: Mon Nov 2 15:37:29 2015 -0800 [ot] Make bad-hmtx handling match FreeType @@ -1358,13 +2367,13 @@ Date: Mon Nov 2 15:37:29 2015 -0800 on FreeType behavior for badly-broken fonts. Fixes failing test with FreeType master. - src/hb-ot-font.cc | 24 ++++++++++++++---------- + src/hb-ot-font.cc | 24 ++++++++++++++---------- test/shaping/tests/fuzzed.tests | 10 +++++----- 2 files changed, 19 insertions(+), 15 deletions(-) commit 672ca3b4e65a75fb3a418ec5d117ad242a98acbb Author: Behdad Esfahbod -Date: Mon Oct 26 14:05:05 2015 -0700 +Date: Mon Oct 26 14:05:05 2015 -0700 Use templates for making sure expression is constant @@ -1373,7 +2382,7 @@ Date: Mon Oct 26 14:05:05 2015 -0700 commit 5c8174eda32c08187bc2ed40eefa1017f5b40668 Author: Behdad Esfahbod -Date: Wed Oct 21 18:51:40 2015 -0200 +Date: Wed Oct 21 18:51:40 2015 -0200 Update comments for removal of compat decompositions @@ -1382,7 +2391,7 @@ Date: Wed Oct 21 18:51:40 2015 -0200 commit f6799700404c49ae0a6018fd51be19551c76768a Author: Behdad Esfahbod -Date: Wed Oct 21 17:20:55 2015 -0200 +Date: Wed Oct 21 17:20:55 2015 -0200 Disable compatibility decomposition usage during normalization @@ -1393,7 +2402,7 @@ Date: Wed Oct 21 17:20:55 2015 -0200 commit ce889189c1f8ef5b400a17f623dcb8b935d1102b Author: Behdad Esfahbod -Date: Wed Oct 21 11:23:12 2015 -0200 +Date: Wed Oct 21 11:23:12 2015 -0200 Fix two more -Wshadow warnings @@ -1404,7 +2413,7 @@ Date: Wed Oct 21 11:23:12 2015 -0200 commit 4a6b1eedbb0044b57505eea65a329d2dc4f9f917 Author: Behdad Esfahbod -Date: Wed Oct 21 11:20:55 2015 -0200 +Date: Wed Oct 21 11:20:55 2015 -0200 Fix one more -Wshadow warning @@ -1415,7 +2424,7 @@ Date: Wed Oct 21 11:20:55 2015 -0200 commit 6f932bc8f9045b224613a617af2b4f3450c79467 Author: Behdad Esfahbod -Date: Wed Oct 21 11:16:49 2015 -0200 +Date: Wed Oct 21 11:16:49 2015 -0200 Fix a few more -Wshadow-local warnings @@ -1428,7 +2437,7 @@ Date: Wed Oct 21 11:16:49 2015 -0200 commit b90cb366d7723c28758c6b75a0770613fbb5456e Author: Behdad Esfahbod -Date: Wed Oct 21 11:13:21 2015 -0200 +Date: Wed Oct 21 11:13:21 2015 -0200 Fix one -Wshadow-compatible-local warning @@ -1439,7 +2448,7 @@ Date: Wed Oct 21 11:13:21 2015 -0200 commit 50e5750bd8670b4cf4463471a2348d4c99c9d054 Author: Behdad Esfahbod -Date: Wed Oct 21 11:10:10 2015 -0200 +Date: Wed Oct 21 11:10:10 2015 -0200 Avoid unnecessary cast to 64-bit @@ -1452,7 +2461,7 @@ Date: Wed Oct 21 11:10:10 2015 -0200 commit 305d2fbf5a2db51447c8ed894a48a88896930673 Author: Behdad Esfahbod -Date: Wed Oct 21 11:04:28 2015 -0200 +Date: Wed Oct 21 11:04:28 2015 -0200 Add HB_FALLTHROUGH @@ -1460,13 +2469,25 @@ Date: Wed Oct 21 11:04:28 2015 -0200 src/hb-ot-shape-complex-indic.cc | 2 +- src/hb-ot-shape-complex-thai.cc | 2 +- - src/hb-ot-shape-fallback.cc | 4 +++- - src/hb-private.hh | 30 ++++++++++++++++++++++++++++++ + src/hb-ot-shape-fallback.cc | 4 +++- + src/hb-private.hh | 30 ++++++++++++++++++++++++++++++ 4 files changed, 35 insertions(+), 3 deletions(-) +commit f35b3e931ddacd075c5d0810e9b17de07b232ee2 +Author: Ebrahim Byagowi +Date: Fri Sep 11 09:48:12 2015 +0430 + + Add a prototype of DirectWrite as a shaping backend + + src/hb-directwrite.cc | 827 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + src/hb-directwrite.h | 34 +++ + src/hb-shaper-list.hh | 3 + + 3 files changed, 864 insertions(+) + commit 6486e3755482563ecd89aeb3f8348ed190945e26 Author: Behdad Esfahbod -Date: Tue Oct 20 16:39:41 2015 -0200 +Date: Tue Oct 20 16:39:41 2015 -0200 Fix typo @@ -1475,7 +2496,7 @@ Date: Tue Oct 20 16:39:41 2015 -0200 commit 753ea7b90904c951c199861409458bea182abb37 Author: Behdad Esfahbod -Date: Tue Oct 20 15:21:18 2015 -0200 +Date: Tue Oct 20 15:21:18 2015 -0200 Add BUILD.md to dist @@ -1485,7 +2506,7 @@ Date: Tue Oct 20 15:21:18 2015 -0200 commit 5d7a30fde09320c2c62c7c73570ce3f2e298eba6 Merge: 904b0dc 2fb95a0 Author: Behdad Esfahbod -Date: Tue Oct 20 15:19:41 2015 -0200 +Date: Tue Oct 20 15:19:41 2015 -0200 Merge pull request #148 from ebraminio/inst @@ -1494,7 +2515,7 @@ Date: Tue Oct 20 15:19:41 2015 -0200 commit 904b0dc3811464cf61dc9457664de95ee4f61a86 Merge: 86cadc2 ba096bc Author: Behdad Esfahbod -Date: Mon Oct 19 16:59:43 2015 -0200 +Date: Mon Oct 19 16:59:43 2015 -0200 Merge pull request #147 from ebraminio/dockerci @@ -1502,7 +2523,7 @@ Date: Mon Oct 19 16:59:43 2015 -0200 commit ba096bcc28ca80e2096e0a15191848fcd175e395 Author: Ebrahim Byagowi -Date: Mon Oct 19 21:41:01 2015 +0330 +Date: Mon Oct 19 21:41:01 2015 +0330 [ci] change to docker infrastructure @@ -1511,7 +2532,7 @@ Date: Mon Oct 19 21:41:01 2015 +0330 commit 2fb95a0c9d2cb8b03b7c158706d6b0e41283a6df Author: Ebrahim Byagowi -Date: Mon Oct 19 22:02:12 2015 +0330 +Date: Mon Oct 19 22:02:12 2015 +0330 Add BUILD.md based on harfbuzz.org docs @@ -1520,17 +2541,17 @@ Date: Mon Oct 19 22:02:12 2015 +0330 commit 86cadc2cd4171050e9d74306b76c42f6ec74b861 Author: Behdad Esfahbod -Date: Thu Oct 15 20:25:29 2015 -0300 +Date: Thu Oct 15 20:25:29 2015 -0300 1.0.6 - NEWS | 13 +++++++++++++ + NEWS | 13 +++++++++++++ configure.ac | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) commit ca97ea7aa2cb7186f432aaba76f4f151aa90c1d0 Author: Behdad Esfahbod -Date: Thu Oct 15 20:20:22 2015 -0300 +Date: Thu Oct 15 20:20:22 2015 -0300 [ft] Revert change-of-behavior of hb_ft_font_create() introduced in 1.0.5 @@ -1549,7 +2570,7 @@ Date: Thu Oct 15 20:20:22 2015 -0300 commit 338ffec9e4a5819f2be21c3a320a567378c977b1 Author: Behdad Esfahbod -Date: Thu Oct 15 12:55:57 2015 -0300 +Date: Thu Oct 15 12:55:57 2015 -0300 Add tests for a couple of fixed issues found by libFuzzer @@ -1561,13 +2582,13 @@ Date: Thu Oct 15 12:55:57 2015 -0300 1024 bytes .../sha1sum/641bd9db850193064d17575053ae2bf8ec149ddc.ttf | Bin 0 -> 305 bytes - test/shaping/fonts/sha1sum/MANIFEST | 2 ++ - test/shaping/tests/fuzzed.tests | 2 ++ + test/shaping/fonts/sha1sum/MANIFEST | 2 ++ + test/shaping/tests/fuzzed.tests | 2 ++ 4 files changed, 4 insertions(+) commit 63ef0b41dc48d6112d1918c1b1de9de8ea90adb5 Author: Behdad Esfahbod -Date: Thu Oct 15 12:47:22 2015 -0300 +Date: Thu Oct 15 12:47:22 2015 -0300 [ot-font] Fix hmtx wrong table length check @@ -1580,7 +2601,7 @@ Date: Thu Oct 15 12:47:22 2015 -0300 commit 613e630617074eb9b62b794cc37c9b42a7fb079b Author: Behdad Esfahbod -Date: Tue Oct 13 23:33:28 2015 -0300 +Date: Tue Oct 13 23:33:28 2015 -0300 Reduce max nesting level from 8 to 6 @@ -1595,17 +2616,17 @@ Date: Tue Oct 13 23:33:28 2015 -0300 commit ab170529246ad80830bef2b3c8b48e9a8d2b7483 Author: Behdad Esfahbod -Date: Tue Oct 13 10:55:33 2015 -0300 +Date: Tue Oct 13 10:55:33 2015 -0300 1.0.5 - NEWS | 24 ++++++++++++++++++++++++ + NEWS | 24 ++++++++++++++++++++++++ configure.ac | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) commit ed13e2ce509408f849255be1d3cc3dbd7dbb3ba2 Author: Behdad Esfahbod -Date: Tue Oct 13 10:32:56 2015 -0300 +Date: Tue Oct 13 10:32:56 2015 -0300 [ot-font] Fix leak @@ -1616,19 +2637,19 @@ Date: Tue Oct 13 10:32:56 2015 -0300 commit 55db94be2b754ba9b9121f09abcf8496c798affc Author: Behdad Esfahbod -Date: Tue Oct 13 00:33:59 2015 -0400 +Date: Tue Oct 13 00:33:59 2015 -0400 Add test for previous commit .../sha1sum/0509e80afb379d16560e9e47bdd7d888bebdebc6.ttf | Bin 0 -> 61 bytes - test/shaping/fonts/sha1sum/MANIFEST | 1 + - test/shaping/tests/fuzzed.tests | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/fuzzed.tests | 1 + 3 files changed, 2 insertions(+) commit f96664974774bfeb237a7274f512f64aaafb201e Author: Behdad Esfahbod -Date: Tue Oct 13 00:30:50 2015 -0400 +Date: Tue Oct 13 00:30:50 2015 -0400 Fix another memory access issue discovered by libFuzzer @@ -1640,7 +2661,7 @@ Date: Tue Oct 13 00:30:50 2015 -0400 commit c1a5dc46c2231f7b62421e06b9766ccfebaf3ef5 Author: Behdad Esfahbod -Date: Mon Oct 12 17:39:52 2015 -0400 +Date: Mon Oct 12 17:39:52 2015 -0400 [fuzz] Add fuzzing script from kcc@ @@ -1652,7 +2673,7 @@ Date: Mon Oct 12 17:39:52 2015 -0400 commit cc6ea308d4c99b9dd6d625fa3a9b0ef62fa2614f Author: Behdad Esfahbod -Date: Mon Oct 12 17:21:52 2015 -0400 +Date: Mon Oct 12 17:21:52 2015 -0400 Extern "C" custom-allocator declerations @@ -1661,19 +2682,19 @@ Date: Mon Oct 12 17:21:52 2015 -0400 commit 98c6fccc00062ead7a86892dd059aa13d266b981 Author: Behdad Esfahbod -Date: Sun Oct 11 21:41:04 2015 -0400 +Date: Sun Oct 11 21:41:04 2015 -0400 Add test for ee9b0b6cb5fdb08671ab064f26c299135f828260 .../sha1sum/5a5daf5eb5a4db77a2baa3ad9c7a6ed6e0655fa8.ttf | Bin 0 -> 61 bytes - test/shaping/fonts/sha1sum/MANIFEST | 1 + - test/shaping/tests/fuzzed.tests | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/fuzzed.tests | 1 + 3 files changed, 2 insertions(+) commit 50f489a0a013fc589626bb532a9f64f50bb41f58 Author: Behdad Esfahbod -Date: Sun Oct 11 20:59:29 2015 -0400 +Date: Sun Oct 11 20:59:29 2015 -0400 Typo @@ -1682,7 +2703,7 @@ Date: Sun Oct 11 20:59:29 2015 -0400 commit ee9b0b6cb5fdb08671ab064f26c299135f828260 Author: Behdad Esfahbod -Date: Fri Oct 9 14:23:15 2015 -0400 +Date: Fri Oct 9 14:23:15 2015 -0400 Fix another sanitize bug @@ -1693,21 +2714,21 @@ Date: Fri Oct 9 14:23:15 2015 -0400 commit 34379b49e6922b86c15ee62f7fe3bf016cdc2514 Author: Behdad Esfahbod -Date: Fri Oct 9 12:34:02 2015 -0400 +Date: Fri Oct 9 12:34:02 2015 -0400 Add test for previous fix - test/shaping/Makefile.am | 1 + + test/shaping/Makefile.am | 1 + .../sha1sum/1a6f1687b7a221f9f2c834b0b360d3c8463b6daf.ttf | Bin 0 -> 64 bytes - test/shaping/fonts/sha1sum/MANIFEST | 1 + - test/shaping/tests/MANIFEST | 1 + - test/shaping/tests/fuzzed.tests | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/fuzzed.tests | 1 + 5 files changed, 4 insertions(+) commit f396fbb000dc1c8acddbf6a16e193b328c5e551e Author: Behdad Esfahbod -Date: Fri Oct 9 12:25:55 2015 -0400 +Date: Fri Oct 9 12:25:55 2015 -0400 Fix return value of sanitize when subformat is not readable @@ -1716,7 +2737,7 @@ Date: Fri Oct 9 12:25:55 2015 -0400 This was caught by "libFuzzer" testing. - src/hb-open-type-private.hh | 2 ++ + src/hb-open-type-private.hh | 2 ++ src/hb-ot-layout-gpos-table.hh | 15 +++++++-------- src/hb-ot-layout-gsub-table.hh | 13 ++++++------- src/hb-ot-layout-gsubgpos-private.hh | 8 ++++---- @@ -1724,19 +2745,19 @@ Date: Fri Oct 9 12:25:55 2015 -0400 commit 77a1a2bc18e7b04d4e352a8777ccce345b2f8659 Author: Behdad Esfahbod -Date: Fri Oct 9 12:20:58 2015 -0400 +Date: Fri Oct 9 12:20:58 2015 -0400 Add hb_dispatch_context_t - src/hb-open-type-private.hh | 26 ++++++++++++++++++++++---- + src/hb-open-type-private.hh | 26 ++++++++++++++++++++++---- src/hb-ot-layout-gsubgpos-private.hh | 36 ++++++++++++------------------------ - src/hb-ot-layout.cc | 8 +++----- + src/hb-ot-layout.cc | 8 +++----- 3 files changed, 37 insertions(+), 33 deletions(-) commit 3e905e396bcd745bda88e751998a76556c5cb8c6 Author: Behdad Esfahbod -Date: Thu Oct 8 12:51:02 2015 -0400 +Date: Thu Oct 8 12:51:02 2015 -0400 Add hb_font_set_parent() @@ -1745,13 +2766,13 @@ Date: Thu Oct 8 12:51:02 2015 -0400 parent into a font... src/hb-font.cc | 26 ++++++++++++++++++++++++++ - src/hb-font.h | 4 ++++ + src/hb-font.h | 4 ++++ test/api/test-font.c | 12 ++++++++++++ 3 files changed, 42 insertions(+) commit edeb3dabf4a589d67c3f1da7ba43a74e4d3a9afd Author: Behdad Esfahbod -Date: Thu Oct 8 12:47:15 2015 -0400 +Date: Thu Oct 8 12:47:15 2015 -0400 [ft] Add version for new API @@ -1760,7 +2781,7 @@ Date: Thu Oct 8 12:47:15 2015 -0400 commit 2a9627c5641cd000e2adff0e42a0dc687b53ec70 Author: Behdad Esfahbod -Date: Wed Oct 7 17:33:20 2015 -0400 +Date: Wed Oct 7 17:33:20 2015 -0400 [ft] API: Add hb_font_[sg]et_load_flags() API @@ -1777,7 +2798,7 @@ Date: Wed Oct 7 17:33:20 2015 -0400 commit 3224a594dcf2164b5585b4ccba34f244af3f61b9 Author: Behdad Esfahbod -Date: Wed Oct 7 17:33:02 2015 -0400 +Date: Wed Oct 7 17:33:02 2015 -0400 Minor @@ -1786,7 +2807,7 @@ Date: Wed Oct 7 17:33:02 2015 -0400 commit 52b418555b62a3b25399f202c1fa72ab7288c224 Author: Behdad Esfahbod -Date: Sat Oct 3 13:20:55 2015 +0100 +Date: Sat Oct 3 13:20:55 2015 +0100 Allow compiling with custom allocators @@ -1799,7 +2820,7 @@ Date: Sat Oct 3 13:20:55 2015 +0100 commit 88da7bba9fa4665b33f5bfcd45add7443097eaf3 Author: Behdad Esfahbod -Date: Fri Oct 2 14:38:20 2015 +0100 +Date: Fri Oct 2 14:38:20 2015 +0100 Default font scale to face upem @@ -1812,7 +2833,7 @@ Date: Fri Oct 2 14:38:20 2015 +0100 commit 1866e17114b41d565eb066e7d9393c2ff3e0a12b Author: Behdad Esfahbod -Date: Fri Oct 2 14:21:29 2015 +0100 +Date: Fri Oct 2 14:21:29 2015 +0100 Make hb_font_create_sub_font() NOT make parent immutable @@ -1825,7 +2846,7 @@ Date: Fri Oct 2 14:21:29 2015 +0100 commit 980e25cad2e58c31f5361862b9223d94ec47fc7a Author: Behdad Esfahbod -Date: Fri Oct 2 08:21:12 2015 +0100 +Date: Fri Oct 2 08:21:12 2015 +0100 Fix hb-ot-shape-normalize with empty buffer @@ -1836,7 +2857,7 @@ Date: Fri Oct 2 08:21:12 2015 +0100 commit a5efaac4ff61b587f228830b265b39fe8e5e4e47 Author: Behdad Esfahbod -Date: Fri Oct 2 08:02:29 2015 +0100 +Date: Fri Oct 2 08:02:29 2015 +0100 Replace a couple of malloc()s with calloc() @@ -1847,7 +2868,7 @@ Date: Fri Oct 2 08:02:29 2015 +0100 commit 26ba4d1e1fb8949632fe08e6a7600badfba4f142 Author: Behdad Esfahbod -Date: Fri Oct 2 07:25:52 2015 +0100 +Date: Fri Oct 2 07:25:52 2015 +0100 Fix segfault with empty buffer in hb_shape_plan_execute() @@ -1862,29 +2883,29 @@ Date: Fri Oct 2 07:25:52 2015 +0100 commit 432ffc47a46d41bea17d839d0d3980e654c6e638 Author: Behdad Esfahbod -Date: Wed Sep 30 22:51:16 2015 +0100 +Date: Wed Sep 30 22:51:16 2015 +0100 1.0.4 - NEWS | 7 +++++++ + NEWS | 7 +++++++ configure.ac | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) commit b47159011ca518c3b94d782ed16a91ffe9dd2ab2 Author: Behdad Esfahbod -Date: Tue Sep 29 14:57:02 2015 +0100 +Date: Tue Sep 29 14:57:02 2015 +0100 Define return_trace() Not functional change (expected!). - src/hb-open-file-private.hh | 20 +-- - src/hb-open-type-private.hh | 62 +++---- - src/hb-ot-cmap-table.hh | 56 +++---- - src/hb-ot-glyf-table.hh | 4 +- - src/hb-ot-head-table.hh | 2 +- - src/hb-ot-hhea-table.hh | 2 +- - src/hb-ot-hmtx-table.hh | 2 +- + src/hb-open-file-private.hh | 20 +-- + src/hb-open-type-private.hh | 62 +++---- + src/hb-ot-cmap-table.hh | 56 +++---- + src/hb-ot-glyf-table.hh | 4 +- + src/hb-ot-head-table.hh | 2 +- + src/hb-ot-hhea-table.hh | 2 +- + src/hb-ot-hmtx-table.hh | 2 +- src/hb-ot-layout-common-private.hh | 108 ++++++------- src/hb-ot-layout-gdef-table.hh | 44 ++--- src/hb-ot-layout-gpos-table.hh | 252 +++++++++++++++-------------- @@ -1892,14 +2913,14 @@ Date: Tue Sep 29 14:57:02 2015 +0100 ++++++++++++++++++----------------- src/hb-ot-layout-gsubgpos-private.hh | 205 +++++++++++------------ src/hb-ot-layout-jstf-table.hh | 35 ++-- - src/hb-ot-maxp-table.hh | 5 +- - src/hb-ot-name-table.hh | 14 +- - src/hb-private.hh | 6 +- + src/hb-ot-maxp-table.hh | 5 +- + src/hb-ot-name-table.hh | 14 +- + src/hb-private.hh | 6 +- 16 files changed, 575 insertions(+), 546 deletions(-) commit c917965b9e6fe2b21ed6c51559673288fa3af4b7 Author: Behdad Esfahbod -Date: Tue Sep 29 14:45:35 2015 +0100 +Date: Tue Sep 29 14:45:35 2015 +0100 Add missing returns @@ -1914,7 +2935,7 @@ Date: Tue Sep 29 14:45:35 2015 +0100 commit f3159ba5141c2ab0e430e64742972df140f91c43 Author: Behdad Esfahbod -Date: Tue Sep 29 14:34:56 2015 +0100 +Date: Tue Sep 29 14:34:56 2015 +0100 Micro-optimize hb_language_from_string() @@ -1925,7 +2946,7 @@ Date: Tue Sep 29 14:34:56 2015 +0100 commit f2ad935e19338a29113492150f0c5a5fd5befd75 Author: Sascha Brawer -Date: Sun Jun 28 03:29:47 2015 +0200 +Date: Sun Jun 28 03:29:47 2015 +0200 Handle language tags that indicate phonetic IPA transcription @@ -1937,40 +2958,40 @@ Date: Sun Jun 28 03:29:47 2015 +0200 http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry - src/hb-ot-tag.cc | 15 ++++++++++++++- + src/hb-ot-tag.cc | 15 ++++++++++++++- test/api/test-ot-tag.c | 7 +++++++ 2 files changed, 21 insertions(+), 1 deletion(-) commit b8811429b6810c4f13be087b593a862c17d9d987 Author: Behdad Esfahbod -Date: Thu Sep 3 15:53:22 2015 +0430 +Date: Thu Sep 3 15:53:22 2015 +0430 Fix Since tags Fixes https://github.com/behdad/harfbuzz/issues/103 - src/hb-blob.cc | 24 +++++++++---------- + src/hb-blob.cc | 24 +++++++++---------- src/hb-buffer-serialize.cc | 10 ++++---- - src/hb-buffer.cc | 58 + src/hb-buffer.cc | 58 +++++++++++++++++++++++----------------------- - src/hb-buffer.h | 9 +++++++ - src/hb-common.cc | 24 +++++++++---------- - src/hb-common.h | 3 +++ - src/hb-coretext.cc | 3 +++ - src/hb-font.h | 18 +++++++------- - src/hb-ft.cc | 6 ++--- - src/hb-graphite2.cc | 6 +++++ - src/hb-ot-layout.cc | 2 +- - src/hb-ot-tag.cc | 2 +- - src/hb-set.h | 3 +++ - src/hb-shape.cc | 2 +- - src/hb-unicode.cc | 18 +++++++------- - src/hb-unicode.h | 10 ++++---- + src/hb-buffer.h | 9 +++++++ + src/hb-common.cc | 24 +++++++++---------- + src/hb-common.h | 3 +++ + src/hb-coretext.cc | 3 +++ + src/hb-font.h | 18 +++++++------- + src/hb-ft.cc | 6 ++--- + src/hb-graphite2.cc | 6 +++++ + src/hb-ot-layout.cc | 2 +- + src/hb-ot-tag.cc | 2 +- + src/hb-set.h | 3 +++ + src/hb-shape.cc | 2 +- + src/hb-unicode.cc | 18 +++++++------- + src/hb-unicode.h | 10 ++++---- 16 files changed, 111 insertions(+), 87 deletions(-) commit 5d74ff02ab01df67808b416af8bb9cefb06f841e Author: Behdad Esfahbod -Date: Thu Sep 3 14:55:59 2015 +0430 +Date: Thu Sep 3 14:55:59 2015 +0430 Fix Since: version tags on font and face APIs @@ -1987,17 +3008,17 @@ Date: Thu Sep 3 14:55:59 2015 +0430 commit 7f5405397406a24c5a001b5ef43dcf4d6926415e Author: Behdad Esfahbod -Date: Tue Sep 1 17:03:50 2015 +0100 +Date: Tue Sep 1 17:03:50 2015 +0100 1.0.3 - NEWS | 11 +++++++++++ + NEWS | 11 +++++++++++ configure.ac | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) commit 5828c45d7a816ccd0a7f10a665ea3cf8cfd63b05 Author: Behdad Esfahbod -Date: Tue Sep 1 16:26:35 2015 +0100 +Date: Tue Sep 1 16:26:35 2015 +0100 [indic] Add comments to merge_clusters calls @@ -2006,7 +3027,7 @@ Date: Tue Sep 1 16:26:35 2015 +0100 commit bdc8215949a7add742cc800b4fdea6acaa37d152 Author: Behdad Esfahbod -Date: Tue Sep 1 16:24:54 2015 +0100 +Date: Tue Sep 1 16:24:54 2015 +0100 [thai] Respect cluster-level > 0 @@ -2015,7 +3036,7 @@ Date: Tue Sep 1 16:24:54 2015 +0100 commit 5b31fe383ead726ec77062501ed3bb24c02842b3 Author: Behdad Esfahbod -Date: Tue Sep 1 16:24:34 2015 +0100 +Date: Tue Sep 1 16:24:34 2015 +0100 [use] Merge /before/ reordering @@ -2024,7 +3045,7 @@ Date: Tue Sep 1 16:24:34 2015 +0100 commit 0d438f89bd9422c66838c776eb4aa867de0a2ad8 Author: Behdad Esfahbod -Date: Tue Sep 1 16:24:13 2015 +0100 +Date: Tue Sep 1 16:24:13 2015 +0100 [hangul] Merge /before/ reordering @@ -2033,7 +3054,7 @@ Date: Tue Sep 1 16:24:13 2015 +0100 commit f883de664fc4bfe01e30c89e07e31dc113f906d9 Author: Behdad Esfahbod -Date: Tue Sep 1 16:23:40 2015 +0100 +Date: Tue Sep 1 16:23:40 2015 +0100 [OT] Merge /before/ reordering @@ -2042,7 +3063,7 @@ Date: Tue Sep 1 16:23:40 2015 +0100 commit c403d6320074455a5e8e48902c0ac4ee9685e33d Author: Behdad Esfahbod -Date: Tue Sep 1 16:15:25 2015 +0100 +Date: Tue Sep 1 16:15:25 2015 +0100 [myanmar] Use buffer->sort() to sort cluster @@ -2053,7 +3074,7 @@ Date: Tue Sep 1 16:15:25 2015 +0100 commit e995d33c10a4bd9404699d01bddb2b69d811e9ed Author: Behdad Esfahbod -Date: Tue Sep 1 16:13:32 2015 +0100 +Date: Tue Sep 1 16:13:32 2015 +0100 [OT] Merge clusters when reordering marks for normalization @@ -2061,13 +3082,13 @@ Date: Tue Sep 1 16:13:32 2015 +0100 and cluster test. src/hb-buffer-private.hh | 2 ++ - src/hb-buffer.cc | 21 +++++++++++++++++++++ + src/hb-buffer.cc | 21 +++++++++++++++++++++ src/hb-ot-shape-normalize.cc | 2 +- 3 files changed, 24 insertions(+), 1 deletion(-) commit b6d7d161a87b5dde710924e5c557d39c302f5630 Author: Behdad Esfahbod -Date: Tue Sep 1 16:12:44 2015 +0100 +Date: Tue Sep 1 16:12:44 2015 +0100 [tests] Add Hebrew test for normalization under cluster-level=1 @@ -2076,13 +3097,13 @@ Date: Tue Sep 1 16:12:44 2015 +0100 .../sha1sum/43ef465752be9af900745f72fe29cb853a1401a5.ttf | Bin 0 -> 4272 bytes - test/shaping/fonts/sha1sum/MANIFEST | 1 + - test/shaping/tests/cluster.tests | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/cluster.tests | 1 + 3 files changed, 2 insertions(+) commit 93099748e39740a3f6f003c83d9dec1d21660ce8 Author: Behdad Esfahbod -Date: Tue Sep 1 16:11:27 2015 +0100 +Date: Tue Sep 1 16:11:27 2015 +0100 Minor @@ -2091,35 +3112,35 @@ Date: Tue Sep 1 16:11:27 2015 +0100 commit 85846b3de7491b6a07fed6a2c0c6c1b09943b249 Author: Behdad Esfahbod -Date: Tue Sep 1 15:07:52 2015 +0100 +Date: Tue Sep 1 15:07:52 2015 +0100 Use insertion-sort instead of bubble-sort Needed for upcoming merge-clusters fix. - src/hb-buffer.cc | 4 +-- + src/hb-buffer.cc | 4 +-- src/hb-ot-shape-complex-arabic-fallback.hh | 6 ++-- - src/hb-ot-shape-complex-indic.cc | 2 +- - src/hb-ot-shape-complex-myanmar.cc | 2 +- - src/hb-ot-shape-normalize.cc | 6 ++-- - src/hb-private.hh | 56 + src/hb-ot-shape-complex-indic.cc | 2 +- + src/hb-ot-shape-complex-myanmar.cc | 2 +- + src/hb-ot-shape-normalize.cc | 6 ++-- + src/hb-private.hh | 56 +++++++++++++----------------- 6 files changed, 34 insertions(+), 42 deletions(-) commit fad2674874591b4a1df822603144c8864f5364c1 Author: Behdad Esfahbod -Date: Tue Sep 1 14:45:46 2015 +0100 +Date: Tue Sep 1 14:45:46 2015 +0100 Minor - test/Makefile.am | 4 ++++ - test/api/Makefile.am | 4 ++++ + test/Makefile.am | 4 ++++ + test/api/Makefile.am | 4 ++++ test/shaping/Makefile.am | 4 ++++ 3 files changed, 12 insertions(+) commit 23e4fac6de913201f263a73e13d3c1fab31d1bdd Author: Behdad Esfahbod -Date: Mon Aug 31 19:41:01 2015 +0100 +Date: Mon Aug 31 19:41:01 2015 +0100 Update git.mk from upstream @@ -2128,17 +3149,17 @@ Date: Mon Aug 31 19:41:01 2015 +0100 commit 5783e05f81bbf6debf2618c8994d6852630d9847 Author: Behdad Esfahbod -Date: Mon Aug 31 19:18:10 2015 +0100 +Date: Mon Aug 31 19:18:10 2015 +0100 [docs] Move docs/reference/ contents into docs/ - configure.ac | 3 +- - docs/Makefile.am | 117 +++++++- - docs/harfbuzz-docs.xml | 78 ++++++ - docs/harfbuzz-overrides.txt | 0 - docs/harfbuzz-sections.txt | 498 + configure.ac | 3 +- + docs/Makefile.am | 117 +++++++- + docs/harfbuzz-docs.xml | 78 ++++++ + docs/harfbuzz-overrides.txt | 0 + docs/harfbuzz-sections.txt | 498 ++++++++++++++++++++++++++++++++++ - docs/reference/Makefile.am | 118 -------- + docs/reference/Makefile.am | 118 -------- docs/reference/harfbuzz-docs.xml | 78 ------ docs/reference/harfbuzz-overrides.txt | 0 docs/reference/harfbuzz-sections.txt | 498 @@ -2149,23 +3170,23 @@ Date: Mon Aug 31 19:18:10 2015 +0100 docs/reference/usermanual-ch04.xml | 18 -- docs/reference/usermanual-ch05.xml | 13 - docs/reference/usermanual-ch06.xml | 8 - - docs/reference/version.xml.in | 1 - - docs/usermanual-ch01.xml | 115 ++++++++ - docs/usermanual-ch02.xml | 183 +++++++++++++ - docs/usermanual-ch03.xml | 77 ++++++ - docs/usermanual-ch04.xml | 18 ++ - docs/usermanual-ch05.xml | 13 + - docs/usermanual-ch06.xml | 8 + - docs/version.xml.in | 1 + + docs/reference/version.xml.in | 1 - + docs/usermanual-ch01.xml | 115 ++++++++ + docs/usermanual-ch02.xml | 183 +++++++++++++ + docs/usermanual-ch03.xml | 77 ++++++ + docs/usermanual-ch04.xml | 18 ++ + docs/usermanual-ch05.xml | 13 + + docs/usermanual-ch06.xml | 8 + + docs/version.xml.in | 1 + 23 files changed, 1108 insertions(+), 1112 deletions(-) commit cd5e3a13a6e0b6606d3a421f8cd44cdfb8314907 Author: Behdad Esfahbod -Date: Mon Aug 31 19:16:41 2015 +0100 +Date: Mon Aug 31 19:16:41 2015 +0100 [docs] Fix out-of-tree build - docs/reference/Makefile.am | 9 +- + docs/reference/Makefile.am | 9 +- docs/reference/harfbuzz-docs.xml | 12 +-- docs/reference/usermanual-ch01.xml | 115 +++++++++++++++++++++++ docs/reference/usermanual-ch02.xml | 183 @@ -2173,20 +3194,20 @@ Date: Mon Aug 31 19:16:41 2015 +0100 docs/reference/usermanual-ch03.xml | 77 ++++++++++++++++ docs/reference/usermanual-ch04.xml | 18 ++++ docs/reference/usermanual-ch05.xml | 13 +++ - docs/reference/usermanual-ch06.xml | 8 ++ - docs/usermanual-ch01.xml | 115 ----------------------- - docs/usermanual-ch02.xml | 183 + docs/reference/usermanual-ch06.xml | 8 ++ + docs/usermanual-ch01.xml | 115 ----------------------- + docs/usermanual-ch02.xml | 183 ------------------------------------- - docs/usermanual-ch03.xml | 77 ---------------- - docs/usermanual-ch04.xml | 18 ---- - docs/usermanual-ch05.xml | 13 --- - docs/usermanual-ch06.xml | 8 -- + docs/usermanual-ch03.xml | 77 ---------------- + docs/usermanual-ch04.xml | 18 ---- + docs/usermanual-ch05.xml | 13 --- + docs/usermanual-ch06.xml | 8 -- 14 files changed, 428 insertions(+), 421 deletions(-) commit 3899795fa3c3e058e3885ec7a6638f0597a752cc Merge: d205965 01e16e8 Author: Behdad Esfahbod -Date: Mon Aug 31 10:46:01 2015 +0100 +Date: Mon Aug 31 10:46:01 2015 +0100 Merge pull request #131 from simoncozens/docs @@ -2194,7 +3215,7 @@ Date: Mon Aug 31 10:46:01 2015 +0100 commit 01e16e88f50b65b82dcb84773f532f18a351319f Author: Simon Cozens -Date: Mon Aug 31 10:40:17 2015 +0100 +Date: Mon Aug 31 10:40:17 2015 +0100 Combine user / reference information into gtk-doc generated manual. @@ -2204,7 +3225,7 @@ Date: Mon Aug 31 10:40:17 2015 +0100 commit 11a07c4729174e1d4af028103ecb0a351e4c2707 Author: Simon Cozens -Date: Mon Aug 31 10:39:10 2015 +0100 +Date: Mon Aug 31 10:39:10 2015 +0100 Correct tag hierarchy, to allow for table-of-contents entries. @@ -2217,7 +3238,7 @@ Date: Mon Aug 31 10:39:10 2015 +0100 commit 387d6af428ddd5d4f211fe5748412011013a3826 Author: Simon Cozens -Date: Mon Aug 31 10:31:09 2015 +0100 +Date: Mon Aug 31 10:31:09 2015 +0100 Missing tag (oops). @@ -2226,7 +3247,7 @@ Date: Mon Aug 31 10:31:09 2015 +0100 commit d205965286798af4b7ad07e1eafa58288bee4bdb Author: Behdad Esfahbod -Date: Mon Aug 31 10:12:05 2015 +0100 +Date: Mon Aug 31 10:12:05 2015 +0100 [docs] Fix typo @@ -2236,7 +3257,7 @@ Date: Mon Aug 31 10:12:05 2015 +0100 commit c424b41705b50055c7f92b268cf78a2680af73af Merge: 31594b9 5470e74 Author: Behdad Esfahbod -Date: Mon Aug 31 09:53:16 2015 +0100 +Date: Mon Aug 31 09:53:16 2015 +0100 Merge pull request #129 from simoncozens/docs @@ -2244,7 +3265,7 @@ Date: Mon Aug 31 09:53:16 2015 +0100 commit 31594b98af0c9181982c77d8d3803753007f8fd4 Author: Behdad Esfahbod -Date: Sun Aug 30 17:33:04 2015 +0100 +Date: Sun Aug 30 17:33:04 2015 +0100 [test] Fix test-object @@ -2255,7 +3276,7 @@ Date: Sun Aug 30 17:33:04 2015 +0100 commit 326b5ebf5748f547e4eb7388d66b79fe23130e2a Author: Behdad Esfahbod -Date: Sun Aug 30 17:29:21 2015 +0100 +Date: Sun Aug 30 17:29:21 2015 +0100 Poison freed objects such that double-free is detected @@ -2278,7 +3299,7 @@ Date: Sun Aug 30 17:29:21 2015 +0100 commit 5470e744dd264c2dc33437a68d20bcf7c5ffb905 Author: Simon Cozens -Date: Sat Aug 29 08:21:18 2015 +0100 +Date: Sat Aug 29 08:21:18 2015 +0100 Current state and skeleton outline @@ -2291,7 +3312,7 @@ Date: Sat Aug 29 08:21:18 2015 +0100 commit 6578575cc8aeb05341f2053039acfcd735707674 Author: Behdad Esfahbod -Date: Tue Aug 25 20:24:59 2015 +0100 +Date: Tue Aug 25 20:24:59 2015 +0100 [GPOS] Fix cursive connection with mix of RTL and non-RTL lookups @@ -2305,27 +3326,27 @@ Date: Tue Aug 25 20:24:59 2015 +0100 commit 7368da67244ea53195cd9b95a5c57485df695732 Author: Behdad Esfahbod -Date: Tue Aug 25 20:28:39 2015 +0100 +Date: Tue Aug 25 20:28:39 2015 +0100 [test] Add test for cursive-positioning with mixed directions - Fails now. Fix coming. See thread "Issue with cursive attachment" - started by Khaled. Test fonts were made by modifying test font + Fails now. Fix coming. See thread "Issue with cursive attachment" + started by Khaled. Test fonts were made by modifying test font from Khaled to add more anchors. - test/shaping/Makefile.am | 1 + + test/shaping/Makefile.am | 1 + .../sha1sum/298c9e1d955f10f6f72c6915c3c6ff9bf9695cec.ttf | Bin 0 -> 2520 bytes - test/shaping/fonts/sha1sum/MANIFEST | 2 ++ + test/shaping/fonts/sha1sum/MANIFEST | 2 ++ .../sha1sum/c4e48b0886ef460f532fb49f00047ec92c432ec0.ttf | Bin 0 -> 2512 bytes - test/shaping/tests/MANIFEST | 1 + - test/shaping/tests/cursive-positioning.tests | 2 ++ + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/cursive-positioning.tests | 2 ++ 6 files changed, 6 insertions(+) commit f0807654da160bd7ceb9aff5b8338ec0b643171c Author: Simon Cozens -Date: Tue Aug 25 19:57:15 2015 +0100 +Date: Tue Aug 25 19:57:15 2015 +0100 First two chapters. More to follow. @@ -2336,7 +3357,7 @@ Date: Tue Aug 25 19:57:15 2015 +0100 commit 58f2a73fb95af42e264a91cdef7bb5a89e965601 Author: Behdad Esfahbod -Date: Tue Aug 25 18:55:34 2015 +0100 +Date: Tue Aug 25 18:55:34 2015 +0100 [GPOS] Rewrite cursive attachment slightly differently @@ -2348,7 +3369,7 @@ Date: Tue Aug 25 18:55:34 2015 +0100 commit fdd1770e006ca2d2973c049177ceda87a575e07f Author: Behdad Esfahbod -Date: Mon Aug 24 13:49:55 2015 +0100 +Date: Mon Aug 24 13:49:55 2015 +0100 Add API/cmdline to show glyph extents when serializing buffer @@ -2359,15 +3380,15 @@ Date: Mon Aug 24 13:49:55 2015 +0100 Patch from Simon Cozens. src/hb-buffer-serialize.cc | 17 +++++++++++++++++ - src/hb-buffer.h | 3 ++- - util/hb-shape.cc | 2 ++ - util/options.cc | 1 + - util/options.hh | 2 ++ + src/hb-buffer.h | 3 ++- + util/hb-shape.cc | 2 ++ + util/options.cc | 1 + + util/options.hh | 2 ++ 5 files changed, 24 insertions(+), 1 deletion(-) commit 2cee5b68a07b99214ef9428fe5d03e7b378a558f Author: Behdad Esfahbod -Date: Mon Aug 24 13:45:12 2015 +0100 +Date: Mon Aug 24 13:45:12 2015 +0100 [ot-font] Fix short-offset calculation @@ -2376,16 +3397,16 @@ Date: Mon Aug 24 13:45:12 2015 +0100 commit b50fcfa82994f93568a54dd1eb7fd327f6db5586 Author: Behdad Esfahbod -Date: Sun Aug 23 14:42:20 2015 +0100 +Date: Sun Aug 23 14:42:20 2015 +0100 [ot-font] Implement glyph_extents() for TrueType fonts This brings ot-fonts into almost-complete shape and mostly in par with ft font. - src/Makefile.am | 1 + - src/hb-font.h | 9 +++-- - src/hb-ot-font.cc | 90 +++++++++++++++++++++++++++++++++++++++-- + src/Makefile.am | 1 + + src/hb-font.h | 9 +++-- + src/hb-ot-font.cc | 90 +++++++++++++++++++++++++++++++++++++++-- src/hb-ot-glyf-table.hh | 104 ++++++++++++++++++++++++++++++++++++++++++++++++ src/hb-ot-head-table.hh | 3 +- @@ -2393,7 +3414,7 @@ Date: Sun Aug 23 14:42:20 2015 +0100 commit 0299b45000b5047c0b9bf0fe51f3b8b68a7982f8 Author: Behdad Esfahbod -Date: Fri Aug 21 12:44:36 2015 +0100 +Date: Fri Aug 21 12:44:36 2015 +0100 Make BYTE a real type @@ -2402,7 +3423,7 @@ Date: Fri Aug 21 12:44:36 2015 +0100 commit ed6962c795ae7c54aaee9ed5667fa65ccf7412bf Author: Behdad Esfahbod -Date: Thu Aug 20 15:39:53 2015 +0100 +Date: Thu Aug 20 15:39:53 2015 +0100 [coretext] Use i32 instead of u32 as well @@ -2413,7 +3434,7 @@ Date: Thu Aug 20 15:39:53 2015 +0100 commit 163c435f1807c138da9f74f09d29d913eb9e29e9 Author: Behdad Esfahbod -Date: Thu Aug 20 15:39:06 2015 +0100 +Date: Thu Aug 20 15:39:06 2015 +0100 [uniscribe] Fix negative offsets @@ -2424,17 +3445,17 @@ Date: Thu Aug 20 15:39:06 2015 +0100 commit 789b89ef7130ffe5f22c571fc3cb4e6d35456654 Author: Behdad Esfahbod -Date: Wed Aug 19 13:39:57 2015 +0100 +Date: Wed Aug 19 13:39:57 2015 +0100 1.0.2 - NEWS | 13 +++++++++++++ + NEWS | 13 +++++++++++++ configure.ac | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) commit 958c268fa3a520666436e77a2111a3b564a36d96 Author: Behdad Esfahbod -Date: Wed Aug 19 13:22:12 2015 +0100 +Date: Wed Aug 19 13:22:12 2015 +0100 [coretext] Add TODO item @@ -2443,7 +3464,7 @@ Date: Wed Aug 19 13:22:12 2015 +0100 commit 7c5bee09d9c7c25672c7c77572ebae0b731892d0 Author: Behdad Esfahbod -Date: Wed Aug 19 13:20:31 2015 +0100 +Date: Wed Aug 19 13:20:31 2015 +0100 [uniscribe] Fix font scale handling @@ -2455,7 +3476,7 @@ Date: Wed Aug 19 13:20:31 2015 +0100 commit 902e74a098dad8c3b487856284f9fdf99b04f9f1 Author: Behdad Esfahbod -Date: Tue Aug 18 18:55:03 2015 +0100 +Date: Tue Aug 18 18:55:03 2015 +0100 Commented-out code to print buffer before each lookup @@ -2466,7 +3487,7 @@ Date: Tue Aug 18 18:55:03 2015 +0100 commit 75504a50488a6aac0b9789f728fb5b87e641d4c3 Author: Behdad Esfahbod -Date: Tue Aug 18 18:47:02 2015 +0100 +Date: Tue Aug 18 18:47:02 2015 +0100 Allow serializing buffer with output-buffer being used @@ -2478,7 +3499,7 @@ Date: Tue Aug 18 18:47:02 2015 +0100 commit e47b772a56af44a9a4f9ec907ee2091b725b94c1 Author: Behdad Esfahbod -Date: Tue Aug 18 18:42:47 2015 +0100 +Date: Tue Aug 18 18:42:47 2015 +0100 [ot] Change buffer content type right after we map to glyphs @@ -2489,7 +3510,7 @@ Date: Tue Aug 18 18:42:47 2015 +0100 commit d104415e4c1e0f9140f794cd8d09c6460c63e966 Author: Behdad Esfahbod -Date: Tue Aug 18 17:33:34 2015 +0100 +Date: Tue Aug 18 17:33:34 2015 +0100 [Android.mk] Update for SEA removal and USE addition @@ -2498,7 +3519,7 @@ Date: Tue Aug 18 17:33:34 2015 +0100 commit ddd6bf12f1cabaa298feed820313483b9893528c Author: Behdad Esfahbod -Date: Tue Aug 18 15:55:09 2015 +0100 +Date: Tue Aug 18 15:55:09 2015 +0100 Don't declare dependency on freetype in harfbuzz.pc @@ -2509,19 +3530,19 @@ Date: Tue Aug 18 15:55:09 2015 +0100 commit 2c8b3b2e5312c9858584f568b1528c57e5bb8a10 Author: Behdad Esfahbod -Date: Tue Aug 18 14:36:43 2015 +0100 +Date: Tue Aug 18 14:36:43 2015 +0100 [debug] Print lookup index in debug-apply output src/hb-ot-layout-gpos-table.hh | 5 ++++- src/hb-ot-layout-gsub-table.hh | 5 ++++- src/hb-ot-layout-gsubgpos-private.hh | 7 +++++-- - src/hb-ot-layout.cc | 3 ++- + src/hb-ot-layout.cc | 3 ++- 4 files changed, 15 insertions(+), 5 deletions(-) commit 50ad7788eeb7160caef4ec78e65c7c630e601b06 Author: Behdad Esfahbod -Date: Tue Aug 18 10:22:16 2015 +0100 +Date: Tue Aug 18 10:22:16 2015 +0100 [coretext] Remove assert that kicks in on Mac OS 10.6 @@ -2532,7 +3553,7 @@ Date: Tue Aug 18 10:22:16 2015 +0100 commit 2b646fa07f5f9d4d10d563a91d22a2750b5fc771 Author: Behdad Esfahbod -Date: Mon Aug 17 16:03:28 2015 +0200 +Date: Mon Aug 17 16:03:28 2015 +0200 Remove unused function @@ -2541,7 +3562,7 @@ Date: Mon Aug 17 16:03:28 2015 +0200 commit 23237b0279a04407addf33f599c45faa60f002ca Author: ThePhD -Date: Fri Aug 14 01:19:08 2015 -0400 +Date: Fri Aug 14 01:19:08 2015 -0400 Last apparent boolean fix! @@ -2551,26 +3572,26 @@ Date: Fri Aug 14 01:19:08 2015 -0400 commit 5c99cf93d6242803bddcac2ca8300fdec7e0f8a7 Merge: 8ad89f0 539a610 Author: ThePhD -Date: Fri Aug 14 01:02:00 2015 -0400 +Date: Fri Aug 14 01:02:00 2015 -0400 Merge branch 'master' into vc++-fixes commit 539a610e2e72375e598ab29fd390ed9ec93816d5 Author: Behdad Esfahbod -Date: Tue Aug 11 12:58:49 2015 +0200 +Date: Tue Aug 11 12:58:49 2015 +0200 Add Libs.private and Requires.private to harfbuzz.pc Fixes https://bugs.freedesktop.org/show_bug.cgi?id=64501 - configure.ac | 12 +++++++++--- + configure.ac | 12 +++++++++--- src/Makefile.am | 15 ++++++++++++--- src/harfbuzz.pc.in | 2 ++ 3 files changed, 23 insertions(+), 6 deletions(-) commit c7dfe316f8c0fc04b7976fca5e58eb46d91b4821 Author: jfkthame -Date: Fri Aug 7 17:55:03 2015 +0100 +Date: Fri Aug 7 17:55:03 2015 +0100 Don't rely on .cluster in _hb_ot_shape_normalize() @@ -2581,7 +3602,7 @@ Date: Fri Aug 7 17:55:03 2015 +0100 commit 9099e48e29fe5cfdf8566c8f1ba6ddc8c0799e7e Author: jfkthame -Date: Fri Aug 7 17:51:28 2015 +0100 +Date: Fri Aug 7 17:51:28 2015 +0100 Don't rely on .cluster field in fallback_position @@ -2594,24 +3615,24 @@ Date: Fri Aug 7 17:51:28 2015 +0100 commit f3792342f670978cdc3f8512fb5e80314ca0678d Author: Behdad Esfahbod -Date: Sat Aug 8 18:02:18 2015 +0200 +Date: Sat Aug 8 18:02:18 2015 +0200 [tests] Add test for fallback positioning with cluster_level > 0 For https://github.com/behdad/harfbuzz/pull/123 Currently fails. Fix coming. - test/shaping/Makefile.am | 1 + + test/shaping/Makefile.am | 1 + .../sha1sum/6466d38c62e73a39202435a4f73bf5d6acbb73c0.ttf | Bin 0 -> 824 bytes - test/shaping/fonts/sha1sum/MANIFEST | 1 + - test/shaping/tests/MANIFEST | 1 + - test/shaping/tests/cluster.tests | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/cluster.tests | 1 + 5 files changed, 4 insertions(+) commit bd22a5cfae24b3b9253bccaeb139e698e74cd0c3 Author: Behdad Esfahbod -Date: Fri Aug 7 11:13:27 2015 +0200 +Date: Fri Aug 7 11:13:27 2015 +0200 Bug 91559 - HarfBuzz 1.0.1: Inconsistent DLL files specified/created... @@ -2624,7 +3645,7 @@ Date: Fri Aug 7 11:13:27 2015 +0200 commit 02d6439f420d959183dd446abd0b0118ee1ee061 Merge: 9002c27 160f635 Author: Behdad Esfahbod -Date: Mon Aug 3 22:47:18 2015 +0300 +Date: Mon Aug 3 22:47:18 2015 +0300 Merge pull request #122 from RomainNaour/static-fix @@ -2632,7 +3653,7 @@ Date: Mon Aug 3 22:47:18 2015 +0300 commit 160f635523d596f61e292776f638d4eb09673463 Author: Romain Naour -Date: Wed Jul 22 23:26:23 2015 +0200 +Date: Wed Jul 22 23:26:23 2015 +0200 fix static linking with icu-uc @@ -2650,17 +3671,17 @@ Date: Wed Jul 22 23:26:23 2015 +0200 commit 9002c27b2f54bb5135db92045c0d770b47317577 Author: Behdad Esfahbod -Date: Mon Jul 27 12:17:54 2015 +0200 +Date: Mon Jul 27 12:17:54 2015 +0200 1.0.1 - NEWS | 9 ++++++++- + NEWS | 9 ++++++++- configure.ac | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) commit f1c20e1ba5bf218df7dc3e198bdcf1f449fc9387 Author: Behdad Esfahbod -Date: Mon Jul 27 12:16:02 2015 +0200 +Date: Mon Jul 27 12:16:02 2015 +0200 [USE] Fix out-of-bounds static array access @@ -2669,35 +3690,35 @@ Date: Mon Jul 27 12:16:02 2015 +0200 commit 260442346a5756c3538ee8fcbf157d1cddcf6f36 Author: Behdad Esfahbod -Date: Sun Jul 26 23:39:10 2015 +0200 +Date: Sun Jul 26 23:39:10 2015 +0200 1.0.0 - NEWS | 10 ++++++++++ - configure.ac | 4 ++-- + NEWS | 10 ++++++++++ + configure.ac | 4 ++-- src/Makefile.am | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) commit df6cb84449a473d540821e41fb5007b59644780f Merge: 2ed6be6 786ba45 Author: Behdad Esfahbod -Date: Sun Jul 26 19:40:55 2015 +0200 +Date: Sun Jul 26 19:40:55 2015 +0200 Merge branch 'use' commit 2ed6be66703e6cc67f3a3746e197001dad3d9b74 Author: Behdad Esfahbod -Date: Sun Jul 26 19:29:53 2015 +0200 +Date: Sun Jul 26 19:29:53 2015 +0200 0.9.42 - NEWS | 12 ++++++++++++ + NEWS | 12 ++++++++++++ configure.ac | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) commit 23e56e088a721863cfdef4f027fb66eecbd77457 Author: Behdad Esfahbod -Date: Sat Jul 25 17:36:46 2015 +0200 +Date: Sat Jul 25 17:36:46 2015 +0200 Fix broken sentence @@ -2706,7 +3727,7 @@ Date: Sat Jul 25 17:36:46 2015 +0200 commit 91a2e5d2878a8c0b4d4500e3d52d4fbaaf1ac0d7 Author: Grigori Goronzy -Date: Wed Jul 8 23:28:11 2015 +0200 +Date: Wed Jul 8 23:28:11 2015 +0200 Update UCDN to upstream commit 8af93f30 @@ -2714,15 +3735,15 @@ Date: Wed Jul 8 23:28:11 2015 +0200 properties for ranges of codepoints. - src/hb-ucdn.cc | 6 + - src/hb-ucdn/ucdn.h | 6 + + src/hb-ucdn.cc | 6 + + src/hb-ucdn/ucdn.h | 6 + src/hb-ucdn/unicodedata_db.h | 2167 +++++++++++++++++++++--------------------- 3 files changed, 1118 insertions(+), 1061 deletions(-) commit 786ba45847127b9cd4d9c0c01ae0e6c61f3a8e06 Author: Behdad Esfahbod -Date: Thu Jul 23 13:04:34 2015 +0100 +Date: Thu Jul 23 13:04:34 2015 +0100 [test] Encode Kharoshti text @@ -2734,7 +3755,7 @@ Date: Thu Jul 23 13:04:34 2015 +0100 commit b4231255032e243153a6f32cf8c93c158cb0bf6a Author: Behdad Esfahbod -Date: Thu Jul 23 13:01:55 2015 +0100 +Date: Thu Jul 23 13:01:55 2015 +0100 [test] Add Batak and Buginese test texts @@ -2748,18 +3769,18 @@ Date: Thu Jul 23 13:01:55 2015 +0100 commit b8c159ffccad090974a2b97be0a0140fa09af132 Author: Behdad Esfahbod -Date: Thu Jul 23 12:59:17 2015 +0100 +Date: Thu Jul 23 12:59:17 2015 +0100 [test] Remove shaper-sea texts under shaper-use - test/shaping/texts/in-tree/MANIFEST | 1 - + test/shaping/texts/in-tree/MANIFEST | 1 - test/shaping/texts/in-tree/shaper-sea/MANIFEST | 2 -- .../texts/in-tree/shaper-sea/script-cham/MANIFEST | 1 - .../in-tree/shaper-sea/script-cham/misc/MANIFEST | 1 - .../in-tree/shaper-sea/script-cham/misc/misc.txt | 3 --- .../in-tree/shaper-sea/script-tai-tham/MANIFEST | 1 - - .../shaper-sea/script-tai-tham/misc/MANIFEST | 2 -- - .../shaper-sea/script-tai-tham/misc/misc.txt | 2 -- + .../shaper-sea/script-tai-tham/misc/MANIFEST | 2 -- + .../shaper-sea/script-tai-tham/misc/misc.txt | 2 -- .../shaper-sea/script-tai-tham/misc/torture.txt | 23 ---------------------- test/shaping/texts/in-tree/shaper-use/MANIFEST | 2 ++ @@ -2773,15 +3794,15 @@ Date: Thu Jul 23 12:59:17 2015 +0100 commit 67ba7320cc5545baeacfcff64cea338223b9bd6d Author: Behdad Esfahbod -Date: Thu Jul 23 12:58:21 2015 +0100 +Date: Thu Jul 23 12:58:21 2015 +0100 [test] Remove New Tai Lue texts New Tai Lue changed encoding to visual, boring, model. - test/shaping/texts/in-tree/shaper-sea/MANIFEST | + test/shaping/texts/in-tree/shaper-sea/MANIFEST | 1 - - test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/MANIFEST | + test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/MANIFEST | 1 - test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/MANIFEST | 1 - @@ -2791,21 +3812,21 @@ Date: Thu Jul 23 12:58:21 2015 +0100 commit c81d957a264539dfe3252f9a94ee066c4a44edf4 Author: Behdad Esfahbod -Date: Thu Jul 23 12:50:48 2015 +0100 +Date: Thu Jul 23 12:50:48 2015 +0100 [test] Add tests for improved 'vert' feature - test/shaping/Makefile.am | 1 + + test/shaping/Makefile.am | 1 + .../sha1sum/191826b9643e3f124d865d617ae609db6a2ce203.ttf | Bin 0 -> 2140 bytes - test/shaping/fonts/sha1sum/MANIFEST | 1 + - test/shaping/tests/MANIFEST | 1 + - test/shaping/tests/vertical.tests | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/vertical.tests | 1 + 5 files changed, 4 insertions(+) commit 8a6a16dbcb1808c7ed50f9ba320384565bbf405a Author: Behdad Esfahbod -Date: Thu Jul 23 12:49:09 2015 +0100 +Date: Thu Jul 23 12:49:09 2015 +0100 [test] Add recently added test @@ -2816,44 +3837,44 @@ Date: Thu Jul 23 12:49:09 2015 +0100 commit 895fb31c7f0201f13df5a6866b367476bc4aab2e Author: Behdad Esfahbod -Date: Thu Jul 23 12:14:03 2015 +0100 +Date: Thu Jul 23 12:14:03 2015 +0100 [test] Support additional options to hb-shape in micro-test suite - test/shaping/record-test.sh | 47 + test/shaping/record-test.sh | 47 ++++++++++++++++++---- - test/shaping/run-tests.sh | 9 ++++- + test/shaping/run-tests.sh | 9 ++++- test/shaping/tests/arabic-fallback-shaping.tests | 2 +- - test/shaping/tests/arabic-feature-order.tests | 6 +-- - test/shaping/tests/context-matching.tests | 6 +-- - test/shaping/tests/default-ignorables.tests | 2 +- - test/shaping/tests/hangul-jamo.tests | 4 +- + test/shaping/tests/arabic-feature-order.tests | 6 +-- + test/shaping/tests/context-matching.tests | 6 +-- + test/shaping/tests/default-ignorables.tests | 2 +- + test/shaping/tests/hangul-jamo.tests | 4 +- test/shaping/tests/indic-joiner-candrabindu.tests | 4 +- - test/shaping/tests/indic-old-spec.tests | 4 +- - test/shaping/tests/indic-pref-blocking.tests | 4 +- - .../tests/mongolian-variation-selector.tests | 6 +-- - test/shaping/tests/zero-width-marks.tests | 4 +- + test/shaping/tests/indic-old-spec.tests | 4 +- + test/shaping/tests/indic-pref-blocking.tests | 4 +- + .../tests/mongolian-variation-selector.tests | 6 +-- + test/shaping/tests/zero-width-marks.tests | 4 +- 12 files changed, 67 insertions(+), 31 deletions(-) commit 0f98fe88f42471eb8fb28d08d45eca9cd8303f7a Author: Behdad Esfahbod -Date: Thu Jul 23 11:52:11 2015 +0100 +Date: Thu Jul 23 11:52:11 2015 +0100 [ot] Search globally for 'vert' feature if not found in specified script/lang Fixes https://github.com/behdad/harfbuzz/issues/63 - src/hb-ot-layout-private.hh | 9 +++++++++ - src/hb-ot-layout.cc | 22 ++++++++++++++++++++++ - src/hb-ot-map-private.hh | 7 ++++--- - src/hb-ot-map.cc | 10 ++++++++++ - src/hb-ot-shape.cc | 6 +++++- + src/hb-ot-layout-private.hh | 9 +++++++++ + src/hb-ot-layout.cc | 22 ++++++++++++++++++++++ + src/hb-ot-map-private.hh | 7 ++++--- + src/hb-ot-map.cc | 10 ++++++++++ + src/hb-ot-shape.cc | 6 +++++- 5 files changed, 50 insertions(+), 4 deletions(-) commit f327aacfa107bbef0c823ef9c3b7dfc91316040c Author: Behdad Esfahbod -Date: Thu Jul 23 11:32:59 2015 +0100 +Date: Thu Jul 23 11:32:59 2015 +0100 [ot] Minor @@ -2862,7 +3883,7 @@ Date: Thu Jul 23 11:32:59 2015 +0100 commit d78463c8016ff1852233479a1ebde30c3bb6de6e Author: Behdad Esfahbod -Date: Thu Jul 23 10:11:35 2015 +0100 +Date: Thu Jul 23 10:11:35 2015 +0100 Minor debug output fix @@ -2871,7 +3892,7 @@ Date: Thu Jul 23 10:11:35 2015 +0100 commit d99f50bde0e8be0866385ca6886938d2023dbd4f Author: Behdad Esfahbod -Date: Thu Jul 23 10:08:48 2015 +0100 +Date: Thu Jul 23 10:08:48 2015 +0100 Add missing TRACE_RETURN @@ -2880,7 +3901,7 @@ Date: Thu Jul 23 10:08:48 2015 +0100 commit 2dc8e3f470d7c0b579f867605b8bf40688bc5722 Author: Behdad Esfahbod -Date: Thu Jul 23 10:07:21 2015 +0100 +Date: Thu Jul 23 10:07:21 2015 +0100 [ot] Add missing return! @@ -2889,20 +3910,20 @@ Date: Thu Jul 23 10:07:21 2015 +0100 commit 582069172c39326c7f94373793c656439a4c2b59 Author: Behdad Esfahbod -Date: Wed Jul 22 18:44:59 2015 +0100 +Date: Wed Jul 22 18:44:59 2015 +0100 Add test case for deleting default ignorables with positioning .../sha1sum/051d92f8bc6ff724511b296c27623f824de256e9.ttf | Bin 0 -> 2028 bytes - test/shaping/fonts/sha1sum/MANIFEST | 1 + - test/shaping/tests/MANIFEST | 1 + - test/shaping/tests/default-ignorables.tests | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/default-ignorables.tests | 1 + 4 files changed, 3 insertions(+) commit 8cfbc304ee563ec96e402beed34b10b6c0950a6a Author: Behdad Esfahbod -Date: Wed Jul 22 18:41:10 2015 +0100 +Date: Wed Jul 22 18:41:10 2015 +0100 Fix hide-default-ignorables after f0010dfd01ef4a927b0bdc175dd4e343a8637174 @@ -2915,7 +3936,7 @@ Date: Wed Jul 22 18:41:10 2015 +0100 commit 2dbd3d29d6548bd96fd976606ed689fac8ad8817 Author: Behdad Esfahbod -Date: Wed Jul 22 18:28:39 2015 +0100 +Date: Wed Jul 22 18:28:39 2015 +0100 Fix hide-ignorables if font doesn't have space glyph @@ -2923,24 +3944,24 @@ Date: Wed Jul 22 18:28:39 2015 +0100 positioning data by then and can't use the output buffer. Ouch! src/hb-buffer-private.hh | 18 ------------------ - src/hb-ot-shape.cc | 44 + src/hb-ot-shape.cc | 44 +++++++++++++++++++++++++++++++++++--------- 2 files changed, 35 insertions(+), 27 deletions(-) commit 4ba796b26ee62de0d2830a550f3aa3b4aecf6f59 Author: Behdad Esfahbod -Date: Wed Jul 22 17:41:31 2015 +0100 +Date: Wed Jul 22 17:41:31 2015 +0100 Refactor _hb_glyph_info_is_default_ignorable() src/hb-ot-layout-gsubgpos-private.hh | 3 +-- - src/hb-ot-layout-private.hh | 4 +++- - src/hb-ot-shape.cc | 9 +++------ + src/hb-ot-layout-private.hh | 4 +++- + src/hb-ot-shape.cc | 9 +++------ 3 files changed, 7 insertions(+), 9 deletions(-) commit f0010dfd01ef4a927b0bdc175dd4e343a8637174 Author: Behdad Esfahbod -Date: Wed Jul 22 17:36:23 2015 +0100 +Date: Wed Jul 22 17:36:23 2015 +0100 [ot] Hide default-ignorables before finishing off positioning @@ -2957,7 +3978,7 @@ Date: Wed Jul 22 17:36:23 2015 +0100 commit 376d587f36b4ff10342ee6ca3bacd73532ea44c8 Author: Behdad Esfahbod -Date: Wed Jul 22 16:51:12 2015 +0100 +Date: Wed Jul 22 16:51:12 2015 +0100 Implement more granular cluster-merging @@ -2965,20 +3986,20 @@ Date: Wed Jul 22 16:51:12 2015 +0100 Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=71445 - NEWS | 8 +++++++ - src/hb-buffer-private.hh | 1 + - src/hb-buffer.cc | 46 + NEWS | 8 +++++++ + src/hb-buffer-private.hh | 1 + + src/hb-buffer.cc | 46 ++++++++++++++++++++++++++++++++++----- - src/hb-buffer.h | 12 ++++++++++ + src/hb-buffer.h | 12 ++++++++++ src/hb-ot-shape-complex-hangul.cc | 13 +++++------ - src/hb-ot-shape.cc | 7 ++++++ - util/options.cc | 1 + - util/options.hh | 3 +++ + src/hb-ot-shape.cc | 7 ++++++ + util/options.cc | 1 + + util/options.hh | 3 +++ 8 files changed, 77 insertions(+), 14 deletions(-) commit a60e2cfa395718cde48eb81f43adc27b4a92e117 Author: Behdad Esfahbod -Date: Wed Jul 22 15:49:08 2015 +0100 +Date: Wed Jul 22 15:49:08 2015 +0100 [ot] Don't rely on cluster numbers for ensure_native_direction() @@ -2987,18 +4008,18 @@ Date: Wed Jul 22 15:49:08 2015 +0100 commit 701112dad9f6e690b253f1e64f4e7e549f5ae65f Author: Behdad Esfahbod -Date: Wed Jul 22 15:42:20 2015 +0100 +Date: Wed Jul 22 15:42:20 2015 +0100 [ot] Simplify form_clusters() src/hb-buffer-private.hh | 9 ++++++++- - src/hb-buffer.cc | 7 ++----- - src/hb-ot-shape.cc | 11 +++++++++-- + src/hb-buffer.cc | 7 ++----- + src/hb-ot-shape.cc | 11 +++++++++-- 3 files changed, 19 insertions(+), 8 deletions(-) commit 7b8b63adc5e0389fc4cf2720ef7e5804ab6c29cc Author: Behdad Esfahbod -Date: Wed Jul 22 15:24:26 2015 +0100 +Date: Wed Jul 22 15:24:26 2015 +0100 [ot] Don't mirror character if font doesn't support mirrored character! @@ -3008,7 +4029,7 @@ Date: Wed Jul 22 15:24:26 2015 +0100 commit 97d7c3a100e2673279f066540229d229aaf0df78 Author: Behdad Esfahbod -Date: Wed Jul 22 14:28:25 2015 +0100 +Date: Wed Jul 22 14:28:25 2015 +0100 [graphite2] Fix bunch of stuff @@ -3020,7 +4041,7 @@ Date: Wed Jul 22 14:28:25 2015 +0100 commit ea7f8414e34d4b5efc7b98974637c08f75440f0e Author: Behdad Esfahbod -Date: Wed Jul 22 13:53:45 2015 +0100 +Date: Wed Jul 22 13:53:45 2015 +0100 [graphite2] Enlarge buffer for output glyphs! @@ -3029,7 +4050,7 @@ Date: Wed Jul 22 13:53:45 2015 +0100 commit 9cd59db1af47ff511edf251949d58b82673cf704 Author: Behdad Esfahbod -Date: Wed Jul 22 13:27:06 2015 +0100 +Date: Wed Jul 22 13:27:06 2015 +0100 [USE] Implement topographical features for non-Arabic-joining scripts @@ -3042,7 +4063,7 @@ Date: Wed Jul 22 13:27:06 2015 +0100 commit ecb0b24ef3f8177e7c789f45a2e858bd67e31be3 Author: Behdad Esfahbod -Date: Wed Jul 22 12:02:09 2015 +0100 +Date: Wed Jul 22 12:02:09 2015 +0100 Use foreach_cluster in Indic shaper @@ -3052,7 +4073,7 @@ Date: Wed Jul 22 12:02:09 2015 +0100 commit 56f71ff98890fc4fd13e8d9743dc34c4b9407309 Author: Behdad Esfahbod -Date: Wed Jul 22 11:58:11 2015 +0100 +Date: Wed Jul 22 11:58:11 2015 +0100 Use foreach_syllable in Myanmar shaper @@ -3062,20 +4083,20 @@ Date: Wed Jul 22 11:58:11 2015 +0100 commit ac596511a8c9eeaeb455ca16b5b9c5f1b9923b3a Author: Behdad Esfahbod -Date: Wed Jul 22 11:54:02 2015 +0100 +Date: Wed Jul 22 11:54:02 2015 +0100 Add foreach_syllable Use it in USE. - src/hb-ot-layout-private.hh | 24 ++++++++ + src/hb-ot-layout-private.hh | 24 ++++++++ src/hb-ot-shape-complex-use.cc | 129 +++++++++++++---------------------------- 2 files changed, 64 insertions(+), 89 deletions(-) commit 8ba9e689680f7685c04cfe7c6019222bdf0c52b0 Author: Behdad Esfahbod -Date: Wed Jul 22 11:16:01 2015 +0100 +Date: Wed Jul 22 11:16:01 2015 +0100 [USE] Do Arabic-like shaping @@ -3085,19 +4106,19 @@ Date: Wed Jul 22 11:16:01 2015 +0100 commit 9daf2dfb6bd5683fd951bdf166c8b87938257e52 Author: Behdad Esfahbod -Date: Wed Jul 22 10:32:30 2015 +0100 +Date: Wed Jul 22 10:32:30 2015 +0100 Add hb-ot-shape-complex-arabic-private.hh - src/Makefile.am | 1 + + src/Makefile.am | 1 + src/hb-ot-shape-complex-arabic-private.hh | 50 +++++++++++++++++++++++++++++++ - src/hb-ot-shape-complex-arabic.cc | 37 +++++++++++++---------- + src/hb-ot-shape-complex-arabic.cc | 37 +++++++++++++---------- 3 files changed, 73 insertions(+), 15 deletions(-) commit a51a661fe1dcfdd3a274a6be6ad741c68d430c8c Author: Behdad Esfahbod -Date: Tue Jul 21 18:24:21 2015 +0100 +Date: Tue Jul 21 18:24:21 2015 +0100 [USE] Only reorder the first component of a split left mark @@ -3106,7 +4127,7 @@ Date: Tue Jul 21 18:24:21 2015 +0100 commit a08a278b15c7e57a1d0a783f2bc877471b9d8229 Author: Behdad Esfahbod -Date: Tue Jul 21 18:09:40 2015 +0100 +Date: Tue Jul 21 18:09:40 2015 +0100 [USE] Don't compose split matras @@ -3117,19 +4138,19 @@ Date: Tue Jul 21 18:09:40 2015 +0100 commit 21cb08a417f1203523191192d6a342e8cd0ea14c Author: Behdad Esfahbod -Date: Tue Jul 21 17:47:06 2015 +0100 +Date: Tue Jul 21 17:47:06 2015 +0100 Remove unused SEA shaper - src/Makefile.am | 4 - + src/Makefile.am | 4 - src/hb-ot-shape-complex-sea-machine.rl | 102 --------- - src/hb-ot-shape-complex-sea.cc | 380 + src/hb-ot-shape-complex-sea.cc | 380 --------------------------------- 3 files changed, 486 deletions(-) commit db1e9cdd41ff7c97c29b4d9b64b2351ed0ef0403 Author: Behdad Esfahbod -Date: Tue Jul 21 17:46:06 2015 +0100 +Date: Tue Jul 21 17:46:06 2015 +0100 Retire SEA shaper in favor of USE @@ -3138,7 +4159,7 @@ Date: Tue Jul 21 17:46:06 2015 +0100 commit 87dde9c64753dea4017f11a7734e7528b8eecac0 Author: Behdad Esfahbod -Date: Tue Jul 21 17:31:43 2015 +0100 +Date: Tue Jul 21 17:31:43 2015 +0100 [USE] Only use USE shaper if script system is not DFLT @@ -3149,7 +4170,7 @@ Date: Tue Jul 21 17:31:43 2015 +0100 commit 29832d797ff2f3a96721dd44f2f03a83fb2e8dda Author: Behdad Esfahbod -Date: Tue Jul 21 17:24:18 2015 +0100 +Date: Tue Jul 21 17:24:18 2015 +0100 Route misc untested scripts through USE shaper instead of Indic @@ -3165,7 +4186,7 @@ Date: Tue Jul 21 17:24:18 2015 +0100 commit 40c4a991c7ea18017273ff8993eecc3953869e69 Author: Behdad Esfahbod -Date: Tue Jul 21 17:14:54 2015 +0100 +Date: Tue Jul 21 17:14:54 2015 +0100 [USE] Implement dotted-circle @@ -3173,45 +4194,45 @@ Date: Tue Jul 21 17:14:54 2015 +0100 are concerned. src/hb-ot-shape-complex-use-machine.rl | 10 ++++++++++ - src/hb-ot-shape-complex-use.cc | 18 +++++++++++++++--- + src/hb-ot-shape-complex-use.cc | 18 +++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) commit 7ce03ebe7c525919ce22d9094480847ff1b3c2b2 Author: Behdad Esfahbod -Date: Tue Jul 21 16:55:26 2015 +0100 +Date: Tue Jul 21 16:55:26 2015 +0100 [USE] Move pref src/hb-ot-shape-complex-use-machine.rl | 9 +++++---- src/hb-ot-shape-complex-use-private.hh | 9 +++++---- - src/hb-ot-shape-complex-use.cc | 24 ++++++++++++++++++++++-- + src/hb-ot-shape-complex-use.cc | 24 ++++++++++++++++++++++-- 3 files changed, 32 insertions(+), 10 deletions(-) commit 2d4b62ead931b13f95f5dc0e5b740d997a8d1a8e Author: Behdad Esfahbod -Date: Tue Jul 21 16:46:37 2015 +0100 +Date: Tue Jul 21 16:46:37 2015 +0100 [USE] Fix-up variation selectors and word joiner in table - src/gen-use-table.py | 7 ++++++- + src/gen-use-table.py | 7 ++++++- src/hb-ot-shape-complex-use-table.cc | 34 +++++++++++++++++++++++----------- 2 files changed, 29 insertions(+), 12 deletions(-) commit ad7178227f16abc17456f122deac1508031cbbc3 Author: Behdad Esfahbod -Date: Tue Jul 21 16:43:27 2015 +0100 +Date: Tue Jul 21 16:43:27 2015 +0100 [USE] Use a couple warnings - src/gen-use-table.py | 20 ++++----- + src/gen-use-table.py | 20 ++++----- src/hb-ot-shape-complex-use-table.cc | 82 ++++++++++++++++++------------------ 2 files changed, 51 insertions(+), 51 deletions(-) commit a85c4da9b1750c2f994f9f85226a3e755fafe50b Author: Behdad Esfahbod -Date: Tue Jul 21 16:07:10 2015 +0100 +Date: Tue Jul 21 16:07:10 2015 +0100 [USE] Move rphf @@ -3221,7 +4242,7 @@ Date: Tue Jul 21 16:07:10 2015 +0100 commit 5b5617e0664e59770910d04d15175f643a5ffb73 Author: Behdad Esfahbod -Date: Tue Jul 21 15:52:15 2015 +0100 +Date: Tue Jul 21 15:52:15 2015 +0100 Add FLAG_UNSAFE() @@ -3232,7 +4253,7 @@ Date: Tue Jul 21 15:52:15 2015 +0100 commit f8160a495966c790b79134a9f9382b6545f8c733 Author: Behdad Esfahbod -Date: Tue Jul 21 15:50:02 2015 +0100 +Date: Tue Jul 21 15:50:02 2015 +0100 Add FLAG_SAFE() for values known to be small-enough @@ -3241,13 +4262,13 @@ Date: Tue Jul 21 15:50:02 2015 +0100 src/hb-ot-shape-complex-arabic.cc | 2 +- src/hb-ot-shape-complex-indic.cc | 12 ++++++------ src/hb-ot-shape-complex-myanmar.cc | 2 +- - src/hb-private.hh | 5 +++-- - src/hb-unicode-private.hh | 2 +- + src/hb-private.hh | 5 +++-- + src/hb-unicode-private.hh | 2 +- 5 files changed, 12 insertions(+), 11 deletions(-) commit 366aeaad006b230481a3c08ab4d239fb6b64fef8 Author: Behdad Esfahbod -Date: Tue Jul 21 15:45:48 2015 +0100 +Date: Tue Jul 21 15:45:48 2015 +0100 Add note re ASSERT_STATIC_EXPR_ZERO() @@ -3256,18 +4277,18 @@ Date: Tue Jul 21 15:45:48 2015 +0100 commit d6adca9fbbbd6fc7c8906121b50c3930fbe2de8e Author: Behdad Esfahbod -Date: Tue Jul 21 15:17:27 2015 +0100 +Date: Tue Jul 21 15:17:27 2015 +0100 Remove unused macro ASSERT_STATIC_EXPR() src/hb-ot-shape-complex-arabic-win1256.hh | 4 ++-- src/hb-ot-shape-complex-indic-private.hh | 2 -- - src/hb-private.hh | 1 - + src/hb-private.hh | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) commit 1025e1a9e7785ac67cc90d05b02862e38b3e6026 Author: Behdad Esfahbod -Date: Tue Jul 21 15:05:35 2015 +0100 +Date: Tue Jul 21 15:05:35 2015 +0100 Use unsigned in FLAG() @@ -3276,7 +4297,7 @@ Date: Tue Jul 21 15:05:35 2015 +0100 commit cf59c7589c2b4064f4b9f4936115f830089a8ee7 Author: Behdad Esfahbod -Date: Tue Jul 21 14:51:45 2015 +0100 +Date: Tue Jul 21 14:51:45 2015 +0100 [USE] Use use_category() for rphf/pref memory @@ -3286,30 +4307,30 @@ Date: Tue Jul 21 14:51:45 2015 +0100 commit 595936ec25e9c0924851bd1aa1af5eed3723b54f Author: Behdad Esfahbod -Date: Tue Jul 21 14:15:35 2015 +0100 +Date: Tue Jul 21 14:15:35 2015 +0100 [USE] Hook of rphf and pref custom processing Still no reordering. - src/hb-ot-layout-private.hh | 8 ++ + src/hb-ot-layout-private.hh | 8 ++ src/hb-ot-shape-complex-use.cc | 181 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 181 insertions(+), 8 deletions(-) commit ba72801325e4bd58f7597938d4409762c9fa530c Author: Behdad Esfahbod -Date: Tue Jul 21 11:57:23 2015 +0100 +Date: Tue Jul 21 11:57:23 2015 +0100 [USE] Add CGJ to table - src/gen-use-table.py | 13 ++++++++++--- + src/gen-use-table.py | 13 ++++++++++--- src/hb-ot-shape-complex-use-table.cc | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) commit 4febed61edc5367543e5a206ae01d3393841b612 Author: Behdad Esfahbod -Date: Tue Jul 21 10:24:32 2015 +0100 +Date: Tue Jul 21 10:24:32 2015 +0100 [USE] Set up features @@ -3319,7 +4340,7 @@ Date: Tue Jul 21 10:24:32 2015 +0100 commit 52a957795697085a5d379921ddd8aa6cf2f1a99d Author: Behdad Esfahbod -Date: Tue Jul 21 10:02:04 2015 +0100 +Date: Tue Jul 21 10:02:04 2015 +0100 [USE] Hook up new scripts to USE shaper @@ -3332,56 +4353,56 @@ Date: Tue Jul 21 10:02:04 2015 +0100 commit b4c0829bc18b696f140a260fa2e1089d10164519 Author: Behdad Esfahbod -Date: Tue Jul 21 09:31:19 2015 +0100 +Date: Tue Jul 21 09:31:19 2015 +0100 [USE] Remove unused Unicode data enums from USE C++ side src/hb-ot-shape-complex-use-private.hh | 66 +--------------------------------- - src/hb-ot-shape-complex-use.cc | 14 ++------ + src/hb-ot-shape-complex-use.cc | 14 ++------ 2 files changed, 3 insertions(+), 77 deletions(-) commit 44910cef626e6d03baa4d89d8fbe2c088971902d Author: Behdad Esfahbod -Date: Mon Jul 20 18:01:10 2015 +0100 +Date: Mon Jul 20 18:01:10 2015 +0100 [USE] Finish converting Unicode positional categories to USE Even compiles. - src/gen-use-table.py | 114 +++++- + src/gen-use-table.py | 114 +++++- src/hb-ot-shape-complex-use-table.cc | 702 ++++++++++++++++++----------------- 2 files changed, 467 insertions(+), 349 deletions(-) commit ad725552521273a1f571f04bc96a04221c3e067a Author: Behdad Esfahbod -Date: Mon Jul 20 17:00:06 2015 +0100 +Date: Mon Jul 20 17:00:06 2015 +0100 [USE] Map from Unicode data to USE syllabic categories Positional sub-categories not applied yet. - src/gen-use-table.py | 128 ++-- + src/gen-use-table.py | 128 ++-- src/hb-ot-shape-complex-use-table.cc | 1062 ++++++++++++---------------------- 2 files changed, 409 insertions(+), 781 deletions(-) commit 20e246e674155d5fb6527722fc3ef3accf2413df Author: Behdad Esfahbod -Date: Mon Jul 20 15:56:19 2015 +0100 +Date: Mon Jul 20 15:56:19 2015 +0100 [USE] Start moving Unicode-to-USE mapping into Python code - src/Makefile.am | 2 +- - src/gen-use-table.py | 176 + src/Makefile.am | 2 +- + src/gen-use-table.py | 176 +++++++++++++++++++++++++++++++++-- src/hb-ot-shape-complex-use-table.cc | 3 +- 3 files changed, 169 insertions(+), 12 deletions(-) commit eb74535cc2c0d0de41e54e75bdc71825ec969523 Author: Behdad Esfahbod -Date: Mon Jul 20 15:33:25 2015 +0100 +Date: Mon Jul 20 15:33:25 2015 +0100 [USE] Fix Number clusters @@ -3392,18 +4413,18 @@ Date: Mon Jul 20 15:33:25 2015 +0100 commit a9663958fe861950b6f389b389f146232b2cd909 Author: Behdad Esfahbod -Date: Mon Jul 20 14:24:55 2015 +0100 +Date: Mon Jul 20 14:24:55 2015 +0100 [USE] Start putting together the shaper body src/hb-ot-shape-complex-use-private.hh | 2 +- - src/hb-ot-shape-complex-use.cc | 339 + src/hb-ot-shape-complex-use.cc | 339 +++++++++++++++++++++++++++++++++ 2 files changed, 340 insertions(+), 1 deletion(-) commit e0eabd7f67462ac34fbfc749d897be478fbd1224 Author: Behdad Esfahbod -Date: Mon Jul 20 13:30:51 2015 +0100 +Date: Mon Jul 20 13:30:51 2015 +0100 [USE] Put a Ragel machine together @@ -3417,7 +4438,7 @@ Date: Mon Jul 20 13:30:51 2015 +0100 commit fd74b939b176f47d34d34b3d33e2a09d255c2d9e Author: Behdad Esfahbod -Date: Mon Jul 20 13:30:45 2015 +0100 +Date: Mon Jul 20 13:30:45 2015 +0100 Minor @@ -3426,21 +4447,21 @@ Date: Mon Jul 20 13:30:45 2015 +0100 commit 5e5c8560cca3cb9c6be90c7c18ecb77d5cca0c0f Author: Behdad Esfahbod -Date: Mon Jul 20 12:01:20 2015 +0100 +Date: Mon Jul 20 12:01:20 2015 +0100 [USE] Minor optimization of USE table - src/gen-use-table.py | 2 +- + src/gen-use-table.py | 2 +- src/hb-ot-shape-complex-use-table.cc | 30 ++++++++++++------------------ 2 files changed, 13 insertions(+), 19 deletions(-) commit 14b12f92a9ef7db57c5252ef0442239319ce4bca Author: Behdad Esfahbod -Date: Mon Jul 20 11:57:44 2015 +0100 +Date: Mon Jul 20 11:57:44 2015 +0100 [USE] Add Kharoshti test data from Unicode proposal - test/shaping/texts/in-tree/MANIFEST | 1 + + test/shaping/texts/in-tree/MANIFEST | 1 + test/shaping/texts/in-tree/shaper-use/MANIFEST | 1 + .../in-tree/shaper-use/script-kharoshti/MANIFEST | 1 + .../in-tree/shaper-use/script-kharoshti/misc.txt | 36 @@ -3449,33 +4470,33 @@ Date: Mon Jul 20 11:57:44 2015 +0100 commit c48ff288522f33dc6c78520de0a0a74306630895 Author: Behdad Esfahbod -Date: Mon Jul 20 11:46:17 2015 +0100 +Date: Mon Jul 20 11:46:17 2015 +0100 [USE] Build Universal Shaping Engine data table from Unicode 8 files - src/gen-use-table.py | 35 +- + src/gen-use-table.py | 35 +- src/hb-ot-shape-complex-use-table.cc | 1016 ++++++++++++++++++++++++++++++++++ 2 files changed, 1032 insertions(+), 19 deletions(-) commit e2c95116e1423f83a692d6170553d0cc95733d24 Author: Behdad Esfahbod -Date: Mon Jul 20 11:32:48 2015 +0100 +Date: Mon Jul 20 11:32:48 2015 +0100 [USE] Add Universal Shaping Engine to Makefile - src/Makefile.am | 23 +++- - src/gen-use-table.py | 237 + src/Makefile.am | 23 +++- + src/gen-use-table.py | 237 +++++++++++++++++++++++++++++++++ src/hb-ot-shape-complex-use-machine.rl | 0 src/hb-ot-shape-complex-use-private.hh | 0 - src/hb-ot-shape-complex-use-table.cc | 0 - src/hb-ot-shape-complex-use.cc | 0 + src/hb-ot-shape-complex-use-table.cc | 0 + src/hb-ot-shape-complex-use.cc | 0 6 files changed, 254 insertions(+), 6 deletions(-) commit 41a29af8053782e3a9c6a96a394bd76ef6d42099 Author: Behdad Esfahbod -Date: Wed Jul 15 01:39:57 2015 +0100 +Date: Wed Jul 15 01:39:57 2015 +0100 Update Arabic shaping table for Unicode 8.0 @@ -3484,7 +4505,7 @@ Date: Wed Jul 15 01:39:57 2015 +0100 commit 64a2726e2c6efce4379a7609024ec21eb4b5e4dc Author: Behdad Esfahbod -Date: Wed Jul 15 01:36:39 2015 +0100 +Date: Wed Jul 15 01:36:39 2015 +0100 Add Unicode 8.0 scripts @@ -3496,7 +4517,7 @@ Date: Wed Jul 15 01:36:39 2015 +0100 commit 9ae156b76820d9079bae062e7e38c34a386d9bd2 Author: Behdad Esfahbod -Date: Sun Jul 5 22:43:17 2015 +0100 +Date: Sun Jul 5 22:43:17 2015 +0100 Fix pragma usage @@ -3518,7 +4539,7 @@ Date: Sun Jul 5 22:43:17 2015 +0100 commit 8ad89f057d737ccbc6f411e9ebcf11b8130a50bb Author: ThePhD -Date: Tue Jun 23 09:09:24 2015 -0400 +Date: Tue Jun 23 09:09:24 2015 -0400 Spelling words is not my strong point. @@ -3527,7 +4548,7 @@ Date: Tue Jun 23 09:09:24 2015 -0400 commit e0a828ecbd708757d67977f7e92a6f4c1b0b92fd Author: ThePhD -Date: Tue Jun 23 09:07:17 2015 -0400 +Date: Tue Jun 23 09:07:17 2015 -0400 Back to using regular `strdup`, with an `hb-private.hh` fix that special-cases VC++'s @@ -3539,24 +4560,24 @@ Date: Tue Jun 23 09:07:17 2015 -0400 commit 8e545d59610211261e684c10158b9e5df6fae24d Author: ThePhD -Date: Mon Jun 22 22:29:04 2015 -0400 +Date: Mon Jun 22 22:29:04 2015 -0400 Fix all VC++ warnings and errors in the current commit's builds. - src/hb-common.cc | 4 ++-- - src/hb-fallback-shape.cc | 2 +- - src/hb-ot-layout.cc | 2 +- - src/hb-ot-map.cc | 2 +- + src/hb-common.cc | 4 ++-- + src/hb-fallback-shape.cc | 2 +- + src/hb-ot-layout.cc | 2 +- + src/hb-ot-map.cc | 2 +- src/hb-ot-shape-complex-hangul.cc | 2 +- src/hb-ot-shape-complex-hebrew.cc | 2 +- src/hb-ot-shape-complex-indic.cc | 4 ++-- - src/hb-ot-shape-normalize.cc | 6 +++--- - src/hb-ot-shape.cc | 2 +- + src/hb-ot-shape-normalize.cc | 6 +++--- + src/hb-ot-shape.cc | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) commit 5f13bbd9d4b0970851626e2ce3cf4ecb3cfde801 Author: Behdad Esfahbod -Date: Fri Jun 19 13:31:49 2015 -0700 +Date: Fri Jun 19 13:31:49 2015 -0700 When removing default-ignorables, merge clusters @@ -3564,13 +4585,13 @@ Date: Fri Jun 19 13:31:49 2015 -0700 https://code.google.com/p/chromium/issues/detail?id=497578 src/hb-buffer-private.hh | 2 ++ - src/hb-buffer.cc | 36 ++++++++++++++++++++++++++++++++++-- - src/hb-ot-shape.cc | 2 +- + src/hb-buffer.cc | 36 ++++++++++++++++++++++++++++++++++-- + src/hb-ot-shape.cc | 2 +- 3 files changed, 37 insertions(+), 3 deletions(-) commit 82b521aeb7cc73879b44ca4278d6fa8b4347527f Author: Behdad Esfahbod -Date: Fri Jun 19 11:57:57 2015 -0700 +Date: Fri Jun 19 11:57:57 2015 -0700 Rewrite hide_default_ignorables @@ -3580,13 +4601,13 @@ Date: Fri Jun 19 11:57:57 2015 -0700 Needed for upcoming cluster merge fix. src/hb-buffer-private.hh | 18 ++++++++++++++ - src/hb-ot-shape.cc | 65 + src/hb-ot-shape.cc | 65 +++++++++++++++++++++++++++++------------------- 2 files changed, 57 insertions(+), 26 deletions(-) commit b3a2f6afbac1956b65f29a17b9dc896e86135329 Author: Behdad Esfahbod -Date: Thu Jun 18 17:15:33 2015 -0700 +Date: Thu Jun 18 17:15:33 2015 -0700 [test] Add test for cluster merging @@ -3605,17 +4626,17 @@ Date: Thu Jun 18 17:15:33 2015 -0700 commit a6446d44e6d04e1eeea994682e29f9cb6265f7f6 Author: Behdad Esfahbod -Date: Thu Jun 18 11:14:56 2015 -0700 +Date: Thu Jun 18 11:14:56 2015 -0700 0.9.41 - NEWS | 10 ++++++++++ + NEWS | 10 ++++++++++ configure.ac | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) commit cd042fc8c4a3984c3647cd22a27c34f00636f6e8 Author: Behdad Esfahbod -Date: Thu Jun 18 10:55:13 2015 -0700 +Date: Thu Jun 18 10:55:13 2015 -0700 [util] Disable hb-fc-list for now @@ -3627,7 +4648,7 @@ Date: Thu Jun 18 10:55:13 2015 -0700 commit 351f68f4e01a107f62e4eb3458d7c7ae379939fb Author: Behdad Esfahbod -Date: Fri Jun 12 17:46:06 2015 -0700 +Date: Fri Jun 12 17:46:06 2015 -0700 [bindings] Fix hb_language_get_default() and hb_ot_tag_to_language() @@ -3639,7 +4660,7 @@ Date: Fri Jun 12 17:46:06 2015 -0700 commit f0c80060763475aa34a18ecbef600b6811855cb6 Author: Behdad Esfahbod -Date: Fri Jun 12 17:37:41 2015 -0700 +Date: Fri Jun 12 17:37:41 2015 -0700 [TravisCI] Hook up Coverity @@ -3650,7 +4671,7 @@ Date: Fri Jun 12 17:37:41 2015 -0700 commit 8ac446908ca75bea989414a0f551a6da8885bf52 Author: Behdad Esfahbod -Date: Fri Jun 12 17:29:05 2015 -0700 +Date: Fri Jun 12 17:29:05 2015 -0700 Add Coverity Scan badge @@ -3659,7 +4680,7 @@ Date: Fri Jun 12 17:29:05 2015 -0700 commit a5e4f6d6088f6ed37fb1d68d3682b8eb4c9b46fe Author: Behdad Esfahbod -Date: Wed Jun 10 10:57:46 2015 -0700 +Date: Wed Jun 10 10:57:46 2015 -0700 Fix warnings: "member call on null pointer of type" @@ -3670,7 +4691,7 @@ Date: Wed Jun 10 10:57:46 2015 -0700 commit 16dac7eccf04bb357e95a8e4c18c8418dcfb4030 Author: Behdad Esfahbod -Date: Wed Jun 3 12:07:46 2015 -0700 +Date: Wed Jun 3 12:07:46 2015 -0700 Fix build @@ -3679,7 +4700,7 @@ Date: Wed Jun 3 12:07:46 2015 -0700 commit 8dacb7f8b46c70f22b70c78e0a8efc3309137650 Author: Behdad Esfahbod -Date: Wed Jun 3 11:53:42 2015 -0700 +Date: Wed Jun 3 11:53:42 2015 -0700 Add include check to hb-ot-font.h @@ -3689,7 +4710,7 @@ Date: Wed Jun 3 11:53:42 2015 -0700 commit 37c8daf724add4a41a06385e571277d137dc2a2f Merge: f1b4430 01c3a88 Author: Behdad Esfahbod -Date: Mon Jun 1 13:27:37 2015 -0700 +Date: Mon Jun 1 13:27:37 2015 -0700 Merge pull request #111 from brawer/since @@ -3697,35 +4718,35 @@ Date: Mon Jun 1 13:27:37 2015 -0700 commit 01c3a88543850c87483fd8671044df53b368c520 Author: Sascha Brawer -Date: Mon Jun 1 13:22:01 2015 +0200 +Date: Mon Jun 1 13:22:01 2015 +0200 Fix "Since:" tags Based on data from http://upstream-tracker.org/versions/harfbuzz.html Resolves #103 - src/hb-buffer.cc | 32 +++++++++++++++++------------ - src/hb-common.cc | 4 ++-- - src/hb-face.cc | 12 +++++------ - src/hb-font.cc | 14 ++++++------- - src/hb-font.h | 4 ++-- - src/hb-ft.cc | 4 ++-- - src/hb-glib.cc | 3 +++ + src/hb-buffer.cc | 32 +++++++++++++++++------------ + src/hb-common.cc | 4 ++-- + src/hb-face.cc | 12 +++++------ + src/hb-font.cc | 14 ++++++------- + src/hb-font.h | 4 ++-- + src/hb-ft.cc | 4 ++-- + src/hb-glib.cc | 3 +++ src/hb-gobject-structs.h | 18 +++++++++++++++++ - src/hb-ot-font.cc | 3 +++ - src/hb-ot-layout.cc | 30 ++++++++++++++++++++++++++++ - src/hb-ot-shape.cc | 6 ++++++ - src/hb-set.cc | 52 + src/hb-ot-font.cc | 3 +++ + src/hb-ot-layout.cc | 30 ++++++++++++++++++++++++++++ + src/hb-ot-shape.cc | 6 ++++++ + src/hb-set.cc | 52 ++++++++++++++++++++++++------------------------ - src/hb-shape-plan.cc | 18 ++++++++--------- - src/hb-shape.cc | 8 ++++---- - src/hb-unicode.cc | 6 +++--- - src/hb-unicode.h | 31 ++++++++++++++++++++++++++--- + src/hb-shape-plan.cc | 18 ++++++++--------- + src/hb-shape.cc | 8 ++++---- + src/hb-unicode.cc | 6 +++--- + src/hb-unicode.h | 31 ++++++++++++++++++++++++++--- 16 files changed, 168 insertions(+), 77 deletions(-) commit f1b44303df0712b433e35e1e1e75115c353b279e Author: Behdad Esfahbod -Date: Thu May 21 14:00:15 2015 -0700 +Date: Thu May 21 14:00:15 2015 -0700 Fix unary minus operator applied to unsigned int @@ -3744,7 +4765,7 @@ Date: Thu May 21 14:00:15 2015 -0700 commit 1ae6cdb365c15405500d4f50ec98016dde23a26b Author: Behdad Esfahbod -Date: Tue May 19 17:42:30 2015 -0700 +Date: Tue May 19 17:42:30 2015 -0700 [gobject] Remove hb_language_t workarounds for g-i shortcomings @@ -3766,7 +4787,7 @@ Date: Tue May 19 17:42:30 2015 -0700 commit ece434fa0fec6754e5164d881c1e967376729eca Author: Behdad Esfahbod -Date: Tue May 19 17:20:58 2015 -0700 +Date: Tue May 19 17:20:58 2015 -0700 [gobject] Macroize value types @@ -3778,7 +4799,7 @@ Date: Tue May 19 17:20:58 2015 -0700 commit 9df099b4837df722e738675af318efcc9ac39a78 Author: Behdad Esfahbod -Date: Mon May 18 18:37:06 2015 -0700 +Date: Mon May 18 18:37:06 2015 -0700 [ft] Don't set *glyph in get_glyph() if glyph not found @@ -3787,7 +4808,7 @@ Date: Mon May 18 18:37:06 2015 -0700 commit ff0f210519bcb0e44d4b986f7eef2004383cd344 Author: Behdad Esfahbod -Date: Mon May 18 14:16:28 2015 -0700 +Date: Mon May 18 14:16:28 2015 -0700 [util] Minor @@ -3797,7 +4818,7 @@ Date: Mon May 18 14:16:28 2015 -0700 commit fbecde3d5c5c6d5af315140e4966dc850388ad63 Merge: 5801521 74139f9 Author: Behdad Esfahbod -Date: Thu May 7 10:46:42 2015 -0700 +Date: Thu May 7 10:46:42 2015 -0700 Merge pull request #105 from ebraminio/master @@ -3805,7 +4826,7 @@ Date: Thu May 7 10:46:42 2015 -0700 commit 74139f9839f69ea3e7a1d17627f52fea6c06d58a Author: Ebrahim Byagowi -Date: Thu May 7 13:09:32 2015 +0000 +Date: Thu May 7 13:09:32 2015 +0000 Fix Travis CI config to pass again @@ -3814,7 +4835,7 @@ Date: Thu May 7 13:09:32 2015 +0000 commit 58015215321a76d68df8e0d51039904a67291108 Author: Behdad Esfahbod -Date: Wed May 6 00:40:31 2015 -0700 +Date: Wed May 6 00:40:31 2015 -0700 Add note re OpenType 1.7 language tags @@ -3823,7 +4844,7 @@ Date: Wed May 6 00:40:31 2015 -0700 commit f6266ad291d7686d5e110255ace5f2ff9e70bf38 Author: Roozbeh Pournader -Date: Tue May 5 22:31:19 2015 -0700 +Date: Tue May 5 22:31:19 2015 -0700 [minor] Remove comment about Navajo OpenType code. @@ -3836,7 +4857,7 @@ Date: Tue May 5 22:31:19 2015 -0700 commit 42b00118eae46a5183e885e89e0856f41361f57e Merge: c60f3c8 cfeb056 Author: Behdad Esfahbod -Date: Tue May 5 14:49:47 2015 -0700 +Date: Tue May 5 14:49:47 2015 -0700 Merge pull request #102 from roozbehp/master @@ -3844,7 +4865,7 @@ Date: Tue May 5 14:49:47 2015 -0700 commit c60f3c8e1156fe7328d42851013cca97333c3bf7 Author: Behdad Esfahbod -Date: Mon May 4 23:10:32 2015 -0700 +Date: Mon May 4 23:10:32 2015 -0700 [README.python] Add package name for gobject-introspection on Ubuntu @@ -3853,7 +4874,7 @@ Date: Mon May 4 23:10:32 2015 -0700 commit 82010a4bdb32248deb1337a3357dfae5b203c48d Author: Behdad Esfahbod -Date: Mon May 4 23:09:51 2015 -0700 +Date: Mon May 4 23:09:51 2015 -0700 [travis] Comment out gobject-introspection again @@ -3864,7 +4885,7 @@ Date: Mon May 4 23:09:51 2015 -0700 commit 8a254bdd29a99eb91b37e9e540179a1a01f77605 Author: Behdad Esfahbod -Date: Mon May 4 19:22:11 2015 -0700 +Date: Mon May 4 19:22:11 2015 -0700 [travis] Build with introspection enabled @@ -3873,7 +4894,7 @@ Date: Mon May 4 19:22:11 2015 -0700 commit be66ec5373634234f221ace9cfed45d76b87f20e Author: Behdad Esfahbod -Date: Thu Apr 30 18:27:13 2015 -0400 +Date: Thu Apr 30 18:27:13 2015 -0400 Use TRUE/FALSE instead of true/false in docs @@ -3882,7 +4903,7 @@ Date: Thu Apr 30 18:27:13 2015 -0400 commit d055e1fc781c123f38d321846937965ef794257e Author: Khaled Hosny -Date: Wed Jan 8 02:28:55 2014 +0200 +Date: Wed Jan 8 02:28:55 2014 +0200 Some attempt into initial hb-shape documentation @@ -3896,7 +4917,7 @@ Date: Wed Jan 8 02:28:55 2014 +0200 commit 81bedda58cfc15f1987aa1952290cf9d87b4d074 Author: Behdad Esfahbod -Date: Thu Apr 30 13:04:16 2015 -0400 +Date: Thu Apr 30 13:04:16 2015 -0400 New API: hb_buffer_reverse_range() @@ -3906,7 +4927,7 @@ Date: Thu Apr 30 13:04:16 2015 -0400 commit cfeb0562ebd8804dad731625153549eafeb78213 Author: Roozbeh Pournader -Date: Wed Apr 29 09:32:42 2015 -0700 +Date: Wed Apr 29 09:32:42 2015 -0700 Add OpenType language tag 'NAV ' for Navajo. @@ -3917,7 +4938,7 @@ Date: Wed Apr 29 09:32:42 2015 -0700 commit f724cc351640ee075a9867ef42df32cf5e0ef3b7 Author: Jonathan Kew -Date: Thu Apr 23 12:45:02 2015 +0100 +Date: Thu Apr 23 12:45:02 2015 +0100 Don't apply Arabic shaping to vertical text. @@ -3926,7 +4947,7 @@ Date: Thu Apr 23 12:45:02 2015 +0100 commit 97942420bbee1bc6953d5f805621066301fa17ca Author: Behdad Esfahbod -Date: Thu Apr 23 18:56:24 2015 -0700 +Date: Thu Apr 23 18:56:24 2015 -0700 Update check-libstdc++ for clang @@ -3935,7 +4956,7 @@ Date: Thu Apr 23 18:56:24 2015 -0700 commit 8f0a4d67143ccdef0b5a6ac99fb9b680c3a2f69c Author: Behdad Esfahbod -Date: Thu Apr 23 14:32:33 2015 -0700 +Date: Thu Apr 23 14:32:33 2015 -0700 [test] Ignor 'n' and 'i' in hb-unicode-encode @@ -3946,7 +4967,7 @@ Date: Thu Apr 23 14:32:33 2015 -0700 commit 39851ce84efd30f6d0570324ff8f3808a01b813b Author: Behdad Esfahbod -Date: Tue Apr 21 19:23:27 2015 -0700 +Date: Tue Apr 21 19:23:27 2015 -0700 [coretext] Oops; fix issue number for previous commit @@ -3955,7 +4976,7 @@ Date: Tue Apr 21 19:23:27 2015 -0700 commit 24f17afeafd40ff77177ed42c9007a0f34fcbb78 Author: Behdad Esfahbod -Date: Tue Apr 21 19:21:32 2015 -0700 +Date: Tue Apr 21 19:21:32 2015 -0700 [coretext] Fix positioning with trailing whitespace @@ -3966,7 +4987,7 @@ Date: Tue Apr 21 19:21:32 2015 -0700 commit dba482fc4458776ffebdeb2d34b970b4223fa8fd Author: Behdad Esfahbod -Date: Fri Apr 17 13:08:08 2015 -0700 +Date: Fri Apr 17 13:08:08 2015 -0700 [ot-font] Accept MS Symbol cmap if nothing else found @@ -3975,7 +4996,7 @@ Date: Fri Apr 17 13:08:08 2015 -0700 commit 3029e8b59d1667dc6a53355be89a2b55d7089b88 Author: Behdad Esfahbod -Date: Tue Apr 14 13:32:22 2015 -0700 +Date: Tue Apr 14 13:32:22 2015 -0700 Revert "Add MSVC pragma for UTF-8 source code" @@ -3989,7 +5010,7 @@ Date: Tue Apr 14 13:32:22 2015 -0700 commit 820505a186ff60e4bae9d717fe4d7ab2390e6fef Author: Behdad Esfahbod -Date: Mon Apr 13 23:51:45 2015 -0700 +Date: Mon Apr 13 23:51:45 2015 -0700 Whitespace @@ -3999,7 +5020,7 @@ Date: Mon Apr 13 23:51:45 2015 -0700 commit 76d57331117be8e0c2d4a2aee8341969b62b6888 Merge: 89cbd4d 9ee176e Author: Behdad Esfahbod -Date: Mon Apr 13 23:40:35 2015 -0700 +Date: Mon Apr 13 23:40:35 2015 -0700 Merge pull request #86 from cpfair/hb-shape-output-help-improvement @@ -4007,7 +5028,7 @@ Date: Mon Apr 13 23:40:35 2015 -0700 commit 89cbd4d9533011fb5487caa99a0cd58923e7cf59 Author: Behdad Esfahbod -Date: Mon Apr 13 12:27:08 2015 -0700 +Date: Mon Apr 13 12:27:08 2015 -0700 Add MSVC pragma for UTF-8 source code @@ -4020,7 +5041,7 @@ Date: Mon Apr 13 12:27:08 2015 -0700 commit 713f99ff6138b4149d9fd382f9af3ace01ee0da5 Merge: 1086f21 22524a5 Author: Behdad Esfahbod -Date: Fri Apr 10 14:34:05 2015 -0700 +Date: Fri Apr 10 14:34:05 2015 -0700 Merge pull request #99 from khaledhosny/introspection-fixes2 @@ -4028,7 +5049,7 @@ Date: Fri Apr 10 14:34:05 2015 -0700 commit 22524a514f6609a2bc009b6035f6b5b932c719c7 Author: Khaled Hosny -Date: Fri Apr 10 18:14:45 2015 +0200 +Date: Fri Apr 10 18:14:45 2015 +0200 [bindings] Fix hb_buffer_get_segment_properties @@ -4040,14 +5061,14 @@ Date: Fri Apr 10 18:14:45 2015 +0200 commit 1086f21e546e2435d9da6024fd6afa7a36ba3707 Merge: 125cb08 fe97b65 Author: Behdad Esfahbod -Date: Fri Apr 10 12:21:04 2015 -0700 +Date: Fri Apr 10 12:21:04 2015 -0700 Merge branch 'hb-fc' commit 125cb08345a7f27e565329d37093b1a60a41a403 Merge: e8fd839 855a5d7 Author: Behdad Esfahbod -Date: Fri Apr 10 12:19:57 2015 -0700 +Date: Fri Apr 10 12:19:57 2015 -0700 Merge pull request #98 from KonstantinRitt/WEC2013 @@ -4055,7 +5076,7 @@ Date: Fri Apr 10 12:19:57 2015 -0700 commit 04f89e8f7dfdb882e8c98afb613cba3f1d02ed7d Author: Khaled Hosny -Date: Fri Apr 10 17:49:01 2015 +0200 +Date: Fri Apr 10 17:49:01 2015 +0200 [bindings] Fix ownership of returned hb_language_t @@ -4067,7 +5088,7 @@ Date: Fri Apr 10 17:49:01 2015 +0200 commit 855a5d7cb8f585bf66dd18cb480b8c3feef62480 Author: Konstantin Ritt -Date: Fri Apr 10 17:18:01 2015 +0400 +Date: Fri Apr 10 17:18:01 2015 +0400 Fix build on WEC2013 @@ -4078,7 +5099,7 @@ Date: Fri Apr 10 17:18:01 2015 +0400 commit fe97b65a54a416229e28b1c931e5e01ca19f31d3 Author: Behdad Esfahbod -Date: Wed Aug 6 16:49:51 2014 -0400 +Date: Wed Aug 6 16:49:51 2014 -0400 [utils] Add hb-fc-list @@ -4086,17 +5107,17 @@ Date: Wed Aug 6 16:49:51 2014 -0400 It uses hb_shape() to do so, and as such is aware of HarfBuzz's normalizer. - configure.ac | 19 +++++ + configure.ac | 19 +++++ util/Makefile.am | 15 ++++ util/hb-fc-list.c | 222 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - util/hb-fc.cc | 149 ++++++++++++++++++++++++++++++++++++ - util/hb-fc.h | 46 +++++++++++ + util/hb-fc.cc | 149 ++++++++++++++++++++++++++++++++++++ + util/hb-fc.h | 46 +++++++++++ 5 files changed, 451 insertions(+) commit eb0bf3ae6688b7e98a706df2ad2714c071d77e22 Author: Behdad Esfahbod -Date: Wed Aug 6 15:36:41 2014 -0400 +Date: Wed Aug 6 15:36:41 2014 -0400 Relax inert checks @@ -4109,16 +5130,16 @@ Date: Wed Aug 6 15:36:41 2014 -0400 Tests are revised to reflect. - src/hb-face.cc | 4 ++-- - src/hb-font.cc | 4 +--- - src/hb-shape-plan.cc | 7 +++++-- - test/api/test-font.c | 10 +++++----- + src/hb-face.cc | 4 ++-- + src/hb-font.cc | 4 +--- + src/hb-shape-plan.cc | 7 +++++-- + test/api/test-font.c | 10 +++++----- test/api/test-object.c | 34 +++++++++++++++++----------------- 5 files changed, 30 insertions(+), 29 deletions(-) commit e8fd83932a75cfbaa4638a757868915ebfac3c1f Author: Behdad Esfahbod -Date: Thu Apr 9 15:52:26 2015 -0700 +Date: Thu Apr 9 15:52:26 2015 -0700 [util/hb-view] Fix rendering with all combinations of negative scales @@ -4129,7 +5150,7 @@ Date: Thu Apr 9 15:52:26 2015 -0700 commit 69d5af93169ea2d87276b65d43c889a359d5d81e Author: Behdad Esfahbod -Date: Thu Apr 9 15:17:16 2015 -0700 +Date: Thu Apr 9 15:17:16 2015 -0700 [util] Minor @@ -4138,7 +5159,7 @@ Date: Thu Apr 9 15:17:16 2015 -0700 commit a664810e38b479e05ea32cac263cb5730629f9d8 Author: Behdad Esfahbod -Date: Thu Apr 9 15:04:42 2015 -0700 +Date: Thu Apr 9 15:04:42 2015 -0700 [util] Accept comma as well as space when separating components of args @@ -4153,7 +5174,7 @@ Date: Thu Apr 9 15:04:42 2015 -0700 commit 9c974360febcfd67247107352425fe8590d9d452 Author: Behdad Esfahbod -Date: Thu Apr 9 12:04:14 2015 -0700 +Date: Thu Apr 9 12:04:14 2015 -0700 Minor rename @@ -4162,7 +5183,7 @@ Date: Thu Apr 9 12:04:14 2015 -0700 commit f3b170bdd970e31e9dbfed94c07c3cda41269aed Author: Behdad Esfahbod -Date: Wed Apr 8 16:26:24 2015 -0700 +Date: Wed Apr 8 16:26:24 2015 -0700 Minor @@ -4171,7 +5192,7 @@ Date: Wed Apr 8 16:26:24 2015 -0700 commit 2958f2c147fc6327175b51a4eaca694263e34ac9 Author: Behdad Esfahbod -Date: Wed Apr 8 16:26:16 2015 -0700 +Date: Wed Apr 8 16:26:16 2015 -0700 Fixup @@ -4180,19 +5201,19 @@ Date: Wed Apr 8 16:26:16 2015 -0700 commit b931e0b0ceeab0e4819d9c4b838c1a1eb87b52e4 Author: Behdad Esfahbod -Date: Wed Apr 8 14:39:00 2015 -0700 +Date: Wed Apr 8 14:39:00 2015 -0700 Fix warnings Part of https://github.com/behdad/harfbuzz/pull/68 - src/hb-ot-font.cc | 4 ++-- + src/hb-ot-font.cc | 4 ++-- src/hb-ot-layout-gsubgpos-private.hh | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 13 deletions(-) commit cdcdfe61b97a0a48ccf834b6d924d187da9609be Author: Behdad Esfahbod -Date: Wed Apr 8 13:25:04 2015 -0700 +Date: Wed Apr 8 13:25:04 2015 -0700 Err, instead of warn, if mutex / atomic / unicode funcs are missing @@ -4204,7 +5225,7 @@ Date: Wed Apr 8 13:25:04 2015 -0700 commit fc3c59a1d746c5280f6216a94fdc1be3e826051f Author: Behdad Esfahbod -Date: Wed Apr 8 13:03:27 2015 -0700 +Date: Wed Apr 8 13:03:27 2015 -0700 Fix unused var warnings @@ -4214,7 +5235,7 @@ Date: Wed Apr 8 13:03:27 2015 -0700 commit 3f174cd020b7762fae96f20ce14fc9e9abec748f Author: Konstantin Ritt -Date: Sat Mar 28 00:49:33 2015 +0400 +Date: Sat Mar 28 00:49:33 2015 +0400 Minor refactoring to the atomics implementation @@ -4234,7 +5255,7 @@ Date: Sat Mar 28 00:49:33 2015 +0400 commit 24930d544ee9e247e4cf6a5f6d5207ba9d7a3ddc Author: Behdad Esfahbod -Date: Wed Apr 8 12:52:06 2015 -0700 +Date: Wed Apr 8 12:52:06 2015 -0700 Minor @@ -4243,7 +5264,7 @@ Date: Wed Apr 8 12:52:06 2015 -0700 commit 45a8b46f478d4aa63ae5df74b6bb28ebdd7521ac Author: Behdad Esfahbod -Date: Wed Apr 8 12:49:38 2015 -0700 +Date: Wed Apr 8 12:49:38 2015 -0700 Allow implementing atomic and mutex ops in config @@ -4256,7 +5277,7 @@ Date: Wed Apr 8 12:49:38 2015 -0700 commit 3fe4e92bc5ff09d84c6763cedf06ce80d15a5fb2 Author: Behdad Esfahbod -Date: Wed Apr 8 12:49:23 2015 -0700 +Date: Wed Apr 8 12:49:23 2015 -0700 Minor @@ -4265,7 +5286,7 @@ Date: Wed Apr 8 12:49:23 2015 -0700 commit 9868749abe468130d89c80a2501847a83acb4579 Author: Behdad Esfahbod -Date: Mon Apr 6 14:51:31 2015 -0700 +Date: Mon Apr 6 14:51:31 2015 -0700 [test] Use /usr/bin/env python instead of /usr/bin/python @@ -4273,23 +5294,23 @@ Date: Mon Apr 6 14:51:31 2015 -0700 https://bugs.freedesktop.org/show_bug.cgi?id=76494 - test/shaping/hb-diff | 2 +- - test/shaping/hb-diff-colorize | 2 +- + test/shaping/hb-diff | 2 +- + test/shaping/hb-diff-colorize | 2 +- test/shaping/hb-diff-filter-failures | 2 +- - test/shaping/hb-diff-ngrams | 2 +- - test/shaping/hb-diff-stat | 2 +- - test/shaping/hb-manifest-read | 2 +- + test/shaping/hb-diff-ngrams | 2 +- + test/shaping/hb-diff-stat | 2 +- + test/shaping/hb-manifest-read | 2 +- test/shaping/hb-manifest-update | 2 +- test/shaping/hb-unicode-decode | 2 +- test/shaping/hb-unicode-encode | 2 +- test/shaping/hb-unicode-prettyname | 2 +- - test/shaping/hb_test_tools.py | 2 +- + test/shaping/hb_test_tools.py | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) commit bfcddd32a674dd19fca1bf521e95466a0eec5179 Merge: ce01ad7 363ceec Author: Behdad Esfahbod -Date: Mon Apr 6 14:41:32 2015 -0700 +Date: Mon Apr 6 14:41:32 2015 -0700 Merge pull request #93 from ebraminio/archpy3 @@ -4297,7 +5318,7 @@ Date: Mon Apr 6 14:41:32 2015 -0700 commit ce01ad7c2f5a259030f4dbec746f85522aa9c3f9 Author: Behdad Esfahbod -Date: Wed Apr 1 11:05:59 2015 -0700 +Date: Wed Apr 1 11:05:59 2015 -0700 MSVC 2015 supports snprintf and not _snprintf @@ -4306,7 +5327,7 @@ Date: Wed Apr 1 11:05:59 2015 -0700 commit 560718862f0bd994b62361652d6fd558c4182e2a Author: Behdad Esfahbod -Date: Wed Apr 1 11:04:33 2015 -0700 +Date: Wed Apr 1 11:04:33 2015 -0700 Move WinCE define to better place @@ -4315,7 +5336,7 @@ Date: Wed Apr 1 11:04:33 2015 -0700 commit 363ceec3fb0c9566db5a59da31e508f69dea1e92 Author: Ebrahim Byagowi -Date: Mon Mar 30 03:27:14 2015 +0430 +Date: Mon Mar 30 03:27:14 2015 +0430 Make hb_test_tools.py compatible with python 3 @@ -4331,7 +5352,7 @@ Date: Mon Mar 30 03:27:14 2015 +0430 commit aee685086c8fde6f6c4590e483a177c19f222540 Author: Behdad Esfahbod -Date: Thu Mar 26 14:13:53 2015 -0400 +Date: Thu Mar 26 14:13:53 2015 -0400 Fix VC++ /analyze warnings @@ -4344,7 +5365,7 @@ Date: Thu Mar 26 14:13:53 2015 -0400 commit 8886ab430ca68539cb318e175647e9f6973718b0 Merge: e3671b8 a394bb6 Author: Behdad Esfahbod -Date: Sun Mar 22 16:18:57 2015 -0400 +Date: Sun Mar 22 16:18:57 2015 -0400 Merge pull request #90 from khaledhosny/introspection-fixes @@ -4352,7 +5373,7 @@ Date: Sun Mar 22 16:18:57 2015 -0400 commit a394bb66707184c995fe2d08c80e98220e6ec0b0 Author: Khaled Hosny -Date: Sun Mar 22 20:29:10 2015 +0200 +Date: Sun Mar 22 20:29:10 2015 +0200 [bindings] Fix *_from_string functions @@ -4366,17 +5387,17 @@ Date: Sun Mar 22 20:29:10 2015 +0200 commit e3671b8f8bb339e8a563a9da9cd5069073200fec Author: Behdad Esfahbod -Date: Fri Mar 20 18:03:02 2015 -0400 +Date: Fri Mar 20 18:03:02 2015 -0400 0.9.40 - NEWS | 8 ++++++++ + NEWS | 8 ++++++++ configure.ac | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) commit 9e401f6890f2bea1d11914bca436c2230f8d0f1b Author: Behdad Esfahbod -Date: Fri Mar 20 16:08:38 2015 -0400 +Date: Fri Mar 20 16:08:38 2015 -0400 Fix reverse_range() for empty range @@ -4389,7 +5410,7 @@ Date: Fri Mar 20 16:08:38 2015 -0400 commit 7481bd49d56d4e814ab1f85fc2df8bf934d520f4 Author: Behdad Esfahbod -Date: Wed Mar 4 15:47:25 2015 -0800 +Date: Wed Mar 4 15:47:25 2015 -0800 Fix previous commit @@ -4400,7 +5421,7 @@ Date: Wed Mar 4 15:47:25 2015 -0800 commit 6763e21afb77b250ad4416ff921d46c63ea12443 Author: Behdad Esfahbod -Date: Wed Mar 4 15:43:05 2015 -0800 +Date: Wed Mar 4 15:43:05 2015 -0800 Accept glibtoolize as libtoolize @@ -4413,17 +5434,17 @@ Date: Wed Mar 4 15:43:05 2015 -0800 commit 02a04e6afb1a76894f3723a467716607970d95d3 Author: Behdad Esfahbod -Date: Wed Mar 4 12:32:03 2015 -0800 +Date: Wed Mar 4 12:32:03 2015 -0800 0.9.39 - NEWS | 10 ++++++++++ + NEWS | 10 ++++++++++ configure.ac | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) commit 98e3ea8e34c798ce003e946c9a150bb41be9d09b Author: Behdad Esfahbod -Date: Wed Mar 4 12:03:39 2015 -0800 +Date: Wed Mar 4 12:03:39 2015 -0800 Fix hb-uniscribe build @@ -4432,7 +5453,7 @@ Date: Wed Mar 4 12:03:39 2015 -0800 commit 8ac345e5c0ed0aad6547592ea0839aabfb4ba980 Author: Behdad Esfahbod -Date: Mon Mar 2 16:06:55 2015 -0800 +Date: Mon Mar 2 16:06:55 2015 -0800 Fix reverse_range() to only reverse alt array if positions are used @@ -4445,7 +5466,7 @@ Date: Mon Mar 2 16:06:55 2015 -0800 commit 1e03d7ac83f3e17aafed1e37390d9ff8394e36da Author: Behdad Esfahbod -Date: Thu Feb 26 13:58:32 2015 -0800 +Date: Thu Feb 26 13:58:32 2015 -0800 Better error message if libtool is not installed @@ -4456,7 +5477,7 @@ Date: Thu Feb 26 13:58:32 2015 -0800 commit 6c918e2997fb82e89485f2b50bee2bf4fcd70592 Author: Behdad Esfahbod -Date: Thu Feb 26 13:55:34 2015 -0800 +Date: Thu Feb 26 13:55:34 2015 -0800 Clean up gtk-doc.make @@ -4465,7 +5486,7 @@ Date: Thu Feb 26 13:55:34 2015 -0800 commit 5ec5875acb12cf07447c9ebfb03212601368dfc4 Author: Behdad Esfahbod -Date: Thu Feb 26 13:53:05 2015 -0800 +Date: Thu Feb 26 13:53:05 2015 -0800 Install git.mk in docs/ @@ -4474,7 +5495,7 @@ Date: Thu Feb 26 13:53:05 2015 -0800 commit d146678d103425b3da7ef393bc6d66f6ba4c5593 Author: Behdad Esfahbod -Date: Thu Feb 26 13:52:50 2015 -0800 +Date: Thu Feb 26 13:52:50 2015 -0800 Update git.mk from upstream @@ -4483,7 +5504,7 @@ Date: Thu Feb 26 13:52:50 2015 -0800 commit 5f541f8f7be82f29b77b481827deb212e12d53e4 Author: Behdad Esfahbod -Date: Sat Feb 21 16:51:17 2015 +0300 +Date: Sat Feb 21 16:51:17 2015 +0300 Minor refactoring @@ -4492,7 +5513,7 @@ Date: Sat Feb 21 16:51:17 2015 +0300 commit ef79bdf73bbfde1bfaa222834809d105ab7755b3 Author: Behdad Esfahbod -Date: Sat Feb 21 16:49:15 2015 +0300 +Date: Sat Feb 21 16:49:15 2015 +0300 Minor @@ -4501,7 +5522,7 @@ Date: Sat Feb 21 16:49:15 2015 +0300 commit 68e04afbb1e1073c47474f7a4d6d2cacf7057f6f Author: Behdad Esfahbod -Date: Sat Feb 21 16:30:28 2015 +0300 +Date: Sat Feb 21 16:30:28 2015 +0300 Typo @@ -4510,7 +5531,7 @@ Date: Sat Feb 21 16:30:28 2015 +0300 commit 55553699b38d6481fbfacd0a32fc266e55553b34 Author: Behdad Esfahbod -Date: Sat Feb 21 16:29:08 2015 +0300 +Date: Sat Feb 21 16:29:08 2015 +0300 Minor @@ -4519,7 +5540,7 @@ Date: Sat Feb 21 16:29:08 2015 +0300 commit 5175300fbaf4ff19b7d38c14c86331bb614b0390 Author: Behdad Esfahbod -Date: Sat Feb 21 12:50:01 2015 +0300 +Date: Sat Feb 21 12:50:01 2015 +0300 [layout] Fix comparison of GlyphID and hb_codepoint_t @@ -4534,7 +5555,7 @@ Date: Sat Feb 21 12:50:01 2015 +0300 commit 7cce809cb11e0ce65dbdab899779ece3dc337763 Author: Behdad Esfahbod -Date: Sat Feb 21 12:41:08 2015 +0300 +Date: Sat Feb 21 12:41:08 2015 +0300 Remove unused (and wrong as of a few commits ago) cmp() function @@ -4543,7 +5564,7 @@ Date: Sat Feb 21 12:41:08 2015 +0300 commit 8e3d4bae033bdec649676da26cfc3eb7610832a8 Author: Behdad Esfahbod -Date: Sat Feb 21 12:31:59 2015 +0300 +Date: Sat Feb 21 12:31:59 2015 +0300 Minor @@ -4552,7 +5573,7 @@ Date: Sat Feb 21 12:31:59 2015 +0300 commit f47cf1f12dd1fa3cd3aa84502139caca9d469af8 Author: Behdad Esfahbod -Date: Sat Feb 21 11:45:22 2015 +0300 +Date: Sat Feb 21 11:45:22 2015 +0300 Minor @@ -4561,7 +5582,7 @@ Date: Sat Feb 21 11:45:22 2015 +0300 commit 640b66c6348653bfd7cf88ea9caa2133c0eb949f Author: Behdad Esfahbod -Date: Thu Feb 19 17:30:05 2015 +0300 +Date: Thu Feb 19 17:30:05 2015 +0300 [layout] If lookup has only one subtable, move the forward loop down to subtable @@ -4574,7 +5595,7 @@ Date: Thu Feb 19 17:30:05 2015 +0300 commit e2f50f2a7ebf9882ea89dc3f0c740e7fce964e37 Author: Behdad Esfahbod -Date: Thu Feb 19 17:15:05 2015 +0300 +Date: Thu Feb 19 17:15:05 2015 +0300 [layout] Add apply_forward / apply_backward @@ -4584,7 +5605,7 @@ Date: Thu Feb 19 17:15:05 2015 +0300 commit 1d4a328472f094c0d75a062f6e176c6b1875cfdc Author: Behdad Esfahbod -Date: Thu Feb 19 11:33:30 2015 +0300 +Date: Thu Feb 19 11:33:30 2015 +0300 [layout] Remove unneeded return value from apply() @@ -4593,7 +5614,7 @@ Date: Thu Feb 19 11:33:30 2015 +0300 commit bbdd6fd21cc2e079defff7cb17c3eb8eff3f9e09 Author: Behdad Esfahbod -Date: Thu Feb 19 17:03:02 2015 +0300 +Date: Thu Feb 19 17:03:02 2015 +0300 Minor simpilfy BEInt @@ -4602,7 +5623,7 @@ Date: Thu Feb 19 17:03:02 2015 +0300 commit 88a399acdc0fcb060803da0e7db56de2866981e3 Author: Behdad Esfahbod -Date: Thu Feb 19 16:57:12 2015 +0300 +Date: Thu Feb 19 16:57:12 2015 +0300 Optimize IntType comparison to avoid branches for 16bit numbers @@ -4611,7 +5632,7 @@ Date: Thu Feb 19 16:57:12 2015 +0300 commit 37de2d533126245774417234e3536fcfb24f3a6b Author: Behdad Esfahbod -Date: Thu Feb 19 16:55:51 2015 +0300 +Date: Thu Feb 19 16:55:51 2015 +0300 Minor simplify IntType @@ -4620,18 +5641,18 @@ Date: Thu Feb 19 16:55:51 2015 +0300 commit bd047d3b7f04d551c0a26bc0ce9b9d61481e34e1 Author: Behdad Esfahbod -Date: Thu Feb 19 10:47:18 2015 +0300 +Date: Thu Feb 19 10:47:18 2015 +0300 [layout] Minor src/hb-ot-layout-gpos-table.hh | 6 ++++++ src/hb-ot-layout-gsub-table.hh | 6 ++++++ - src/hb-ot-layout.cc | 4 ++-- + src/hb-ot-layout.cc | 4 ++-- 3 files changed, 14 insertions(+), 2 deletions(-) commit b9d3f60520c022dc952e65a66eb138d1f7cae2e1 Author: Behdad Esfahbod -Date: Thu Feb 19 10:42:41 2015 +0300 +Date: Thu Feb 19 10:42:41 2015 +0300 [layout] Minor @@ -4640,7 +5661,7 @@ Date: Thu Feb 19 10:42:41 2015 +0300 commit 1a2322134a5d7bba990da28baf893b35879a5a7a Author: Behdad Esfahbod -Date: Thu Feb 19 10:40:23 2015 +0300 +Date: Thu Feb 19 10:40:23 2015 +0300 [layout] Don't check glyph props against lookup flags when recursing @@ -4653,14 +5674,14 @@ Date: Thu Feb 19 10:40:23 2015 +0300 commit 095a1257cc3cc56b044b4cd842a92f0d0f933a50 Author: Behdad Esfahbod -Date: Thu Feb 19 10:29:41 2015 +0300 +Date: Thu Feb 19 10:29:41 2015 +0300 [layout] Port sanitize() to use dispatch() Needed some rework of Extension table. Hopefully I got it right, and the new template usage doesn't break any compilers... - src/hb-open-type-private.hh | 5 ++- + src/hb-open-type-private.hh | 5 ++- src/hb-ot-layout-gpos-table.hh | 82 +---------------------------------- src/hb-ot-layout-gsub-table.hh | 72 ++----------------------------- @@ -4670,7 +5691,7 @@ Date: Thu Feb 19 10:29:41 2015 +0300 commit 758fb20630f84c3d373cda37974b88f16c02995e Author: Behdad Esfahbod -Date: Wed Feb 18 13:45:03 2015 +0300 +Date: Wed Feb 18 13:45:03 2015 +0300 Remove unused macro @@ -4679,7 +5700,7 @@ Date: Wed Feb 18 13:45:03 2015 +0300 commit 40c58923cbf689c465f9b65334c455a9b7f71ab0 Author: Behdad Esfahbod -Date: Wed Feb 18 13:18:46 2015 +0300 +Date: Wed Feb 18 13:18:46 2015 +0300 [layout] Refactor Lookup::dispatch() @@ -4691,7 +5712,7 @@ Date: Wed Feb 18 13:18:46 2015 +0300 commit 70366f5d19df2e654f0933474fecf1aa16e27812 Author: Behdad Esfahbod -Date: Wed Feb 18 13:09:54 2015 +0300 +Date: Wed Feb 18 13:09:54 2015 +0300 [layout] Refactor get_subtable() @@ -4702,7 +5723,7 @@ Date: Wed Feb 18 13:09:54 2015 +0300 commit f72f326aea6d1e93f63040730f7aecd401676c1c Author: Behdad Esfahbod -Date: Tue Feb 17 19:18:07 2015 +0300 +Date: Tue Feb 17 19:18:07 2015 +0300 Minor @@ -4711,7 +5732,7 @@ Date: Tue Feb 17 19:18:07 2015 +0300 commit 8e36ccfd4f076888076ca176c055c18104af03b6 Author: Behdad Esfahbod -Date: Tue Feb 17 19:15:34 2015 +0300 +Date: Tue Feb 17 19:15:34 2015 +0300 [layout] Use dispatch() for add_coverage() @@ -4722,7 +5743,7 @@ Date: Tue Feb 17 19:15:34 2015 +0300 commit 50b8dc79daffc7ef671dd5eedfea47f8d5e946f4 Author: Behdad Esfahbod -Date: Tue Feb 17 18:14:17 2015 +0300 +Date: Tue Feb 17 18:14:17 2015 +0300 [layout] Add may_dispatch() @@ -4735,7 +5756,7 @@ Date: Tue Feb 17 18:14:17 2015 +0300 commit de2118ed7a998a1df9b28fd1be96b4af89ed82c3 Author: Behdad Esfahbod -Date: Tue Feb 17 17:27:44 2015 +0300 +Date: Tue Feb 17 17:27:44 2015 +0300 Make sanitize() a const method @@ -4744,12 +5765,12 @@ Date: Tue Feb 17 17:27:44 2015 +0300 place, after making sure it's safe to do so. So, do a const_cast<> in that one place... - src/hb-open-file-private.hh | 15 +++-- - src/hb-open-type-private.hh | 51 +++++++++++------ - src/hb-ot-cmap-table.hh | 35 ++++++++---- - src/hb-ot-head-table.hh | 6 +- - src/hb-ot-hhea-table.hh | 3 +- - src/hb-ot-hmtx-table.hh | 3 +- + src/hb-open-file-private.hh | 15 +++-- + src/hb-open-type-private.hh | 51 +++++++++++------ + src/hb-ot-cmap-table.hh | 35 ++++++++---- + src/hb-ot-head-table.hh | 6 +- + src/hb-ot-hhea-table.hh | 3 +- + src/hb-ot-hmtx-table.hh | 3 +- src/hb-ot-layout-common-private.hh | 58 ++++++++++++------- src/hb-ot-layout-gdef-table.hh | 30 ++++++---- src/hb-ot-layout-gpos-table.hh | 108 @@ -4757,13 +5778,13 @@ Date: Tue Feb 17 17:27:44 2015 +0300 src/hb-ot-layout-gsub-table.hh | 58 ++++++++++++------- src/hb-ot-layout-gsubgpos-private.hh | 65 +++++++++++++-------- src/hb-ot-layout-jstf-table.hh | 12 ++-- - src/hb-ot-maxp-table.hh | 6 +- - src/hb-ot-name-table.hh | 6 +- + src/hb-ot-maxp-table.hh | 6 +- + src/hb-ot-name-table.hh | 6 +- 14 files changed, 296 insertions(+), 160 deletions(-) commit 6759ed95a3bec2874826376b68ebff19ba277ef2 Author: Behdad Esfahbod -Date: Tue Feb 17 16:05:30 2015 +0300 +Date: Tue Feb 17 16:05:30 2015 +0300 Minor @@ -4773,7 +5794,7 @@ Date: Tue Feb 17 16:05:30 2015 +0300 commit 6b599dac1f814a3c900300241d4c492a8f8b66d2 Author: Behdad Esfahbod -Date: Tue Feb 17 16:04:07 2015 +0300 +Date: Tue Feb 17 16:04:07 2015 +0300 Remove unnecessary check in sanitize @@ -4783,7 +5804,7 @@ Date: Tue Feb 17 16:04:07 2015 +0300 commit 365576d246949f9d587e90cf0539dc0381e4d0a3 Author: Behdad Esfahbod -Date: Thu Jan 29 13:59:42 2015 +0100 +Date: Thu Jan 29 13:59:42 2015 +0100 [layout] Allocate iters in the context @@ -4793,23 +5814,23 @@ Date: Thu Jan 29 13:59:42 2015 +0100 src/hb-ot-layout-gpos-table.hh | 18 ++++++------------ src/hb-ot-layout-gsubgpos-private.hh | 21 +++++++++++++-------- - src/hb-ot-shape-fallback.cc | 2 +- + src/hb-ot-shape-fallback.cc | 2 +- 3 files changed, 20 insertions(+), 21 deletions(-) commit 514564f5444b8ad2f210b1e3d7d66378f7275317 Author: Behdad Esfahbod -Date: Thu Jan 29 13:48:48 2015 +0100 +Date: Thu Jan 29 13:48:48 2015 +0100 [layout] Move skippy_iter setup from constructor into init() src/hb-ot-layout-gpos-table.hh | 18 ++++++++++++------ src/hb-ot-layout-gsubgpos-private.hh | 28 +++++++++++++++------------- - src/hb-ot-shape-fallback.cc | 3 ++- + src/hb-ot-shape-fallback.cc | 3 ++- 3 files changed, 29 insertions(+), 20 deletions(-) commit b051be542a8945ec14b0192bbc285f3e1a78c8f1 Author: Behdad Esfahbod -Date: Thu Jan 29 13:40:39 2015 +0100 +Date: Thu Jan 29 13:40:39 2015 +0100 [lookup] Add skippy_iter.reset() @@ -4817,12 +5838,12 @@ Date: Thu Jan 29 13:40:39 2015 +0100 src/hb-ot-layout-gpos-table.hh | 18 ++++++++++++------ src/hb-ot-layout-gsubgpos-private.hh | 27 ++++++++++++++++++--------- - src/hb-ot-shape-fallback.cc | 3 ++- + src/hb-ot-shape-fallback.cc | 3 ++- 3 files changed, 32 insertions(+), 16 deletions(-) commit 2cecc38c7cf49b2cf697efa7e974ceee7055f2c5 Author: Behdad Esfahbod -Date: Thu Jan 29 13:32:05 2015 +0100 +Date: Thu Jan 29 13:32:05 2015 +0100 [layout] Shuffle code around @@ -4832,19 +5853,19 @@ Date: Thu Jan 29 13:32:05 2015 +0100 commit 696266981df5ef6c62ad0115133dad1d6c1d9acc Author: Behdad Esfahbod -Date: Thu Jan 29 13:08:41 2015 +0100 +Date: Thu Jan 29 13:08:41 2015 +0100 [layout] Merge forward and backward iterators src/hb-ot-layout-gpos-table.hh | 12 +++--- src/hb-ot-layout-gsubgpos-private.hh | 71 ++++++++---------------------------- - src/hb-ot-shape-fallback.cc | 2 +- + src/hb-ot-shape-fallback.cc | 2 +- 3 files changed, 23 insertions(+), 62 deletions(-) commit 1f038eec3c0dd6331036f795614fe1ddcbf613b0 Author: Behdad Esfahbod -Date: Thu Jan 29 13:05:25 2015 +0100 +Date: Thu Jan 29 13:05:25 2015 +0100 [layout] Fix backward reject() @@ -4856,7 +5877,7 @@ Date: Thu Jan 29 13:05:25 2015 +0100 commit 37d13acd8d414a4b53fac0152addfadecf755cd4 Author: Behdad Esfahbod -Date: Thu Jan 29 11:38:01 2015 +0100 +Date: Thu Jan 29 11:38:01 2015 +0100 [layout] Remove some unnecessary checks in skippy @@ -4866,7 +5887,7 @@ Date: Thu Jan 29 11:38:01 2015 +0100 commit baa14e18148d3f5493f78b4fe9e0c835a01f50f7 Author: Behdad Esfahbod -Date: Thu Jan 29 11:08:43 2015 +0100 +Date: Thu Jan 29 11:08:43 2015 +0100 [lookup] Don't initialize skippy if coverage match fails @@ -4891,7 +5912,7 @@ Date: Thu Jan 29 11:08:43 2015 +0100 commit 7788993bc19bf122f1e143ab64cc1da2ed1865a3 Author: Behdad Esfahbod -Date: Wed Jan 28 23:01:12 2015 -0800 +Date: Wed Jan 28 23:01:12 2015 -0800 [layout] Use setter method to set c->lookup_props @@ -4901,7 +5922,7 @@ Date: Wed Jan 28 23:01:12 2015 -0800 commit f4ee48fd7b312550faf9b0be4cd1b2f2849dd08d Author: Behdad Esfahbod -Date: Wed Jan 28 22:53:54 2015 -0800 +Date: Wed Jan 28 22:53:54 2015 -0800 [layout] Remove unused wrapper method @@ -4910,7 +5931,7 @@ Date: Wed Jan 28 22:53:54 2015 -0800 commit 7b7129c7a997def599fb4d2ba05fda40d27aed20 Author: Behdad Esfahbod -Date: Wed Jan 28 21:46:07 2015 -0800 +Date: Wed Jan 28 21:46:07 2015 -0800 Add hb_frozen_set_t @@ -4925,18 +5946,18 @@ Date: Wed Jan 28 21:46:07 2015 -0800 commit 241eac9559465fa79f396570af4e87f455b7e9d5 Author: Behdad Esfahbod -Date: Wed Jan 28 20:55:42 2015 -0800 +Date: Wed Jan 28 20:55:42 2015 -0800 Hide internals of lookup accelerators src/hb-ot-layout-gsub-table.hh | 5 +++-- - src/hb-ot-layout-private.hh | 5 +++++ - src/hb-ot-layout.cc | 6 +++--- + src/hb-ot-layout-private.hh | 5 +++++ + src/hb-ot-layout.cc | 6 +++--- 3 files changed, 11 insertions(+), 5 deletions(-) commit e2d4e8480d85436a3acad8145acac345ed593f5a Author: Behdad Esfahbod -Date: Wed Jan 28 20:29:48 2015 -0800 +Date: Wed Jan 28 20:29:48 2015 -0800 [util] Add convenience "make lib" target @@ -4946,7 +5967,7 @@ Date: Wed Jan 28 20:29:48 2015 -0800 commit faaae64bf28abdcdd15185374bc09a3809794118 Merge: 7888a6b 9768e65 Author: Behdad Esfahbod -Date: Wed Feb 25 15:34:34 2015 -0800 +Date: Wed Feb 25 15:34:34 2015 -0800 Merge pull request #85 from KonstantinRitt/define_inline @@ -4954,7 +5975,7 @@ Date: Wed Feb 25 15:34:34 2015 -0800 commit 9ee176ee978e6668c4faf00028811ce70979122e Author: Collin Fair -Date: Sat Feb 14 09:59:44 2015 -0500 +Date: Sat Feb 14 09:59:44 2015 -0500 Stop hb-shape docs leaking into hb-view @@ -4963,7 +5984,7 @@ Date: Sat Feb 14 09:59:44 2015 -0500 commit 952b8dbdf61da9b4814e09ad3c1b9b76483bef5c Author: Collin Fair -Date: Sat Feb 14 09:44:00 2015 -0500 +Date: Sat Feb 14 09:44:00 2015 -0500 'All' of the above, not 'each' @@ -4972,7 +5993,7 @@ Date: Sat Feb 14 09:44:00 2015 -0500 commit 9e867b64467c46eea5cc9b1d5a9404a1221bbbfc Author: Collin Fair -Date: Sat Feb 14 09:32:04 2015 -0500 +Date: Sat Feb 14 09:32:04 2015 -0500 Remove reference to --help-output-content in --help-output (as --help-output-format's options aren't available in hb-view) @@ -4982,7 +6003,7 @@ Date: Sat Feb 14 09:32:04 2015 -0500 commit 1d55ffeb66381889f11ebb9039ca4ec2ca5efbab Author: Collin Fair -Date: Sat Feb 14 09:29:35 2015 -0500 +Date: Sat Feb 14 09:29:35 2015 -0500 Add serialization syntax documentation. Clarify naming and wording in --help-output/--help-format @@ -4992,7 +6013,7 @@ Date: Sat Feb 14 09:29:35 2015 -0500 commit 9768e651be0561f07d6f38c3ed8bc5ee04882990 Author: Konstantin Ritt -Date: Sat Feb 14 00:58:51 2015 +0400 +Date: Sat Feb 14 00:58:51 2015 +0400 Fix build with MSVC on CE @@ -5022,7 +6043,7 @@ Date: Sat Feb 14 00:58:51 2015 +0400 commit 7888a6b07a9922cedd3e0d235959058e0011357b Author: Behdad Esfahbod -Date: Wed Jan 28 12:40:40 2015 -0800 +Date: Wed Jan 28 12:40:40 2015 -0800 [ft] Handle negative scales with vertical writing @@ -5031,7 +6052,7 @@ Date: Wed Jan 28 12:40:40 2015 -0800 commit 982d94eaa2a377616f22f39427e5ed9f1ce43263 Author: Behdad Esfahbod -Date: Wed Jan 28 10:51:33 2015 -0800 +Date: Wed Jan 28 10:51:33 2015 -0800 [coretext] Don't generate notdef glyph for default-ignorables @@ -5044,7 +6065,7 @@ Date: Wed Jan 28 10:51:33 2015 -0800 commit 6917a045fd8d16952cad75fda8b291b11e1d3564 Author: Behdad Esfahbod -Date: Wed Jan 28 10:43:32 2015 -0800 +Date: Wed Jan 28 10:43:32 2015 -0800 [coretext] Unbreak glyph positioning in presence of notdef runs diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS index 3e8b1002570..698256d4c52 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS +++ b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS @@ -1,3 +1,32 @@ +Overview of changes leading to 1.1.3 +Monday, January 11, 2016 +==================================== + +- Ported Indic shaper to Unicode 8.0 data. +- Universal Shaping Engine fixes. +- Speed up CoreText shaper when font fallback happens in CoreText. +- Documentation improvements, thanks to Khaled Hosny. +- Very rough directwrite shaper for testing, thanks to Ebrahim Byagowi. +- Misc bug fixes. +- New API: + + * Font extents: + hb_font_extents_t + hb_font_get_font_extents_func_t + hb_font_get_font_h_extents_func_t + hb_font_get_font_v_extents_func_t + hb_font_funcs_set_font_h_extents_func + hb_font_funcs_set_font_v_extents_func + hb_font_get_h_extents + hb_font_get_v_extents + hb_font_get_extents_for_direction + + * Buffer message (aka debug): + hb_buffer_message_func_t + hb_buffer_set_message_func() + Actual message protocol to be fleshed out later. + + Overview of changes leading to 1.1.2 Wednesday, November 26, 2015 ==================================== diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac index 044a1d65968..764211553dc 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac +++ b/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ([2.64]) AC_INIT([HarfBuzz], - [1.1.2], + [1.1.3], [http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz], [harfbuzz], [http://harfbuzz.org/]) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am index ec55656263b..3d013ebaaf2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am @@ -48,6 +48,7 @@ HBSOURCES = \ hb-ot-hmtx-table.hh \ hb-ot-maxp-table.hh \ hb-ot-name-table.hh \ + hb-ot-os2-table.hh \ hb-ot-tag.cc \ hb-private.hh \ hb-set-private.hh \ @@ -392,7 +393,14 @@ dist_check_SCRIPTS = \ check-symbols.sh \ $(NULL) -TESTS = $(dist_check_SCRIPTS) +check_PROGRAMS = \ + test-ot-tag \ + $(NULL) +test_ot_tag_SOURCES = hb-ot-tag.cc +test_ot_tag_CPPFLAGS = $(HBCFLAGS) -DMAIN +test_ot_tag_LDADD = libharfbuzz.la $(HBLIBS) + +TESTS = $(dist_check_SCRIPTS) $(check_PROGRAMS) TESTS_ENVIRONMENT = \ srcdir="$(srcdir)" \ MAKE="$(MAKE) $(AM_MAKEFLAGS)" \ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/check-header-guards.sh b/Build/source/libs/harfbuzz/harfbuzz-src/src/check-header-guards.sh index 9a3302c7f87..09c5ea8b2b5 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/check-header-guards.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/check-header-guards.sh @@ -9,13 +9,12 @@ stat=0 test "x$HBHEADERS" = x && HBHEADERS=`cd "$srcdir"; find . -maxdepth 1 -name 'hb*.h'` test "x$HBSOURCES" = x && HBSOURCES=`cd "$srcdir"; find . -maxdepth 1 -name 'hb-*.cc' -or -name 'hb-*.hh'` - for x in $HBHEADERS $HBSOURCES; do test -f "$srcdir/$x" && x="$srcdir/$x" - echo "$x" | grep '[^h]$' -q && continue; + echo "$x" | grep -q '[^h]$' && continue; xx=`echo "$x" | sed 's@.*/@@'` tag=`echo "$xx" | tr 'a-z.-' 'A-Z_'` - lines=`grep "\<$tag\>" "$x" | wc -l | sed 's/[ ]*//g'` + lines=`grep -w "$tag" "$x" | wc -l | sed 's/[ ]*//g'` if test "x$lines" != x3; then echo "Ouch, header file $x does not have correct preprocessor guards" stat=1 diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py index f5716bda789..c055163f353 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py @@ -91,6 +91,7 @@ short = [{ "Visarga": 'Vs', "Vowel": 'Vo', "Vowel_Dependent": 'M', + "Consonant_Prefixed": 'CPrf', "Other": 'x', },{ "Not_Applicable": 'x', diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic-private.hh index 8179571ad2d..100ba539e3a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic-private.hh @@ -119,6 +119,31 @@ typedef unsigned int hb_atomic_int_impl_t; #define hb_atomic_ptr_impl_cmpexch(P,O,N) ( ({__machine_rw_barrier ();}), atomic_cas_ptr ((void **) (P), (void *) (O), (void *) (N)) == (void *) (O) ? true : false) +#elif !defined(HB_NO_MT) && defined(_AIX) && defined(__IBMCPP__) + +#include + + +static inline int hb_fetch_and_add(volatile int* AI, unsigned int V) { + __lwsync(); + int result = __fetch_and_add(AI, V); + __isync(); + return result; +} +static inline int hb_compare_and_swaplp(volatile long* P, long O, long N) { + __sync(); + int result = __compare_and_swaplp (P, &O, N); + __sync(); + return result; +} + +typedef int hb_atomic_int_impl_t; +#define HB_ATOMIC_INT_IMPL_INIT(V) (V) +#define hb_atomic_int_impl_add(AI, V) hb_fetch_and_add (&(AI), (V)) + +#define hb_atomic_ptr_impl_get(P) (__sync(), (void *) *(P)) +#define hb_atomic_ptr_impl_cmpexch(P,O,N) hb_compare_and_swaplp ((long*)(P), (long)(O), (long)(N)) + #elif !defined(HB_NO_MT) #define HB_ATOMIC_INT_NIL 1 /* Warn that fallback implementation is in use. */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-private.hh index 111078c240c..4983f849f2d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-private.hh @@ -124,6 +124,11 @@ struct hb_buffer_t { hb_codepoint_t context[2][CONTEXT_LENGTH]; unsigned int context_len[2]; + /* Debugging */ + hb_buffer_message_func_t message_func; + void *message_data; + hb_destroy_func_t message_destroy; + /* Methods */ @@ -233,6 +238,19 @@ struct hb_buffer_t { inline void clear_context (unsigned int side) { context_len[side] = 0; } HB_INTERNAL void sort (unsigned int start, unsigned int end, int(*compar)(const hb_glyph_info_t *, const hb_glyph_info_t *)); + + inline bool messaging (void) { return unlikely (message_func); } + inline bool message (hb_font_t *font, const char *fmt, ...) HB_PRINTF_FUNC(3, 4) + { + if (!messaging ()) + return true; + va_list ap; + va_start (ap, fmt); + bool ret = message_impl (font, fmt, ap); + va_end (ap); + return ret; + } + HB_INTERNAL bool message_impl (hb_font_t *font, const char *fmt, va_list ap) HB_PRINTF_FUNC(3, 0); }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-serialize.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-serialize.cc index 7839cbc3f06..63a0f34669a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-serialize.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-serialize.cc @@ -36,11 +36,12 @@ static const char *serialize_formats[] = { /** * hb_buffer_serialize_list_formats: * - * + * Returns a list of supported buffer serialization formats. * * Return value: (transfer none): + * A string array of buffer serialization formats. Should not be freed. * - * Since: 0.9.2 + * Since: 0.9.7 **/ const char ** hb_buffer_serialize_list_formats (void) @@ -50,14 +51,17 @@ hb_buffer_serialize_list_formats (void) /** * hb_buffer_serialize_format_from_string: - * @str: - * @len: + * @str: (array length=len) (element-type uint8_t): a string to parse + * @len: length of @str, or -1 if string is %NULL terminated * - * + * Parses a string into an #hb_buffer_serialize_format_t. Does not check if + * @str is a valid buffer serialization format, use + * hb_buffer_serialize_list_formats() to get the list of supported formats. * * Return value: + * The parsed #hb_buffer_serialize_format_t. * - * Since: 0.9.2 + * Since: 0.9.7 **/ hb_buffer_serialize_format_t hb_buffer_serialize_format_from_string (const char *str, int len) @@ -68,13 +72,15 @@ hb_buffer_serialize_format_from_string (const char *str, int len) /** * hb_buffer_serialize_format_to_string: - * @format: + * @format: an #hb_buffer_serialize_format_t to convert. * - * + * Converts @format to the string corresponding it, or %NULL if it is not a valid + * #hb_buffer_serialize_format_t. * - * Return value: + * Return value: (transfer none): + * A %NULL terminated string corresponding to @format. Should not be freed. * - * Since: 0.9.2 + * Since: 0.9.7 **/ const char * hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format) @@ -242,24 +248,51 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer, return end - start; } -/* Returns number of items, starting at start, that were serialized. */ /** * hb_buffer_serialize_glyphs: - * @buffer: a buffer. - * @start: - * @end: - * @buf: (array length=buf_size): - * @buf_size: - * @buf_consumed: (out): - * @font: - * @format: - * @flags: + * @buffer: an #hb_buffer_t buffer. + * @start: the first item in @buffer to serialize. + * @end: the last item in @buffer to serialize. + * @buf: (out) (array length=buf_size) (element-type uint8_t): output string to + * write serialized buffer into. + * @buf_size: the size of @buf. + * @buf_consumed: (out) (allow-none): if not %NULL, will be set to the number of byes written into @buf. + * @font: (allow-none): the #hb_font_t used to shape this buffer, needed to + * read glyph names and extents. If %NULL, and empty font will be used. + * @format: the #hb_buffer_serialize_format_t to use for formatting the output. + * @flags: the #hb_buffer_serialize_flags_t that control what glyph properties + * to serialize. * - * + * Serializes @buffer into a textual representation of its glyph content, + * useful for showing the contents of the buffer, for example during debugging. + * There are currently two supported serialization formats: + * + * ## text + * A human-readable, plain text format. + * The serialized glyphs will look something like: + * + * ``` + * [uni0651=0@518,0+0|uni0628=0+1897] + * ``` + * - The serialized glyphs are delimited with `[` and `]`. + * - Glyphs are separated with `|` + * - Each glyph starts with glyph name, or glyph index if + * #HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES flag is set. Then, + * - If #HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set, `=` then #hb_glyph_info_t.cluster. + * - If #HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS is not set, the #hb_glyph_position_t in the format: + * - If both #hb_glyph_position_t.x_offset and #hb_glyph_position_t.y_offset are not 0, `@x_offset,y_offset`. Then, + * - `+x_advance`, then `,y_advance` if #hb_glyph_position_t.y_advance is not 0. Then, + * - If #HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS is set, the + * #hb_glyph_extents_t in the format + * `<x_bearing,y_bearing,width,height>` + * + * ## json + * TODO. * * Return value: + * The number of serialized items. * - * Since: 0.9.2 + * Since: 0.9.7 **/ unsigned int hb_buffer_serialize_glyphs (hb_buffer_t *buffer, @@ -267,8 +300,8 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer, unsigned int end, char *buf, unsigned int buf_size, - unsigned int *buf_consumed, /* May be NULL */ - hb_font_t *font, /* May be NULL */ + unsigned int *buf_consumed, + hb_font_t *font, hb_buffer_serialize_format_t format, hb_buffer_serialize_flags_t flags) { @@ -282,6 +315,9 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer, assert ((!buffer->len && buffer->content_type == HB_BUFFER_CONTENT_TYPE_INVALID) || buffer->content_type == HB_BUFFER_CONTENT_TYPE_GLYPHS); + if (!buffer->have_positions) + flags |= HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS; + if (unlikely (start == end)) return 0; @@ -355,7 +391,7 @@ parse_int (const char *pp, const char *end, int32_t *pv) /** * hb_buffer_deserialize_glyphs: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t buffer. * @buf: (array length=buf_len): * @buf_len: * @end_ptr: (out): @@ -366,7 +402,7 @@ parse_int (const char *pp, const char *end, int32_t *pv) * * Return value: * - * Since: 0.9.2 + * Since: 0.9.7 **/ hb_bool_t hb_buffer_deserialize_glyphs (hb_buffer_t *buffer, diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc index c271086cde4..c731ed189fd 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc @@ -35,9 +35,25 @@ #define HB_DEBUG_BUFFER (HB_DEBUG+0) #endif +/** + * SECTION: hb-buffer + * @title: Buffers + * @short_description: Input and output buffers + * @include: hb.h + * + * Buffers serve dual role in HarfBuzz; they hold the input characters that are + * passed hb_shape(), and after shaping they hold the output glyphs. + **/ /** * hb_segment_properties_equal: + * @a: first #hb_segment_properties_t to compare. + * @b: second #hb_segment_properties_t to compare. + * + * Checks the equality of two #hb_segment_properties_t's. + * + * Return value: (transfer full): + * %true if all properties of @a equal those of @b, false otherwise. * * Since: 0.9.7 **/ @@ -55,6 +71,12 @@ hb_segment_properties_equal (const hb_segment_properties_t *a, /** * hb_segment_properties_hash: + * @p: #hb_segment_properties_t to hash. + * + * Creates a hash representing @p. + * + * Return value: + * A hash of @p. * * Since: 0.9.7 **/ @@ -710,9 +732,14 @@ void hb_buffer_t::deallocate_var_all (void) /** * hb_buffer_create: (Xconstructor) * - * + * Creates a new #hb_buffer_t with all properties to defaults. * - * Return value: (transfer full) + * Return value: (transfer full): + * A newly allocated #hb_buffer_t with a reference count of 1. The initial + * reference count should be released with hb_buffer_destroy() when you are done + * using the #hb_buffer_t. This function never returns %NULL. If memory cannot + * be allocated, a special #hb_buffer_t object will be returned on which + * hb_buffer_allocation_successful() returns %false. * * Since: 0.9.2 **/ @@ -767,11 +794,13 @@ hb_buffer_get_empty (void) /** * hb_buffer_reference: (skip) - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * Increases the reference count on @buffer by one. This prevents @buffer from + * being destroyed until a matching call to hb_buffer_destroy() is made. * * Return value: (transfer full): + * The referenced #hb_buffer_t. * * Since: 0.9.2 **/ @@ -783,9 +812,11 @@ hb_buffer_reference (hb_buffer_t *buffer) /** * hb_buffer_destroy: (skip) - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * Deallocate the @buffer. + * Decreases the reference count on @buffer by one. If the result is zero, then + * @buffer and all associated resources are freed. See hb_buffer_reference(). * * Since: 0.9.2 **/ @@ -798,13 +829,15 @@ hb_buffer_destroy (hb_buffer_t *buffer) free (buffer->info); free (buffer->pos); + if (buffer->message_destroy) + buffer->message_destroy (buffer->message_data); free (buffer); } /** * hb_buffer_set_user_data: (skip) - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * @key: * @data: * @destroy: @@ -828,7 +861,7 @@ hb_buffer_set_user_data (hb_buffer_t *buffer, /** * hb_buffer_get_user_data: (skip) - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * @key: * * @@ -847,10 +880,11 @@ hb_buffer_get_user_data (hb_buffer_t *buffer, /** * hb_buffer_set_content_type: - * @buffer: a buffer. - * @content_type: + * @buffer: an #hb_buffer_t. + * @content_type: the type of buffer contents to set * - * + * Sets the type of @buffer contents, buffers are either empty, contain + * characters (before shaping) or glyphs (the result of shaping). * * Since: 0.9.5 **/ @@ -863,11 +897,12 @@ hb_buffer_set_content_type (hb_buffer_t *buffer, /** * hb_buffer_get_content_type: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * see hb_buffer_set_content_type(). * - * Return value: + * Return value: + * The type of @buffer contents. * * Since: 0.9.5 **/ @@ -880,7 +915,7 @@ hb_buffer_get_content_type (hb_buffer_t *buffer) /** * hb_buffer_set_unicode_funcs: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * @unicode_funcs: * * @@ -905,7 +940,7 @@ hb_buffer_set_unicode_funcs (hb_buffer_t *buffer, /** * hb_buffer_get_unicode_funcs: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * * * @@ -921,10 +956,16 @@ hb_buffer_get_unicode_funcs (hb_buffer_t *buffer) /** * hb_buffer_set_direction: - * @buffer: a buffer. - * @direction: + * @buffer: an #hb_buffer_t. + * @direction: the #hb_direction_t of the @buffer * - * + * Set the text flow direction of the buffer. No shaping can happen without + * setting @buffer direction, and it controls the visual direction for the + * output glyphs; for RTL direction the glyphs will be reversed. Many layout + * features depend on the proper setting of the direction, for example, + * reversing RTL text before shaping, then shaping with LTR direction is not + * the same as keeping the text in logical order and shaping with RTL + * direction. * * Since: 0.9.2 **/ @@ -941,11 +982,12 @@ hb_buffer_set_direction (hb_buffer_t *buffer, /** * hb_buffer_get_direction: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * See hb_buffer_set_direction() * - * Return value: + * Return value: + * The direction of the @buffer. * * Since: 0.9.2 **/ @@ -957,10 +999,18 @@ hb_buffer_get_direction (hb_buffer_t *buffer) /** * hb_buffer_set_script: - * @buffer: a buffer. - * @script: + * @buffer: an #hb_buffer_t. + * @script: an #hb_script_t to set. * - * + * Sets the script of @buffer to @script. + * + * Script is crucial for choosing the proper shaping behaviour for scripts that + * require it (e.g. Arabic) and the which OpenType features defined in the font + * to be applied. + * + * You can pass one of the predefined #hb_script_t values, or use + * hb_script_from_string() or hb_script_from_iso15924_tag() to get the + * corresponding script from an ISO 15924 script tag. * * Since: 0.9.2 **/ @@ -976,11 +1026,12 @@ hb_buffer_set_script (hb_buffer_t *buffer, /** * hb_buffer_get_script: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * See hb_buffer_set_script(). * - * Return value: + * Return value: + * The #hb_script_t of the @buffer. * * Since: 0.9.2 **/ @@ -992,10 +1043,18 @@ hb_buffer_get_script (hb_buffer_t *buffer) /** * hb_buffer_set_language: - * @buffer: a buffer. - * @language: + * @buffer: an #hb_buffer_t. + * @language: an hb_language_t to set. * - * + * Sets the language of @buffer to @language. + * + * Languages are crucial for selecting which OpenType feature to apply to the + * buffer which can result in applying language-specific behaviour. Languages + * are orthogonal to the scripts, and though they are related, they are + * different concepts and should not be confused with each other. + * + * Use hb_language_from_string() to convert from ISO 639 language codes to + * #hb_language_t. * * Since: 0.9.2 **/ @@ -1011,11 +1070,12 @@ hb_buffer_set_language (hb_buffer_t *buffer, /** * hb_buffer_get_language: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * See hb_buffer_set_language(). * * Return value: (transfer none): + * The #hb_language_t of the buffer. Must not be freed by the caller. * * Since: 0.9.2 **/ @@ -1027,10 +1087,12 @@ hb_buffer_get_language (hb_buffer_t *buffer) /** * hb_buffer_set_segment_properties: - * @buffer: a buffer. - * @props: + * @buffer: an #hb_buffer_t. + * @props: an #hb_segment_properties_t to use. * - * + * Sets the segment properties of the buffer, a shortcut for calling + * hb_buffer_set_direction(), hb_buffer_set_script() and + * hb_buffer_set_language() individually. * * Since: 0.9.7 **/ @@ -1046,10 +1108,10 @@ hb_buffer_set_segment_properties (hb_buffer_t *buffer, /** * hb_buffer_get_segment_properties: - * @buffer: a buffer. - * @props: (out): + * @buffer: an #hb_buffer_t. + * @props: (out): the output #hb_segment_properties_t. * - * + * Sets @props to the #hb_segment_properties_t of @buffer. * * Since: 0.9.7 **/ @@ -1063,10 +1125,10 @@ hb_buffer_get_segment_properties (hb_buffer_t *buffer, /** * hb_buffer_set_flags: - * @buffer: a buffer. - * @flags: + * @buffer: an #hb_buffer_t. + * @flags: the buffer flags to set. * - * + * Sets @buffer flags to @flags. See #hb_buffer_flags_t. * * Since: 0.9.7 **/ @@ -1082,11 +1144,12 @@ hb_buffer_set_flags (hb_buffer_t *buffer, /** * hb_buffer_get_flags: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * See hb_buffer_set_flags(). * * Return value: + * The @buffer flags. * * Since: 0.9.7 **/ @@ -1098,7 +1161,7 @@ hb_buffer_get_flags (hb_buffer_t *buffer) /** * hb_buffer_set_cluster_level: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * @cluster_level: * * @@ -1117,7 +1180,7 @@ hb_buffer_set_cluster_level (hb_buffer_t *buffer, /** * hb_buffer_get_cluster_level: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * * * @@ -1134,10 +1197,13 @@ hb_buffer_get_cluster_level (hb_buffer_t *buffer) /** * hb_buffer_set_replacement_codepoint: - * @buffer: a buffer. - * @replacement: + * @buffer: an #hb_buffer_t. + * @replacement: the replacement #hb_codepoint_t * - * + * Sets the #hb_codepoint_t that replaces invalid entries for a given encoding + * when adding text to @buffer. + * + * Default is %HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT. * * Since: 0.9.31 **/ @@ -1153,11 +1219,12 @@ hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer, /** * hb_buffer_get_replacement_codepoint: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * See hb_buffer_set_replacement_codepoint(). * * Return value: + * The @buffer replacement #hb_codepoint_t. * * Since: 0.9.31 **/ @@ -1170,9 +1237,10 @@ hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer) /** * hb_buffer_reset: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * Resets the buffer to its initial status, as if it was just newly created + * with hb_buffer_create(). * * Since: 0.9.2 **/ @@ -1184,9 +1252,10 @@ hb_buffer_reset (hb_buffer_t *buffer) /** * hb_buffer_clear_contents: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * Similar to hb_buffer_reset(), but does not clear the Unicode functions and + * the replacement code point. * * Since: 0.9.11 **/ @@ -1198,12 +1267,13 @@ hb_buffer_clear_contents (hb_buffer_t *buffer) /** * hb_buffer_pre_allocate: - * @buffer: a buffer. - * @size: + * @buffer: an #hb_buffer_t. + * @size: number of items to pre allocate. * - * + * Pre allocates memory for @buffer to fit at least @size number of items. * - * Return value: + * Return value: + * %true if @buffer memory allocation succeeded, %false otherwise. * * Since: 0.9.2 **/ @@ -1215,11 +1285,12 @@ hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size) /** * hb_buffer_allocation_successful: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * Check if allocating memory for the buffer succeeded. * - * Return value: + * Return value: + * %true if @buffer memory allocation succeeded, %false otherwise. * * Since: 0.9.2 **/ @@ -1231,11 +1302,18 @@ hb_buffer_allocation_successful (hb_buffer_t *buffer) /** * hb_buffer_add: - * @buffer: a buffer. - * @codepoint: - * @cluster: + * @buffer: an #hb_buffer_t. + * @codepoint: a Unicode code point. + * @cluster: the cluster value of @codepoint. * - * + * Appends a character with the Unicode value of @codepoint to @buffer, and + * gives it the initial cluster value of @cluster. Clusters can be any thing + * the client wants, they are usually used to refer to the index of the + * character in the input text stream and are output in + * #hb_glyph_info_t.cluster field. + * + * This function does not check the validity of @codepoint, it is up to the + * caller to ensure it is a valid Unicode code point. * * Since: 0.9.7 **/ @@ -1250,12 +1328,14 @@ hb_buffer_add (hb_buffer_t *buffer, /** * hb_buffer_set_length: - * @buffer: a buffer. - * @length: + * @buffer: an #hb_buffer_t. + * @length: the new length of @buffer. * - * + * Similar to hb_buffer_pre_allocate(), but clears any new items added at the + * end. * * Return value: + * %true if @buffer memory allocation succeeded, %false otherwise. * * Since: 0.9.2 **/ @@ -1290,11 +1370,13 @@ hb_buffer_set_length (hb_buffer_t *buffer, /** * hb_buffer_get_length: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * * Returns the number of items in the buffer. * - * Return value: buffer length. + * Return value: + * The @buffer length. + * The value valid as long as buffer has not been modified. * * Since: 0.9.2 **/ @@ -1306,13 +1388,15 @@ hb_buffer_get_length (hb_buffer_t *buffer) /** * hb_buffer_get_glyph_infos: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * @length: (out): output array length. * - * Returns buffer glyph information array. Returned pointer - * is valid as long as buffer contents are not modified. + * Returns @buffer glyph information array. Returned pointer + * is valid as long as @buffer contents are not modified. * - * Return value: (transfer none) (array length=length): buffer glyph information array. + * Return value: (transfer none) (array length=length): + * The @buffer glyph information array. + * The value valid as long as buffer has not been modified. * * Since: 0.9.2 **/ @@ -1328,13 +1412,15 @@ hb_buffer_get_glyph_infos (hb_buffer_t *buffer, /** * hb_buffer_get_glyph_positions: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * @length: (out): output length. * - * Returns buffer glyph position array. Returned pointer - * is valid as long as buffer contents are not modified. + * Returns @buffer glyph position array. Returned pointer + * is valid as long as @buffer contents are not modified. * - * Return value: (transfer none) (array length=length): buffer glyph position array. + * Return value: (transfer none) (array length=length): + * The @buffer glyph position array. + * The value valid as long as buffer has not been modified. * * Since: 0.9.2 **/ @@ -1353,7 +1439,7 @@ hb_buffer_get_glyph_positions (hb_buffer_t *buffer, /** * hb_buffer_reverse: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * * Reverses buffer contents. * @@ -1367,7 +1453,7 @@ hb_buffer_reverse (hb_buffer_t *buffer) /** * hb_buffer_reverse_range: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * @start: start index. * @end: end index. * @@ -1384,7 +1470,7 @@ hb_buffer_reverse_range (hb_buffer_t *buffer, /** * hb_buffer_reverse_clusters: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * * Reverses buffer clusters. That is, the buffer contents are * reversed, then each cluster (consecutive items having the @@ -1400,7 +1486,7 @@ hb_buffer_reverse_clusters (hb_buffer_t *buffer) /** * hb_buffer_guess_segment_properties: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * * Sets unset buffer segment properties based on buffer Unicode * contents. If buffer is not empty, it must have content type @@ -1499,13 +1585,18 @@ hb_buffer_add_utf (hb_buffer_t *buffer, /** * hb_buffer_add_utf8: - * @buffer: a buffer. - * @text: (array length=text_length) (element-type uint8_t): - * @text_length: - * @item_offset: - * @item_length: + * @buffer: an #hb_buffer_t. + * @text: (array length=text_length) (element-type uint8_t): an array of UTF-8 + * characters to append. + * @text_length: the length of the @text, or -1 if it is %NULL terminated. + * @item_offset: the offset of the first character to add to the @buffer. + * @item_length: the number of characters to add to the @buffer, or -1 for the + * end of @text (assuming it is %NULL terminated). * - * + * See hb_buffer_add_codepoints(). + * + * Replaces invalid UTF-8 characters with the @buffer replacement code point, + * see hb_buffer_set_replacement_codepoint(). * * Since: 0.9.2 **/ @@ -1521,13 +1612,17 @@ hb_buffer_add_utf8 (hb_buffer_t *buffer, /** * hb_buffer_add_utf16: - * @buffer: a buffer. - * @text: (array length=text_length): - * @text_length: - * @item_offset: - * @item_length: + * @buffer: an #hb_buffer_t. + * @text: (array length=text_length): an array of UTF-16 characters to append. + * @text_length: the length of the @text, or -1 if it is %NULL terminated. + * @item_offset: the offset of the first character to add to the @buffer. + * @item_length: the number of characters to add to the @buffer, or -1 for the + * end of @text (assuming it is %NULL terminated). * - * + * See hb_buffer_add_codepoints(). + * + * Replaces invalid UTF-16 characters with the @buffer replacement code point, + * see hb_buffer_set_replacement_codepoint(). * * Since: 0.9.2 **/ @@ -1543,13 +1638,17 @@ hb_buffer_add_utf16 (hb_buffer_t *buffer, /** * hb_buffer_add_utf32: - * @buffer: a buffer. - * @text: (array length=text_length): - * @text_length: - * @item_offset: - * @item_length: + * @buffer: an #hb_buffer_t. + * @text: (array length=text_length): an array of UTF-32 characters to append. + * @text_length: the length of the @text, or -1 if it is %NULL terminated. + * @item_offset: the offset of the first character to add to the @buffer. + * @item_length: the number of characters to add to the @buffer, or -1 for the + * end of @text (assuming it is %NULL terminated). * - * + * See hb_buffer_add_codepoints(). + * + * Replaces invalid UTF-32 characters with the @buffer replacement code point, + * see hb_buffer_set_replacement_codepoint(). * * Since: 0.9.2 **/ @@ -1565,13 +1664,18 @@ hb_buffer_add_utf32 (hb_buffer_t *buffer, /** * hb_buffer_add_latin1: - * @buffer: a buffer. - * @text: (array length=text_length) (element-type uint8_t): - * @text_length: - * @item_offset: - * @item_length: + * @buffer: an #hb_buffer_t. + * @text: (array length=text_length) (element-type uint8_t): an array of UTF-8 + * characters to append. + * @text_length: the length of the @text, or -1 if it is %NULL terminated. + * @item_offset: the offset of the first character to add to the @buffer. + * @item_length: the number of characters to add to the @buffer, or -1 for the + * end of @text (assuming it is %NULL terminated). * - * + * Similar to hb_buffer_add_codepoints(), but allows only access to first 256 + * Unicode code points that can fit in 8-bit strings. + * + * Has nothing to do with non-Unicode Latin-1 encoding. * * Since: 0.9.39 **/ @@ -1587,13 +1691,25 @@ hb_buffer_add_latin1 (hb_buffer_t *buffer, /** * hb_buffer_add_codepoints: - * @buffer: a buffer. - * @text: (array length=text_length): - * @text_length: - * @item_offset: - * @item_length: - * - * + * @buffer: a #hb_buffer_t to append characters to. + * @text: (array length=text_length): an array of Unicode code points to append. + * @text_length: the length of the @text, or -1 if it is %NULL terminated. + * @item_offset: the offset of the first code point to add to the @buffer. + * @item_length: the number of code points to add to the @buffer, or -1 for the + * end of @text (assuming it is %NULL terminated). + * + * Appends characters from @text array to @buffer. The @item_offset is the + * position of the first character from @text that will be appended, and + * @item_length is the number of character. When shaping part of a larger text + * (e.g. a run of text from a paragraph), instead of passing just the substring + * corresponding to the run, it is preferable to pass the whole + * paragraph and specify the run start and length as @item_offset and + * @item_length, respectively, to give HarfBuzz the full context to be able, + * for example, to do cross-run Arabic shaping or properly handle combining + * marks at stat of run. + * + * This function does not check the validity of @text, it is up to the caller + * to ensure it contains a valid Unicode code points. * * Since: 0.9.31 **/ @@ -1665,9 +1781,12 @@ normalize_glyphs_cluster (hb_buffer_t *buffer, /** * hb_buffer_normalize_glyphs: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * Reorders a glyph buffer to have canonical in-cluster glyph order / position. + * The resulting clusters should behave identical to pre-reordering clusters. + * + * This has nothing to do with Unicode normalization. * * Since: 0.9.2 **/ @@ -1713,3 +1832,45 @@ hb_buffer_t::sort (unsigned int start, unsigned int end, int(*compar)(const hb_g } } } + +/* + * Debugging. + */ + +/** + * hb_buffer_set_message_func: + * @buffer: an #hb_buffer_t. + * @func: (closure user_data) (destroy destroy) (scope notified): + * @user_data: + * @destroy: + * + * + * + * Since: 1.1.3 + **/ +void +hb_buffer_set_message_func (hb_buffer_t *buffer, + hb_buffer_message_func_t func, + void *user_data, hb_destroy_func_t destroy) +{ + if (buffer->message_destroy) + buffer->message_destroy (buffer->message_data); + + if (func) { + buffer->message_func = func; + buffer->message_data = user_data; + buffer->message_destroy = destroy; + } else { + buffer->message_func = NULL; + buffer->message_data = NULL; + buffer->message_destroy = NULL; + } +} + +bool +hb_buffer_t::message_impl (hb_font_t *font, const char *fmt, va_list ap) +{ + char buf[100]; + vsnprintf (buf, sizeof (buf), fmt, ap); + return (bool) this->message_func (this, font, buf, this->message_data); +} diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h index d3a2512d800..bf289c19b34 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h @@ -40,7 +40,27 @@ HB_BEGIN_DECLS - +/** + * hb_glyph_info_t: + * @codepoint: either a Unicode code point (before shaping) or a glyph index + * (after shaping). + * @mask: + * @cluster: the index of the character in the original text that corresponds + * to this #hb_glyph_info_t, or whatever the client passes to + * hb_buffer_add(). More than one #hb_glyph_info_t can have the same + * @cluster value, if they resulted from the same character (e.g. one + * to many glyph substitution), and when more than one character gets + * merged in the same glyph (e.g. many to one glyph substitution) the + * #hb_glyph_info_t will have the smallest cluster value of them. + * By default some characters are merged into the same cluster + * (e.g. combining marks have the same cluster as their bases) + * even if they are separate glyphs, hb_buffer_set_cluster_level() + * allow selecting more fine-grained cluster handling. + * + * The #hb_glyph_info_t is the structure that holds information about the + * glyphs and their relation to input text. + * + */ typedef struct hb_glyph_info_t { hb_codepoint_t codepoint; hb_mask_t mask; @@ -51,6 +71,22 @@ typedef struct hb_glyph_info_t { hb_var_int_t var2; } hb_glyph_info_t; +/** + * hb_glyph_position_t: + * @x_advance: how much the line advances after drawing this glyph when setting + * text in horizontal direction. + * @y_advance: how much the line advances after drawing this glyph when setting + * text in vertical direction. + * @x_offset: how much the glyph moves on the X-axis before drawing it, this + * should not affect how much the line advances. + * @y_offset: how much the glyph moves on the Y-axis before drawing it, this + * should not affect how much the line advances. + * + * The #hb_glyph_position_t is the structure that holds the positions of the + * glyph in both horizontal and vertical directions. All positions in + * #hb_glyph_position_t are relative to the current point. + * + */ typedef struct hb_glyph_position_t { hb_position_t x_advance; hb_position_t y_advance; @@ -61,7 +97,16 @@ typedef struct hb_glyph_position_t { hb_var_int_t var; } hb_glyph_position_t; - +/** + * hb_segment_properties_t: + * @direction: the #hb_direction_t of the buffer, see hb_buffer_set_direction(). + * @script: the #hb_script_t of the buffer, see hb_buffer_set_script(). + * @language: the #hb_language_t of the buffer, see hb_buffer_set_language(). + * + * The structure that holds various text properties of an #hb_buffer_t. Can be + * set and retrieved using hb_buffer_set_segment_properties() and + * hb_buffer_get_segment_properties(), respectively. + */ typedef struct hb_segment_properties_t { hb_direction_t direction; hb_script_t script; @@ -86,8 +131,11 @@ hb_segment_properties_hash (const hb_segment_properties_t *p); -/* - * hb_buffer_t +/** + * hb_buffer_t: + * + * The main structure holding the input text and its properties before shaping, + * and output glyphs and their information after shaping. */ typedef struct hb_buffer_t hb_buffer_t; @@ -115,7 +163,12 @@ HB_EXTERN void * hb_buffer_get_user_data (hb_buffer_t *buffer, hb_user_data_key_t *key); - +/** + * hb_buffer_content_type_t: + * @HB_BUFFER_CONTENT_TYPE_INVALID: Initial value for new buffer. + * @HB_BUFFER_CONTENT_TYPE_UNICODE: The buffer contains input characters (before shaping). + * @HB_BUFFER_CONTENT_TYPE_GLYPHS: The buffer contains output glyphs (after shaping). + */ typedef enum { HB_BUFFER_CONTENT_TYPE_INVALID = 0, HB_BUFFER_CONTENT_TYPE_UNICODE, @@ -171,7 +224,23 @@ HB_EXTERN void hb_buffer_guess_segment_properties (hb_buffer_t *buffer); -/* +/** + * hb_buffer_flags_t: + * @HB_BUFFER_FLAG_DEFAULT: the default buffer flag. + * @HB_BUFFER_FLAG_BOT: flag indicating that special handling of the beginning + * of text paragraph can be applied to this buffer. Should usually + * be set, unless you are passing to the buffer only part + * of the text without the full context. + * @HB_BUFFER_FLAG_EOT: flag indicating that special handling of the end of text + * paragraph can be applied to this buffer, similar to + * @HB_BUFFER_FLAG_EOT. + * @HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES: + * flag indication that character with Default_Ignorable + * Unicode property should use the corresponding glyph + * from the font, instead of hiding them (currently done + * by replacing them with the space glyph and zeroing the + * advance width.) + * * Since: 0.9.20 */ typedef enum { /*< flags >*/ @@ -205,10 +274,16 @@ hb_buffer_set_cluster_level (hb_buffer_t *buffer, HB_EXTERN hb_buffer_cluster_level_t hb_buffer_get_cluster_level (hb_buffer_t *buffer); +/** + * HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT: + * + * The default code point for replacing invalid characters in a given encoding. + * Set to U+FFFD REPLACEMENT CHARACTER. + * + * Since: 0.9.31 + */ #define HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT 0xFFFDu -/* Sets codepoint used to replace invalid UTF-8/16/32 entries. - * Default is 0xFFFDu. */ HB_EXTERN void hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer, hb_codepoint_t replacement); @@ -217,22 +292,17 @@ HB_EXTERN hb_codepoint_t hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer); -/* Resets the buffer. Afterwards it's as if it was just created, - * except that it has a larger buffer allocated perhaps... */ HB_EXTERN void hb_buffer_reset (hb_buffer_t *buffer); -/* Like reset, but does NOT clear unicode_funcs and replacement_codepoint. */ HB_EXTERN void hb_buffer_clear_contents (hb_buffer_t *buffer); -/* Returns false if allocation failed */ HB_EXTERN hb_bool_t hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size); -/* Returns false if allocation has failed before */ HB_EXTERN hb_bool_t hb_buffer_allocation_successful (hb_buffer_t *buffer); @@ -275,7 +345,6 @@ hb_buffer_add_utf32 (hb_buffer_t *buffer, unsigned int item_offset, int item_length); -/* Allows only access to first 256 Unicode codepoints. */ HB_EXTERN void hb_buffer_add_latin1 (hb_buffer_t *buffer, const uint8_t *text, @@ -283,7 +352,6 @@ hb_buffer_add_latin1 (hb_buffer_t *buffer, unsigned int item_offset, int item_length); -/* Like add_utf32 but does NOT check for invalid Unicode codepoints. */ HB_EXTERN void hb_buffer_add_codepoints (hb_buffer_t *buffer, const hb_codepoint_t *text, @@ -292,31 +360,24 @@ hb_buffer_add_codepoints (hb_buffer_t *buffer, int item_length); -/* Clears any new items added at the end */ HB_EXTERN hb_bool_t hb_buffer_set_length (hb_buffer_t *buffer, unsigned int length); -/* Return value valid as long as buffer not modified */ HB_EXTERN unsigned int hb_buffer_get_length (hb_buffer_t *buffer); /* Getting glyphs out of the buffer */ -/* Return value valid as long as buffer not modified */ HB_EXTERN hb_glyph_info_t * hb_buffer_get_glyph_infos (hb_buffer_t *buffer, unsigned int *length); -/* Return value valid as long as buffer not modified */ HB_EXTERN hb_glyph_position_t * hb_buffer_get_glyph_positions (hb_buffer_t *buffer, unsigned int *length); -/* Reorders a glyph buffer to have canonical in-cluster glyph order / position. - * The resulting clusters should behave identical to pre-reordering clusters. - * NOTE: This has nothing to do with Unicode normalization. */ HB_EXTERN void hb_buffer_normalize_glyphs (hb_buffer_t *buffer); @@ -325,7 +386,16 @@ hb_buffer_normalize_glyphs (hb_buffer_t *buffer); * Serialize */ -/* +/** + * hb_buffer_serialize_flags_t: + * @HB_BUFFER_SERIALIZE_FLAG_DEFAULT: serialize glyph names, clusters and positions. + * @HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS: do not serialize glyph cluster. + * @HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS: do not serialize glyph position information. + * @HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES: do no serialize glyph name. + * @HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS: serialize glyph extents. + * + * Flags that control what glyph information are serialized in hb_buffer_serialize_glyphs(). + * * Since: 0.9.20 */ typedef enum { /*< flags >*/ @@ -336,13 +406,23 @@ typedef enum { /*< flags >*/ HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS = 0x00000008u } hb_buffer_serialize_flags_t; +/** + * hb_buffer_serialize_format_t: + * @HB_BUFFER_SERIALIZE_FORMAT_TEXT: a human-readable, plain text format. + * @HB_BUFFER_SERIALIZE_FORMAT_JSON: a machine-readable JSON format. + * @HB_BUFFER_SERIALIZE_FORMAT_INVALID: invalid format. + * + * The buffer serialization and de-serialization format used in + * hb_buffer_serialize_glyphs() and hb_buffer_deserialize_glyphs(). + * + * Since: 0.9.2 + */ typedef enum { HB_BUFFER_SERIALIZE_FORMAT_TEXT = HB_TAG('T','E','X','T'), HB_BUFFER_SERIALIZE_FORMAT_JSON = HB_TAG('J','S','O','N'), HB_BUFFER_SERIALIZE_FORMAT_INVALID = HB_TAG_NONE } hb_buffer_serialize_format_t; -/* len=-1 means str is NUL-terminated. */ HB_EXTERN hb_buffer_serialize_format_t hb_buffer_serialize_format_from_string (const char *str, int len); @@ -352,27 +432,41 @@ hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format); HB_EXTERN const char ** hb_buffer_serialize_list_formats (void); -/* Returns number of items, starting at start, that were serialized. */ HB_EXTERN unsigned int hb_buffer_serialize_glyphs (hb_buffer_t *buffer, unsigned int start, unsigned int end, char *buf, unsigned int buf_size, - unsigned int *buf_consumed, /* May be NULL */ - hb_font_t *font, /* May be NULL */ + unsigned int *buf_consumed, + hb_font_t *font, hb_buffer_serialize_format_t format, hb_buffer_serialize_flags_t flags); HB_EXTERN hb_bool_t hb_buffer_deserialize_glyphs (hb_buffer_t *buffer, const char *buf, - int buf_len, /* -1 means nul-terminated */ - const char **end_ptr, /* May be NULL */ - hb_font_t *font, /* May be NULL */ + int buf_len, + const char **end_ptr, + hb_font_t *font, hb_buffer_serialize_format_t format); +/* + * Debugging. + */ + +typedef hb_bool_t (*hb_buffer_message_func_t) (hb_buffer_t *buffer, + hb_font_t *font, + const char *message, + void *user_data); + +HB_EXTERN void +hb_buffer_set_message_func (hb_buffer_t *buffer, + hb_buffer_message_func_t func, + void *user_data, hb_destroy_func_t destroy); + + HB_END_DECLS #endif /* HB_BUFFER_H */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc index 710b36e554d..e0911900911 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc @@ -281,12 +281,15 @@ retry: /** * hb_language_from_string: - * @str: (array length=len) (element-type uint8_t): - * @len: + * @str: (array length=len) (element-type uint8_t): a string representing + * ISO 639 language code + * @len: length of the @str, or -1 if it is %NULL-terminated. * - * + * Converts @str representing an ISO 639 language code to the corresponding + * #hb_language_t. * * Return value: (transfer none): + * The #hb_language_t corresponding to the ISO 639 language code. * * Since: 0.9.2 **/ @@ -314,11 +317,13 @@ hb_language_from_string (const char *str, int len) /** * hb_language_to_string: - * @language: + * @language: an #hb_language_t to convert. * - * + * See hb_language_from_string(). * - * Return value: (transfer none): + * Return value: (transfer none): + * A %NULL-terminated string representing the @language. Must not be freed by + * the caller. * * Since: 0.9.2 **/ @@ -357,11 +362,12 @@ hb_language_get_default (void) /** * hb_script_from_iso15924_tag: - * @tag: + * @tag: an #hb_tag_t representing an ISO 15924 tag. * - * + * Converts an ISO 15924 script tag to a corresponding #hb_script_t. * * Return value: + * An #hb_script_t corresponding to the ISO 15924 tag. * * Since: 0.9.2 **/ @@ -401,28 +407,33 @@ hb_script_from_iso15924_tag (hb_tag_t tag) /** * hb_script_from_string: - * @s: (array length=len) (element-type uint8_t): - * @len: + * @str: (array length=len) (element-type uint8_t): a string representing an + * ISO 15924 tag. + * @len: length of the @str, or -1 if it is %NULL-terminated. * - * + * Converts a string @str representing an ISO 15924 script tag to a + * corresponding #hb_script_t. Shorthand for hb_tag_from_string() then + * hb_script_from_iso15924_tag(). * * Return value: + * An #hb_script_t corresponding to the ISO 15924 tag. * * Since: 0.9.2 **/ hb_script_t -hb_script_from_string (const char *s, int len) +hb_script_from_string (const char *str, int len) { - return hb_script_from_iso15924_tag (hb_tag_from_string (s, len)); + return hb_script_from_iso15924_tag (hb_tag_from_string (str, len)); } /** * hb_script_to_iso15924_tag: - * @script: + * @script: an #hb_script_ to convert. * - * + * See hb_script_from_iso15924_tag(). * - * Return value: + * Return value: + * An #hb_tag_t representing an ISO 15924 script tag. * * Since: 0.9.2 **/ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h index af17d780c27..5b0a0b68ccd 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h @@ -106,8 +106,14 @@ HB_EXTERN void hb_tag_to_string (hb_tag_t tag, char *buf); -/* hb_direction_t */ - +/** + * hb_direction_t: + * @HB_DIRECTION_INVALID: Initial, unset direction. + * @HB_DIRECTION_LTR: Text is set horizontally from left to right. + * @HB_DIRECTION_RTL: Text is set horizontally from right to left. + * @HB_DIRECTION_TTB: Text is set vertically from top to bottom. + * @HB_DIRECTION_BTT: Text is set vertically from bottom to top. + */ typedef enum { HB_DIRECTION_INVALID = 0, HB_DIRECTION_LTR = 4, @@ -136,7 +142,6 @@ hb_direction_to_string (hb_direction_t direction); typedef const struct hb_language_impl_t *hb_language_t; -/* len=-1 means str is NUL-terminated */ HB_EXTERN hb_language_t hb_language_from_string (const char *str, int len); @@ -327,10 +332,8 @@ typedef enum HB_EXTERN hb_script_t hb_script_from_iso15924_tag (hb_tag_t tag); -/* sugar for tag_from_string() then script_from_iso15924_tag */ -/* len=-1 means s is NUL-terminated */ HB_EXTERN hb_script_t -hb_script_from_string (const char *s, int len); +hb_script_from_string (const char *str, int len); HB_EXTERN hb_tag_t hb_script_to_iso15924_tag (hb_script_t script); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc index 13ba5d94ef1..04cf0570f04 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc @@ -176,6 +176,43 @@ _hb_coretext_shaper_font_data_create (hb_font_t *font) return NULL; } + /* Create font copy with cascade list that has LastResort first; this speeds up CoreText + * font fallback which we don't need anyway. */ + { + // TODO Handle allocation failures? + CTFontDescriptorRef last_resort = CTFontDescriptorCreateWithNameAndSize(CFSTR("LastResort"), 0); + CFArrayRef cascade_list = CFArrayCreate (kCFAllocatorDefault, + (const void **) &last_resort, + 1, + &kCFTypeArrayCallBacks); + CFRelease (last_resort); + CFDictionaryRef attributes = CFDictionaryCreate (kCFAllocatorDefault, + (const void **) &kCTFontCascadeListAttribute, + (const void **) &cascade_list, + 1, + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks); + CFRelease (cascade_list); + + CTFontDescriptorRef new_font_desc = CTFontDescriptorCreateWithAttributes (attributes); + CFRelease (attributes); + + CTFontRef new_ct_font = CTFontCreateCopyWithAttributes (data->ct_font, 0.0, NULL, new_font_desc); + if (new_ct_font) + { + CFRelease (data->ct_font); + data->ct_font = new_ct_font; + } + else + DEBUG_MSG (CORETEXT, font, "Font copy with empty cascade list failed"); + } + + if (unlikely (!data->ct_font)) { + DEBUG_MSG (CORETEXT, font, "Font CTFontCreateWithGraphicsFont() failed"); + free (data); + return NULL; + } + return data; } @@ -693,7 +730,6 @@ resize_and_retry: scratch += old_scratch_used; scratch_size -= old_scratch_used; } -retry: { string_ref = CFStringCreateWithCharactersNoCopy (NULL, pchars, chars_len, @@ -848,11 +884,9 @@ retry: * However, even that wouldn't work if we were passed in the CGFont to * begin with. * - * Webkit uses a slightly different approach: it installs LastResort - * as fallback chain, and then checks PS name of used font against - * LastResort. That one is safe for any font except for LastResort, - * as opposed to ours, which can fail if we are using any uninstalled - * font that has the same name as an installed font. + * We might switch to checking PS name against "LastResort". That would + * be safe for all fonts except for those named "Last Resort". Might be + * better than what we have right now. * * See: http://github.com/behdad/harfbuzz/pull/36 */ @@ -1129,10 +1163,6 @@ fail: * AAT shaper */ -HB_SHAPER_DATA_ENSURE_DECLARE(coretext_aat, face) -HB_SHAPER_DATA_ENSURE_DECLARE(coretext_aat, font) - - /* * shaper face data */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font-private.hh index 7255cb95d43..9138c236dd6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font-private.hh @@ -42,6 +42,8 @@ */ #define HB_FONT_FUNCS_IMPLEMENT_CALLBACKS \ + HB_FONT_FUNC_IMPLEMENT (font_h_extents) \ + HB_FONT_FUNC_IMPLEMENT (font_v_extents) \ HB_FONT_FUNC_IMPLEMENT (glyph) \ HB_FONT_FUNC_IMPLEMENT (glyph_h_advance) \ HB_FONT_FUNC_IMPLEMENT (glyph_v_advance) \ @@ -80,7 +82,7 @@ struct hb_font_funcs_t { HB_FONT_FUNCS_IMPLEMENT_CALLBACKS #undef HB_FONT_FUNC_IMPLEMENT } f; - void (*array[]) (void); + void (*array[VAR]) (void); } get; }; @@ -160,6 +162,21 @@ struct hb_font_t { HB_FONT_FUNCS_IMPLEMENT_CALLBACKS #undef HB_FONT_FUNC_IMPLEMENT + inline hb_bool_t get_font_h_extents (hb_font_extents_t *extents) + { + memset (extents, 0, sizeof (*extents)); + return klass->get.f.font_h_extents (this, user_data, + extents, + klass->user_data.font_h_extents); + } + inline hb_bool_t get_font_v_extents (hb_font_extents_t *extents) + { + memset (extents, 0, sizeof (*extents)); + return klass->get.f.font_v_extents (this, user_data, + extents, + klass->user_data.font_v_extents); + } + inline bool has_glyph (hb_codepoint_t unicode) { hb_codepoint_t glyph; @@ -265,6 +282,26 @@ struct hb_font_t { /* A bit higher-level, and with fallback */ + inline void get_extents_for_direction (hb_direction_t direction, + hb_font_extents_t *extents) + { + if (likely (HB_DIRECTION_IS_HORIZONTAL (direction))) { + if (!get_font_h_extents (extents)) + { + extents->ascender = y_scale * .8; + extents->descender = y_scale - extents->ascender; + extents->line_gap = 0; + } + } else { + if (!get_font_v_extents (extents)) + { + extents->ascender = x_scale / 2; + extents->descender = x_scale - extents->ascender; + extents->line_gap = 0; + } + } + } + inline void get_glyph_advance_for_direction (hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y) @@ -284,7 +321,7 @@ struct hb_font_t { { *x = get_glyph_h_advance (glyph) / 2; - /* TODO use font_metrics.ascent */ + /* TODO use font_extents.ascender */ *y = y_scale; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc index d1b8a8822d4..c038b108775 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc @@ -44,6 +44,54 @@ * hb_font_funcs_t */ +static hb_bool_t +hb_font_get_font_h_extents_nil (hb_font_t *font, + void *font_data HB_UNUSED, + hb_font_extents_t *metrics, + void *user_data HB_UNUSED) +{ + memset (metrics, 0, sizeof (*metrics)); + return false; +} +static hb_bool_t +hb_font_get_font_h_extents_parent (hb_font_t *font, + void *font_data HB_UNUSED, + hb_font_extents_t *metrics, + void *user_data HB_UNUSED) +{ + hb_bool_t ret = font->parent->get_font_h_extents (metrics); + if (ret) { + metrics->ascender = font->parent_scale_y_distance (metrics->ascender); + metrics->descender = font->parent_scale_y_distance (metrics->descender); + metrics->line_gap = font->parent_scale_y_distance (metrics->line_gap); + } + return ret; +} + +static hb_bool_t +hb_font_get_font_v_extents_nil (hb_font_t *font, + void *font_data HB_UNUSED, + hb_font_extents_t *metrics, + void *user_data HB_UNUSED) +{ + memset (metrics, 0, sizeof (*metrics)); + return false; +} +static hb_bool_t +hb_font_get_font_v_extents_parent (hb_font_t *font, + void *font_data HB_UNUSED, + hb_font_extents_t *metrics, + void *user_data HB_UNUSED) +{ + hb_bool_t ret = font->parent->get_font_v_extents (metrics); + if (ret) { + metrics->ascender = font->parent_scale_x_distance (metrics->ascender); + metrics->descender = font->parent_scale_x_distance (metrics->descender); + metrics->line_gap = font->parent_scale_x_distance (metrics->line_gap); + } + return ret; +} + static hb_bool_t hb_font_get_glyph_nil (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, @@ -280,7 +328,6 @@ hb_font_get_glyph_from_name_parent (hb_font_t *font, return font->parent->get_glyph_from_name (name, len, glyph); } - static const hb_font_funcs_t _hb_font_funcs_nil = { HB_OBJECT_HEADER_STATIC, @@ -521,6 +568,42 @@ hb_font_t::has_func (unsigned int i) /* Public getters */ +/** + * hb_font_get_h_extents: + * @font: a font. + * @extents: (out): + * + * + * + * Return value: + * + * Since: 1.1.3 + **/ +hb_bool_t +hb_font_get_h_extents (hb_font_t *font, + hb_font_extents_t *extents) +{ + return font->get_font_h_extents (extents); +} + +/** + * hb_font_get_v_extents: + * @font: a font. + * @extents: (out): + * + * + * + * Return value: + * + * Since: 1.1.3 + **/ +hb_bool_t +hb_font_get_v_extents (hb_font_t *font, + hb_font_extents_t *extents) +{ + return font->get_font_v_extents (extents); +} + /** * hb_font_get_glyph: * @font: a font. @@ -745,6 +828,23 @@ hb_font_get_glyph_from_name (hb_font_t *font, /* A bit higher-level, and with fallback */ +/** + * hb_font_get_extents_for_direction: + * @font: a font. + * @direction: + * @extents: + * + * + * + * Since: 1.1.3 + **/ +void +hb_font_get_extents_for_direction (hb_font_t *font, + hb_direction_t direction, + hb_font_extents_t *extents) +{ + return font->get_extents_for_direction (direction, extents); +} /** * hb_font_get_glyph_advance_for_direction: * @font: a font. diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.h index c3165e1d74c..82d056c0136 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.h @@ -78,7 +78,25 @@ HB_EXTERN hb_bool_t hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs); -/* glyph extents */ +/* font and glyph extents */ + +/* Note that typically ascender is positive and descender negative in coordinate systems that grow up. */ +typedef struct hb_font_extents_t +{ + hb_position_t ascender; /* typographic ascender. */ + hb_position_t descender; /* typographic descender. */ + hb_position_t line_gap; /* suggested line spacing gap. */ + /*< private >*/ + hb_position_t reserved9; + hb_position_t reserved8; + hb_position_t reserved7; + hb_position_t reserved6; + hb_position_t reserved5; + hb_position_t reserved4; + hb_position_t reserved3; + hb_position_t reserved2; + hb_position_t reserved1; +} hb_font_extents_t; /* Note that height is negative in coordinate systems that grow up. */ typedef struct hb_glyph_extents_t @@ -89,9 +107,15 @@ typedef struct hb_glyph_extents_t hb_position_t height; /* distance from top to bottom side. */ } hb_glyph_extents_t; - /* func types */ +typedef hb_bool_t (*hb_font_get_font_extents_func_t) (hb_font_t *font, void *font_data, + hb_font_extents_t *metrics, + void *user_data); +typedef hb_font_get_font_extents_func_t hb_font_get_font_h_extents_func_t; +typedef hb_font_get_font_extents_func_t hb_font_get_font_v_extents_func_t; + + typedef hb_bool_t (*hb_font_get_glyph_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t unicode, hb_codepoint_t variation_selector, hb_codepoint_t *glyph, @@ -140,6 +164,38 @@ typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void * /* func setters */ +/** + * hb_font_funcs_set_font_h_extents_func: + * @ffuncs: font functions. + * @func: (closure user_data) (destroy destroy) (scope notified): + * @user_data: + * @destroy: + * + * + * + * Since: 1.1.2 + **/ +HB_EXTERN void +hb_font_funcs_set_font_h_extents_func (hb_font_funcs_t *ffuncs, + hb_font_get_font_h_extents_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_font_v_extents_func: + * @ffuncs: font functions. + * @func: (closure user_data) (destroy destroy) (scope notified): + * @user_data: + * @destroy: + * + * + * + * Since: 1.1.2 + **/ +HB_EXTERN void +hb_font_funcs_set_font_v_extents_func (hb_font_funcs_t *ffuncs, + hb_font_get_font_v_extents_func_t func, + void *user_data, hb_destroy_func_t destroy); + /** * hb_font_funcs_set_glyph_func: * @ffuncs: font functions. @@ -316,9 +372,15 @@ hb_font_funcs_set_glyph_from_name_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_from_name_func_t func, void *user_data, hb_destroy_func_t destroy); - /* func dispatch */ +HB_EXTERN hb_bool_t +hb_font_get_h_extents (hb_font_t *font, + hb_font_extents_t *extents); +HB_EXTERN hb_bool_t +hb_font_get_v_extents (hb_font_t *font, + hb_font_extents_t *extents); + HB_EXTERN hb_bool_t hb_font_get_glyph (hb_font_t *font, hb_codepoint_t unicode, hb_codepoint_t variation_selector, @@ -369,6 +431,10 @@ hb_font_get_glyph_from_name (hb_font_t *font, /* high-level funcs, with fallback */ +HB_EXTERN void +hb_font_get_extents_for_direction (hb_font_t *font, + hb_direction_t direction, + hb_font_extents_t *extents); HB_EXTERN void hb_font_get_glyph_advance_for_direction (hb_font_t *font, hb_codepoint_t glyph, diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc index 9b872ea58f0..eed1787dadd 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc @@ -366,6 +366,25 @@ hb_ft_get_glyph_from_name (hb_font_t *font HB_UNUSED, return *glyph != 0; } +static hb_bool_t +hb_ft_get_font_h_extents (hb_font_t *font HB_UNUSED, + void *font_data, + hb_font_extents_t *metrics, + void *user_data HB_UNUSED) +{ + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data; + FT_Face ft_face = ft_font->ft_face; + metrics->ascender = ft_face->size->metrics.ascender; + metrics->descender = ft_face->size->metrics.descender; + metrics->line_gap = ft_face->size->metrics.height - (ft_face->size->metrics.ascender - ft_face->size->metrics.descender); + if (font->y_scale < 0) + { + metrics->ascender = -metrics->ascender; + metrics->descender = -metrics->descender; + metrics->line_gap = -metrics->line_gap; + } + return true; +} static hb_font_funcs_t *static_ft_funcs = NULL; @@ -387,6 +406,8 @@ retry: { funcs = hb_font_funcs_create (); + hb_font_funcs_set_font_h_extents_func (funcs, hb_ft_get_font_h_extents, NULL, NULL); + //hb_font_funcs_set_font_v_extents_func (funcs, hb_ft_get_font_v_extents, NULL, NULL); hb_font_funcs_set_glyph_func (funcs, hb_ft_get_glyph, NULL, NULL); hb_font_funcs_set_glyph_h_advance_func (funcs, hb_ft_get_glyph_h_advance, NULL, NULL); hb_font_funcs_set_glyph_v_advance_func (funcs, hb_ft_get_glyph_v_advance, NULL, NULL); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type-private.hh index 5ad850bd95b..6323da8e573 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type-private.hh @@ -103,9 +103,6 @@ static inline Type& StructAfter(TObject &X) static const unsigned int static_size = (size); \ static const unsigned int min_size = (size) -/* Size signifying variable-sized array */ -#define VAR 1 - #define DEFINE_SIZE_UNION(size, _member) \ DEFINE_INSTANCE_ASSERTION (this->u._member.static_size == (size)); \ static const unsigned int min_size = (size) @@ -185,7 +182,7 @@ struct hb_dispatch_context_t /* This limits sanitizing time on really broken fonts. */ #ifndef HB_SANITIZE_MAX_EDITS -#define HB_SANITIZE_MAX_EDITS 8 +#define HB_SANITIZE_MAX_EDITS 32 #endif struct hb_sanitize_context_t : diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc index 58586bfa48f..e7b57b88ac8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc @@ -35,6 +35,7 @@ #include "hb-ot-head-table.hh" #include "hb-ot-hhea-table.hh" #include "hb-ot-hmtx-table.hh" +#include "hb-ot-os2-table.hh" struct hb_ot_face_metrics_accelerator_t @@ -42,17 +43,45 @@ struct hb_ot_face_metrics_accelerator_t unsigned int num_metrics; unsigned int num_advances; unsigned int default_advance; + unsigned short ascender; + unsigned short descender; + unsigned short line_gap; + const OT::_mtx *table; hb_blob_t *blob; inline void init (hb_face_t *face, - hb_tag_t _hea_tag, hb_tag_t _mtx_tag) + hb_tag_t _hea_tag, + hb_tag_t _mtx_tag, + hb_tag_t os2_tag) { this->default_advance = face->get_upem (); + bool got_font_extents = false; + if (os2_tag) + { + hb_blob_t *os2_blob = OT::Sanitizer::sanitize (face->reference_table (os2_tag)); + const OT::os2 *os2 = OT::Sanitizer::lock_instance (os2_blob); +#define USE_TYPO_METRICS (1u<<7) + if (0 != (os2->fsSelection & USE_TYPO_METRICS)) + { + this->ascender = os2->sTypoAscender; + this->descender = os2->sTypoDescender; + this->line_gap = os2->sTypoLineGap; + got_font_extents = (this->ascender | this->descender) != 0; + } + hb_blob_destroy (os2_blob); + } + hb_blob_t *_hea_blob = OT::Sanitizer::sanitize (face->reference_table (_hea_tag)); const OT::_hea *_hea = OT::Sanitizer::lock_instance (_hea_blob); this->num_advances = _hea->numberOfLongMetrics; + if (!got_font_extents) + { + this->ascender = _hea->ascender; + this->descender = _hea->descender; + this->line_gap = _hea->lineGap; + } hb_blob_destroy (_hea_blob); this->blob = OT::Sanitizer::sanitize (face->reference_table (_mtx_tag)); @@ -252,8 +281,8 @@ _hb_ot_font_create (hb_face_t *face) return NULL; ot_font->cmap.init (face); - ot_font->h_metrics.init (face, HB_OT_TAG_hhea, HB_OT_TAG_hmtx); - ot_font->v_metrics.init (face, HB_OT_TAG_vhea, HB_OT_TAG_vmtx); /* TODO Can we do this lazily? */ + ot_font->h_metrics.init (face, HB_OT_TAG_hhea, HB_OT_TAG_hmtx, HB_OT_TAG_os2); + ot_font->v_metrics.init (face, HB_OT_TAG_vhea, HB_OT_TAG_vmtx, HB_TAG_NONE); /* TODO Can we do this lazily? */ ot_font->glyf.init (face); return ot_font; @@ -320,6 +349,31 @@ hb_ot_get_glyph_extents (hb_font_t *font HB_UNUSED, return ret; } +static hb_bool_t +hb_ot_get_font_h_extents (hb_font_t *font HB_UNUSED, + void *font_data, + hb_font_extents_t *metrics, + void *user_data HB_UNUSED) +{ + const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data; + metrics->ascender = font->em_scale_y (ot_font->h_metrics.ascender); + metrics->descender = font->em_scale_y (ot_font->h_metrics.descender); + metrics->line_gap = font->em_scale_y (ot_font->h_metrics.line_gap); + return true; +} + +static hb_bool_t +hb_ot_get_font_v_extents (hb_font_t *font HB_UNUSED, + void *font_data, + hb_font_extents_t *metrics, + void *user_data HB_UNUSED) +{ + const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data; + metrics->ascender = font->em_scale_x (ot_font->v_metrics.ascender); + metrics->descender = font->em_scale_x (ot_font->v_metrics.descender); + metrics->line_gap = font->em_scale_x (ot_font->v_metrics.line_gap); + return true; +} static hb_font_funcs_t *static_ot_funcs = NULL; @@ -341,6 +395,8 @@ retry: { funcs = hb_font_funcs_create (); + hb_font_funcs_set_font_h_extents_func (funcs, hb_ot_get_font_h_extents, NULL, NULL); + hb_font_funcs_set_font_v_extents_func (funcs, hb_ot_get_font_v_extents, NULL, NULL); hb_font_funcs_set_glyph_func (funcs, hb_ot_get_glyph, NULL, NULL); hb_font_funcs_set_glyph_h_advance_func (funcs, hb_ot_get_glyph_h_advance, NULL, NULL); hb_font_funcs_set_glyph_v_advance_func (funcs, hb_ot_get_glyph_v_advance, NULL, NULL); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-head-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-head-table.hh index fc351cfb48e..60644be1045 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-head-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-head-table.hh @@ -55,7 +55,9 @@ struct head inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return_trace (c->check_struct (this) && likely (version.major == 1)); + return_trace (c->check_struct (this) && + version.major == 1 && + magicNumber == 0x5F0F3CF5u); } protected: diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common-private.hh index 5b21f142766..64829ac784c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common-private.hh @@ -545,6 +545,9 @@ struct Feature c->try_set (&featureParams, new_offset) && !featureParams.sanitize (c, this, closure ? closure->tag : HB_TAG_NONE)) return_trace (false); + + if (c->edit_count > 1) + c->edit_count--; /* This was a "legitimate" edit; don't contribute to error count. */ } return_trace (true); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh index 8bb91071df3..5ea70fbbdec 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh @@ -742,7 +742,7 @@ struct PairPosFormat2 inline void collect_glyphs (hb_collect_glyphs_context_t *c) const { TRACE_COLLECT_GLYPHS (this); - /* (this+coverage).add_coverage (c->input); // Don't need this. */ + (this+coverage).add_coverage (c->input); unsigned int count1 = class1Count; const ClassDef &klass1 = this+classDef1; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos-private.hh index 2873d0f0977..d6db00566da 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos-private.hh @@ -845,9 +845,12 @@ static inline bool ligate_input (hb_apply_context_t *c, while (buffer->idx < match_positions[i] && !buffer->in_error) { if (!is_mark_ligature) { + unsigned int this_comp = _hb_glyph_info_get_lig_comp (&buffer->cur()); + if (this_comp == 0) + this_comp = last_num_components; unsigned int new_lig_comp = components_so_far - last_num_components + - MIN (MAX (_hb_glyph_info_get_lig_comp (&buffer->cur()), 1u), last_num_components); - _hb_glyph_info_set_lig_props_for_mark (&buffer->cur(), lig_id, new_lig_comp); + MIN (this_comp, last_num_components); + _hb_glyph_info_set_lig_props_for_mark (&buffer->cur(), lig_id, new_lig_comp); } buffer->next_glyph (); } @@ -864,8 +867,11 @@ static inline bool ligate_input (hb_apply_context_t *c, /* Re-adjust components for any marks following. */ for (unsigned int i = buffer->idx; i < buffer->len; i++) { if (last_lig_id == _hb_glyph_info_get_lig_id (&buffer->info[i])) { + unsigned int this_comp = _hb_glyph_info_get_lig_comp (&buffer->info[i]); + if (!this_comp) + break; unsigned int new_lig_comp = components_so_far - last_num_components + - MIN (MAX (_hb_glyph_info_get_lig_comp (&buffer->info[i]), 1u), last_num_components); + MIN (this_comp, last_num_components); _hb_glyph_info_set_lig_props_for_mark (&buffer->info[i], lig_id, new_lig_comp); } else break; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-private.hh index 45897ed5a81..f48184fd394 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-private.hh @@ -517,11 +517,9 @@ _hb_glyph_info_clear_ligated_and_multiplied (hb_glyph_info_t *info) } static inline void -_hb_glyph_info_clear_substituted_and_ligated_and_multiplied (hb_glyph_info_t *info) +_hb_glyph_info_clear_substituted (hb_glyph_info_t *info) { - info->glyph_props() &= ~(HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED | - HB_OT_LAYOUT_GLYPH_PROPS_LIGATED | - HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED); + info->glyph_props() &= ~(HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc index b0257f6b9b6..9fc88f6c862 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc @@ -458,6 +458,8 @@ hb_ot_layout_language_find_feature (hb_face_t *face, } /** + * hb_ot_layout_feature_get_lookups: + * * Since: 0.9.7 **/ unsigned int @@ -475,6 +477,8 @@ hb_ot_layout_feature_get_lookups (hb_face_t *face, } /** + * hb_ot_layout_table_get_lookup_count: + * * Since: 0.9.22 **/ unsigned int @@ -635,6 +639,8 @@ _hb_ot_layout_collect_lookups_languages (hb_face_t *face, } /** + * hb_ot_layout_collect_lookups: + * * Since: 0.9.8 **/ void @@ -679,6 +685,8 @@ hb_ot_layout_collect_lookups (hb_face_t *face, } /** + * hb_ot_layout_lookup_collect_glyphs: + * * Since: 0.9.7 **/ void @@ -727,6 +735,8 @@ hb_ot_layout_has_substitution (hb_face_t *face) } /** + * hb_ot_layout_lookup_would_substitute: + * * Since: 0.9.7 **/ hb_bool_t @@ -768,6 +778,8 @@ hb_ot_layout_substitute_finish (hb_font_t *font, hb_buffer_t *buffer) } /** + * hb_ot_layout_lookup_substitute_closure: + * * Since: 0.9.7 **/ void @@ -805,6 +817,8 @@ hb_ot_layout_position_finish (hb_font_t *font, hb_buffer_t *buffer) } /** + * hb_ot_layout_get_size_params: + * * Since: 0.9.10 **/ hb_bool_t @@ -1014,25 +1028,15 @@ inline void hb_ot_map_t::apply (const Proxy &proxy, const stage_map_t *stage = &stages[table_index][stage_index]; for (; i < stage->last_lookup; i++) { -#if 0 - char buf[4096]; - hb_buffer_serialize_glyphs (buffer, 0, buffer->len, - buf, sizeof (buf), NULL, - font, - HB_BUFFER_SERIALIZE_FORMAT_TEXT, - Proxy::table_index == 0 ? - HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS : - HB_BUFFER_SERIALIZE_FLAG_DEFAULT); - printf ("buf: [%s]\n", buf); -#endif - unsigned int lookup_index = lookups[table_index][i].index; + if (!buffer->message (font, "start lookup %d", lookup_index)) continue; c.set_lookup_index (lookup_index); c.set_lookup_mask (lookups[table_index][i].mask); c.set_auto_zwj (lookups[table_index][i].auto_zwj); apply_string (&c, proxy.table.get_lookup (lookup_index), proxy.accels[lookup_index]); + (void) buffer->message (font, "end lookup %d", lookup_index); } if (stage->pause_func) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-map-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-map-private.hh index 6f62c77de0b..8692caa9392 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-map-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-map-private.hh @@ -203,7 +203,8 @@ struct hb_ot_map_builder_t unsigned int stage[2]; /* GSUB/GPOS */ static int cmp (const feature_info_t *a, const feature_info_t *b) - { return (a->tag != b->tag) ? (a->tag < b->tag ? -1 : 1) : (a->seq < b->seq ? -1 : 1); } + { return (a->tag != b->tag) ? (a->tag < b->tag ? -1 : 1) : + (a->seq < b->seq ? -1 : a->seq > b->seq ? 1 : 0); } }; struct stage_info_t { diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh new file mode 100644 index 00000000000..4709cd6e877 --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh @@ -0,0 +1,105 @@ +/* + * Copyright © 2011,2012 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#ifndef HB_OT_OS2_TABLE_HH +#define HB_OT_OS2_TABLE_HH + +#include "hb-open-type-private.hh" + + +namespace OT { + +/* + * OS/2 and Windows Metrics + * http://www.microsoft.com/typography/otspec/os2.htm + */ + +#define HB_OT_TAG_os2 HB_TAG('O','S','/','2') + +struct os2 +{ + static const hb_tag_t tableTag = HB_OT_TAG_os2; + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this)); + } + + public: + USHORT version; + + /* Version 0 */ + SHORT xAvgCharWidth; + USHORT usWeightClass; + USHORT usWidthClass; + USHORT fsType; + SHORT ySubscriptXSize; + SHORT ySubscriptYSize; + SHORT ySubscriptXOffset; + SHORT ySubscriptYOffset; + SHORT ySuperscriptXSize; + SHORT ySuperscriptYSize; + SHORT ySuperscriptXOffset; + SHORT ySuperscriptYOffset; + SHORT yStrikeoutSize; + SHORT yStrikeoutPosition; + SHORT sFamilyClass; + BYTE panose[10]; + ULONG ulUnicodeRange[4]; + Tag achVendID; + USHORT fsSelection; + USHORT usFirstCharIndex; + USHORT usLastCharIndex; + SHORT sTypoAscender; + SHORT sTypoDescender; + SHORT sTypoLineGap; + USHORT usWinAscent; + USHORT usWinDescent; + + /* Version 1 */ + //ULONG ulCodePageRange1; + //ULONG ulCodePageRange2; + + /* Version 2 */ + //SHORT sxHeight; + //SHORT sCapHeight; + //USHORT usDefaultChar; + //USHORT usBreakChar; + //USHORT usMaxContext; + + /* Version 5 */ + //USHORT usLowerOpticalPointSize; + //USHORT usUpperOpticalPointSize; + + public: + DEFINE_SIZE_STATIC (78); +}; + +} /* namespace OT */ + + +#endif /* HB_OT_OS2_TABLE_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc index 50754771409..4da8990558a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc @@ -223,7 +223,6 @@ collect_features_arabic (hb_ot_shape_planner_t *plan) map->add_gsub_pause (arabic_fallback_shape); map->add_global_bool_feature (HB_TAG('c','a','l','t')); - map->add_gsub_pause (NULL); /* The spec includes 'cswh'. Earlier versions of Windows * used to enable this by default, but testing suggests @@ -233,6 +232,7 @@ collect_features_arabic (hb_ot_shape_planner_t *plan) * Note that IranNastaliq uses this feature extensively * to fixup broken glyph sequences. Oh well... * Test case: U+0643,U+0640,U+0631. */ + //map->add_gsub_pause (NULL); //map->add_global_bool_feature (HB_TAG('c','s','w','h')); map->add_global_bool_feature (HB_TAG('m','s','e','t')); } @@ -463,10 +463,6 @@ apply_stch (const hb_ot_shape_plan_t *plan, * Second pass applies the stretch, copying things to the end of buffer. */ - /* 30 = 2048 / 70. - * https://www.microsoft.com/typography/cursivescriptguidelines.mspx */ - hb_position_t overlap = font->x_scale / 30; - DEBUG_MSG (ARABIC, NULL, "overlap for stretching is %d", overlap); int sign = font->x_scale < 0 ? -1 : +1; unsigned int extra_glyphs_needed = 0; // Set during MEASURE, used during CUT typedef enum { MEASURE, CUT } step_t; @@ -504,18 +500,15 @@ apply_stch (const hb_ot_shape_plan_t *plan, hb_in_range (info[i - 1].arabic_shaping_action(), STCH_FIXED, STCH_REPEATING)) { i--; - hb_glyph_extents_t extents; - if (!font->get_glyph_extents (info[i].codepoint, &extents)) - extents.width = 0; - extents.width -= overlap; + hb_position_t width = font->get_glyph_h_advance (info[i].codepoint); if (info[i].arabic_shaping_action() == STCH_FIXED) { - w_fixed += extents.width; + w_fixed += width; n_fixed++; } else { - w_repeating += extents.width; + w_repeating += width; n_repeating++; } } @@ -540,9 +533,20 @@ apply_stch (const hb_ot_shape_plan_t *plan, /* Number of additional times to repeat each repeating tile. */ int n_copies = 0; - hb_position_t w_remaining = w_total - w_fixed - overlap; + hb_position_t w_remaining = w_total - w_fixed; if (sign * w_remaining > sign * w_repeating && sign * w_repeating > 0) - n_copies = (sign * w_remaining + sign * w_repeating / 4) / (sign * w_repeating) - 1; + n_copies = (sign * w_remaining) / (sign * w_repeating) - 1; + + /* See if we can improve the fit by adding an extra repeat and squeezing them together a bit. */ + hb_position_t extra_repeat_overlap = 0; + hb_position_t shortfall = sign * w_remaining - sign * w_repeating * (n_copies + 1); + if (shortfall > 0) + { + ++n_copies; + hb_position_t excess = (n_copies + 1) * sign * w_repeating - sign * w_remaining; + if (excess > 0) + extra_repeat_overlap = excess / (n_copies * n_repeating); + } if (step == MEASURE) { @@ -551,13 +555,10 @@ apply_stch (const hb_ot_shape_plan_t *plan, } else { - hb_position_t x_offset = -overlap; + hb_position_t x_offset = 0; for (unsigned int k = end; k > start; k--) { - hb_glyph_extents_t extents; - if (!font->get_glyph_extents (info[k - 1].codepoint, &extents)) - extents.width = 0; - extents.width -= overlap; + hb_position_t width = font->get_glyph_h_advance (info[k - 1].codepoint); unsigned int repeat = 1; if (info[k - 1].arabic_shaping_action() == STCH_REPEATING) @@ -567,7 +568,9 @@ apply_stch (const hb_ot_shape_plan_t *plan, repeat, info[k - 1].codepoint, j); for (unsigned int n = 0; n < repeat; n++) { - x_offset -= extents.width; + x_offset -= width; + if (n > 0) + x_offset += extra_repeat_overlap; pos[k - 1].x_offset = x_offset; /* Append copy. */ --j; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-default.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-default.cc index 1e441fa5530..5cf0a1886ca 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-default.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-default.cc @@ -40,6 +40,6 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_default = NULL, /* decompose */ NULL, /* compose */ NULL, /* setup_masks */ - HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT, + HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE, true, /* fallback_position */ }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-private.hh index 559ebe49867..326b36483b6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-private.hh @@ -109,27 +109,31 @@ enum indic_syllabic_category_t { INDIC_SYLLABIC_CATEGORY_AVAGRAHA = OT_Symbol, INDIC_SYLLABIC_CATEGORY_BINDU = OT_SM, - INDIC_SYLLABIC_CATEGORY_BRAHMI_JOINING_NUMBER = OT_PLACEHOLDER, /* TODO */ + INDIC_SYLLABIC_CATEGORY_BRAHMI_JOINING_NUMBER = OT_PLACEHOLDER, /* Don't care. */ 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_KILLER = OT_M, /* U+17CD only. */ 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_PREFIXED = OT_X, /* Don't care. */ INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED = OT_CM, INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA = OT_N, + INDIC_SYLLABIC_CATEGORY_CONSONANT_WITH_STACKER = OT_Repha, /* TODO */ INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK = OT_SM, - INDIC_SYLLABIC_CATEGORY_INVISIBLE_STACKER = OT_H, /* TODO */ + INDIC_SYLLABIC_CATEGORY_INVISIBLE_STACKER = OT_Coeng, 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_NUMBER_JOINER = OT_PLACEHOLDER, /* Don't care. */ + INDIC_SYLLABIC_CATEGORY_PURE_KILLER = OT_M, /* Is like a vowel matra. */ INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER = OT_RS, + INDIC_SYLLABIC_CATEGORY_SYLLABLE_MODIFIER = OT_M, /* Misc Khmer signs. */ INDIC_SYLLABIC_CATEGORY_TONE_LETTER = OT_X, INDIC_SYLLABIC_CATEGORY_TONE_MARK = OT_N, INDIC_SYLLABIC_CATEGORY_VIRAMA = OT_H, @@ -162,17 +166,23 @@ enum indic_matra_category_t { }; #define INDIC_COMBINE_CATEGORIES(S,M) \ - (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)) + ( \ + ASSERT_STATIC_EXPR_ZERO (S < 255 && M < 255) + \ + ( S | \ + ( \ + ( \ + 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 \ + ? M : INDIC_MATRA_CATEGORY_NOT_APPLICABLE \ + ) << 8 \ + ) \ + ) \ + ) HB_INTERNAL INDIC_TABLE_ELEMENT_TYPE hb_indic_get_categories (hb_codepoint_t u); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-table.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-table.cc index 2e159a12b00..90abb55f3cd 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-table.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-table.cc @@ -6,63 +6,67 @@ * * on files with these headers: * - * # 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] + * # IndicSyllabicCategory-8.0.0.txt + * # Date: 2015-05-12, 10:00:00 GMT [RP, KW, LI] + * # IndicPositionalCategory-8.0.0.txt + * # Date: 2015-05-12, 10:00:00 GMT [RP, KW, LI] + * # Blocks-8.0.0.txt + * # Date: 2014-11-10, 23:04:00 GMT [KW] */ #include "hb-ot-shape-complex-indic-private.hh" #define ISC_A INDIC_SYLLABIC_CATEGORY_AVAGRAHA /* 13 chars; Avagraha */ -#define ISC_Bi INDIC_SYLLABIC_CATEGORY_BINDU /* 59 chars; Bindu */ +#define ISC_Bi INDIC_SYLLABIC_CATEGORY_BINDU /* 60 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_Ca INDIC_SYLLABIC_CATEGORY_CANTILLATION_MARK /* 52 chars; Cantillation_Mark */ +#define ISC_C INDIC_SYLLABIC_CATEGORY_CONSONANT /* 1805 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_CF INDIC_SYLLABIC_CATEGORY_CONSONANT_FINAL /* 62 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_CK INDIC_SYLLABIC_CATEGORY_CONSONANT_KILLER /* 2 chars; Consonant_Killer */ +#define ISC_CM INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL /* 22 chars; Consonant_Medial */ +#define ISC_CP INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER /* 13 chars; Consonant_Placeholder */ #define ISC_CPR INDIC_SYLLABIC_CATEGORY_CONSONANT_PRECEDING_REPHA /* 1 chars; Consonant_Preceding_Repha */ +#define ISC_CPrf INDIC_SYLLABIC_CATEGORY_CONSONANT_PREFIXED /* 2 chars; Consonant_Prefixed */ #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_CWS INDIC_SYLLABIC_CATEGORY_CONSONANT_WITH_STACKER /* 4 chars; Consonant_With_Stacker */ #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_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_N INDIC_SYLLABIC_CATEGORY_NUKTA /* 23 chars; Nukta */ +#define ISC_Nd INDIC_SYLLABIC_CATEGORY_NUMBER /* 420 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_PK INDIC_SYLLABIC_CATEGORY_PURE_KILLER /* 15 chars; Pure_Killer */ -#define ISC_RS INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER /* 3 chars; Register_Shifter */ +#define ISC_PK INDIC_SYLLABIC_CATEGORY_PURE_KILLER /* 16 chars; Pure_Killer */ +#define ISC_RS INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER /* 2 chars; Register_Shifter */ +#define ISC_SM INDIC_SYLLABIC_CATEGORY_SYLLABLE_MODIFIER /* 20 chars; Syllable_Modifier */ #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_TM INDIC_SYLLABIC_CATEGORY_TONE_MARK /* 42 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 ISC_M INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT /* 572 chars; Vowel_Dependent */ +#define ISC_VI INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT /* 404 chars; Vowel_Independent */ -#define IMC_B INDIC_MATRA_CATEGORY_BOTTOM /* 142 chars; Bottom */ +#define IMC_B INDIC_MATRA_CATEGORY_BOTTOM /* 256 chars; Bottom */ #define IMC_BR INDIC_MATRA_CATEGORY_BOTTOM_AND_RIGHT /* 2 chars; Bottom_And_Right */ -#define IMC_L INDIC_MATRA_CATEGORY_LEFT /* 57 chars; Left */ +#define IMC_L INDIC_MATRA_CATEGORY_LEFT /* 55 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 /* 163 chars; Right */ -#define IMC_T INDIC_MATRA_CATEGORY_TOP /* 169 chars; Top */ +#define IMC_O INDIC_MATRA_CATEGORY_OVERSTRUCK /* 10 chars; Overstruck */ +#define IMC_R INDIC_MATRA_CATEGORY_RIGHT /* 249 chars; Right */ +#define IMC_T INDIC_MATRA_CATEGORY_TOP /* 324 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 /* 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 IMC_VOL INDIC_MATRA_CATEGORY_VISUAL_ORDER_LEFT /* 19 chars; Visual_Order_Left */ #define _(S,M) INDIC_COMBINE_CATEGORIES (ISC_##S, IMC_##M) @@ -79,29 +83,33 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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_0x00d0u 24 +#define indic_offset_0x00b0u 24 /* Latin-1 Supplement */ + /* 00B0 */ _(x,x), _(x,x), _(SM,x), _(SM,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 00B8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 00C0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 00C8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 00D0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(CP,x), -#define indic_offset_0x0900u 32 +#define indic_offset_0x0900u 64 /* Devanagari */ - /* 0900 */ _(Bi,x), _(Bi,x), _(Bi,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), + /* 0900 */ _(Bi,T), _(Bi,T), _(Bi,T), _(Vs,R), _(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), /* 0910 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), /* 0918 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0920 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0928 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0930 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 0938 */ _(C,x), _(C,x), _(M,T), _(M,R), _(N,x), _(A,x), _(M,R), _(M,L), + /* 0938 */ _(C,x), _(C,x), _(M,T), _(M,R), _(N,B), _(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), _(TM,x), _(TM,x), _(x,x), _(x,x), _(M,T), _(M,B), _(M,B), + /* 0950 */ _(x,x), _(Ca,T), _(Ca,B), _(x,T), _(x,T), _(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), _(Nd,x), _(Nd,x), /* 0968 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), @@ -110,14 +118,14 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* Bengali */ - /* 0980 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), + /* 0980 */ _(x,x), _(Bi,T), _(Bi,R), _(Vs,R), _(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), /* 0990 */ _(VI,x), _(x,x), _(x,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), /* 0998 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 09A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 09A8 */ _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 09B0 */ _(C,x), _(x,x), _(C,x), _(x,x), _(x,x), _(x,x), _(C,x), _(C,x), - /* 09B8 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,x), _(A,x), _(M,R), _(M,L), + /* 09B8 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,B), _(A,x), _(M,R), _(M,L), /* 09C0 */ _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(x,x), _(x,x), _(M,L), /* 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), @@ -129,33 +137,33 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* Gurmukhi */ - /* 0A00 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), + /* 0A00 */ _(x,x), _(Bi,T), _(Bi,T), _(Vs,R), _(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), /* 0A10 */ _(VI,x), _(x,x), _(x,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), /* 0A18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0A20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0A28 */ _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0A30 */ _(C,x), _(x,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(x,x), - /* 0A38 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,x), _(x,x), _(M,R), _(M,L), + /* 0A38 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,B), _(x,x), _(M,R), _(M,L), /* 0A40 */ _(M,R), _(M,B), _(M,B), _(x,x), _(x,x), _(x,x), _(x,x), _(M,T), /* 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), _(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), + /* 0A70 */ _(Bi,T), _(GM,T), _(CP,x), _(CP,x), _(x,x), _(CM,B), _(x,x), _(x,x), /* 0A78 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* Gujarati */ - /* 0A80 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), + /* 0A80 */ _(x,x), _(Bi,T), _(Bi,T), _(Vs,R), _(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), /* 0A90 */ _(VI,x), _(VI,x), _(x,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), /* 0A98 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0AA0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0AA8 */ _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0AB0 */ _(C,x), _(x,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), - /* 0AB8 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,x), _(A,x), _(M,R), _(M,L), + /* 0AB8 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,B), _(A,x), _(M,R), _(M,L), /* 0AC0 */ _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(M,T), _(x,x), _(M,T), /* 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), @@ -163,18 +171,18 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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), + /* 0AF8 */ _(x,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* Oriya */ - /* 0B00 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), + /* 0B00 */ _(x,x), _(Bi,T), _(Bi,R), _(Vs,R), _(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), /* 0B10 */ _(VI,x), _(x,x), _(x,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), /* 0B18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0B20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0B28 */ _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0B30 */ _(C,x), _(x,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), - /* 0B38 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,x), _(A,x), _(M,R), _(M,T), + /* 0B38 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,B), _(A,x), _(M,R), _(M,T), /* 0B40 */ _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(x,x), _(x,x), _(M,L), /* 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), @@ -186,7 +194,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* Tamil */ - /* 0B80 */ _(x,x), _(x,x), _(Bi,x), _(ML,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), + /* 0B80 */ _(x,x), _(x,x), _(Bi,T), _(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), /* 0B90 */ _(VI,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(x,x), _(x,x), /* 0B98 */ _(x,x), _(C,x), _(C,x), _(x,x), _(C,x), _(x,x), _(C,x), _(C,x), @@ -194,7 +202,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 0BA8 */ _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(C,x), _(C,x), /* 0BB0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0BB8 */ _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,R), _(M,R), - /* 0BC0 */ _(M,T), _(M,B), _(M,B), _(x,x), _(x,x), _(x,x), _(M,L), _(M,L), + /* 0BC0 */ _(M,T), _(M,R), _(M,R), _(x,x), _(x,x), _(x,x), _(M,L), _(M,L), /* 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), @@ -205,7 +213,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* Telugu */ - /* 0C00 */ _(Bi,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), + /* 0C00 */ _(Bi,T), _(Bi,R), _(Bi,R), _(Vs,R), _(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), @@ -216,7 +224,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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), + /* 0C58 */ _(C,x), _(C,x), _(C,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), @@ -224,26 +232,26 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* Kannada */ - /* 0C80 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), + /* 0C80 */ _(x,x), _(Bi,T), _(Bi,R), _(Vs,R), _(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), /* 0CA0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0CA8 */ _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 0CB0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), - /* 0CB8 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,x), _(A,x), _(M,R), _(M,T), + /* 0CB8 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,B), _(A,x), _(M,R), _(M,T), /* 0CC0 */ _(M,TR), _(M,R), _(M,R), _(M,R), _(M,R), _(x,x), _(M,T), _(M,TR), /* 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), _(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), + /* 0CF0 */ _(x,x),_(CWS,x),_(CWS,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 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), + /* 0D00 */ _(x,x), _(Bi,T), _(Bi,R), _(Vs,R), _(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), @@ -254,7 +262,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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),_(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), + /* 0D58 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(VI,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), @@ -262,7 +270,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* Sinhala */ - /* 0D80 */ _(x,x), _(x,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), + /* 0D80 */ _(x,x), _(x,x), _(Bi,R), _(Vs,R), _(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), /* 0D90 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), /* 0D98 */ _(x,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -278,7 +286,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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), -#define indic_offset_0x1000u 1304 +#define indic_offset_0x1000u 1336 /* Myanmar */ @@ -289,22 +297,22 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 1018 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 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), _(IS,x), _(PK,T), _(CM,x), _(CM,x), _(CM,x), _(CM,x), _(C,x), + /* 1030 */ _(M,B), _(M,L), _(M,T), _(M,T), _(M,T), _(M,T), _(Bi,T), _(TM,B), + /* 1038 */ _(Vs,R), _(IS,x), _(PK,T), _(CM,R), _(CM,x), _(CM,B), _(CM,B), _(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), - /* 1068 */ _(M,R), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(C,x), _(C,x), + /* 1058 */ _(M,B), _(M,B), _(C,x), _(C,x), _(C,x), _(C,x), _(CM,B), _(CM,B), + /* 1060 */ _(CM,B), _(C,x), _(M,R), _(TM,R), _(TM,R), _(C,x), _(C,x), _(M,R), + /* 1068 */ _(M,R), _(TM,R), _(TM,R), _(TM,R), _(TM,R), _(TM,R), _(C,x), _(C,x), /* 1070 */ _(C,x), _(M,T), _(M,T), _(M,T), _(M,T), _(C,x), _(C,x), _(C,x), /* 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), + /* 1080 */ _(C,x), _(C,x), _(CM,B), _(M,R), _(M,L), _(M,T), _(M,T), _(TM,R), + /* 1088 */ _(TM,R), _(TM,R), _(TM,R), _(TM,R), _(TM,R), _(TM,B), _(C,x), _(TM,R), /* 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), + /* 1098 */ _(Nd,x), _(Nd,x), _(TM,R), _(TM,R), _(M,R), _(M,T), _(x,x), _(x,x), -#define indic_offset_0x1700u 1464 +#define indic_offset_0x1700u 1496 /* Tagalog */ @@ -345,14 +353,14 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 17A8 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), /* 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,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), + /* 17C0 */ _(M,LR), _(M,L), _(M,L), _(M,L), _(M,LR), _(M,LR), _(Bi,T), _(Vs,R), + /* 17C8 */ _(M,R), _(RS,T), _(RS,T), _(SM,T),_(CSR,T), _(CK,T), _(SM,T), _(SM,T), + /* 17D0 */ _(SM,T), _(PK,T), _(IS,x), _(SM,T), _(x,x), _(x,x), _(x,x), _(x,x), + /* 17D8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(A,x), _(x,T), _(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_0x1900u 1704 +#define indic_offset_0x1900u 1736 /* Limbu */ @@ -362,9 +370,9 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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), _(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), + /* 1928 */ _(M,T), _(CS,R), _(CS,R), _(CS,R), _(x,x), _(x,x), _(x,x), _(x,x), + /* 1930 */ _(CF,R), _(CF,R), _(Bi,B), _(CF,R), _(CF,R), _(CF,R), _(CF,R), _(CF,R), + /* 1938 */ _(CF,R), _(CF,B), _(M,T), _(SM,B), _(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), @@ -385,10 +393,10 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 1998 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 19A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 19A8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x), - /* 19B0 */ _(M,R), _(M,R), _(M,R), _(M,R), _(M,R), _(M,L), _(M,L), _(M,L), - /* 19B8 */ _(M,R), _(M,R), _(M,L), _(M,R), _(M,R), _(M,R), _(M,R), _(M,R), + /* 19B0 */ _(M,R), _(M,R), _(M,R), _(M,R), _(M,R),_(M,VOL),_(M,VOL),_(M,VOL), + /* 19B8 */ _(M,R), _(M,R),_(M,VOL), _(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), + /* 19C8 */ _(TM,R), _(TM,R), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 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), @@ -411,47 +419,47 @@ 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,L), _(CM,x), _(CF,x), - /* 1A58 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(x,x), + /* 1A50 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(CM,L), _(CM,B), _(CF,R), + /* 1A58 */ _(CF,T), _(CF,T), _(CF,T), _(CF,B), _(CF,B), _(CF,B), _(CF,B), _(x,x), /* 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), + /* 1A70 */ _(M,L), _(M,L), _(M,L), _(M,T), _(M,T), _(TM,T), _(TM,T), _(TM,T), + /* 1A78 */ _(TM,T), _(TM,T), _(SM,T), _(SM,T), _(SM,T), _(x,x), _(x,x), _(SM,B), /* 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_0x1b00u 2120 +#define indic_offset_0x1b00u 2152 /* Balinese */ - /* 1B00 */ _(Bi,x), _(Bi,x), _(Bi,x),_(CSR,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), + /* 1B00 */ _(Bi,T), _(Bi,T), _(Bi,T),_(CSR,T), _(Vs,R), _(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), /* 1B20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1B28 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 1B30 */ _(C,x), _(C,x), _(C,x), _(C,x), _(N,x), _(M,R), _(M,T), _(M,T), + /* 1B30 */ _(C,x), _(C,x), _(C,x), _(C,x), _(N,T), _(M,R), _(M,T), _(M,T), /* 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 */ _(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), + /* 1B68 */ _(x,x), _(x,x), _(x,x), _(x,T), _(x,B), _(x,T), _(x,T), _(x,T), + /* 1B70 */ _(x,T), _(x,T), _(x,T), _(x,T), _(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 */ _(Bi,x),_(CSR,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), + /* 1B80 */ _(Bi,T),_(CSR,T), _(Vs,R), _(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), _(PK,R), _(IS,x), _(CS,x), _(CS,x), _(C,x), _(C,x), + /* 1BA0 */ _(C,x), _(CS,R), _(CS,B), _(CS,B), _(M,T), _(M,B), _(M,L), _(M,R), + /* 1BA8 */ _(M,T), _(M,T), _(PK,R), _(IS,x), _(CS,B), _(CS,B), _(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), @@ -461,9 +469,9 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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,R), + /* 1BE0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(VI,x), _(VI,x), _(N,T), _(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), + /* 1BF0 */ _(CF,T), _(CF,T), _(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 */ @@ -472,39 +480,49 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 1C08 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 1C10 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 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,L), _(Bi,L), _(x,x), _(N,x), + /* 1C20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(CS,R), _(CS,R), _(M,R), _(M,L), + /* 1C28 */ _(M,L), _(M,TL), _(M,R), _(M,R), _(M,B), _(CF,T), _(CF,T), _(CF,T), + /* 1C30 */ _(CF,T), _(CF,T), _(CF,T), _(CF,T), _(Bi,L), _(Bi,L), _(SM,T), _(N,B), /* 1C38 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,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_0x1cd0u 2456 +#define indic_offset_0x1cd0u 2488 /* Vedic Extensions */ - /* 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), _(TM,x), _(x,x), _(x,x), _(x,x), + /* 1CD0 */ _(Ca,T), _(Ca,T), _(Ca,T), _(x,x), _(Ca,O), _(Ca,B), _(Ca,B), _(Ca,B), + /* 1CD8 */ _(Ca,B), _(Ca,B), _(Ca,T), _(Ca,T), _(Ca,B), _(Ca,B), _(Ca,B), _(Ca,B), + /* 1CE0 */ _(Ca,T), _(Ca,R), _(x,O), _(x,O), _(x,O), _(x,O), _(x,O), _(x,O), + /* 1CE8 */ _(x,O), _(x,x), _(x,x), _(x,x), _(x,x), _(x,B), _(x,x), _(x,x), + /* 1CF0 */ _(x,x), _(x,x), _(Vs,x), _(Vs,x), _(Ca,T), _(x,x), _(x,x), _(x,x), + /* 1CF8 */ _(Ca,x), _(Ca,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), -#define indic_offset_0x2008u 2496 +#define indic_offset_0x2008u 2536 /* General Punctuation */ /* 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), + /* 2010 */ _(CP,x), _(CP,x), _(CP,x), _(CP,x), _(CP,x), _(x,x), _(x,x), _(x,x), -#define indic_offset_0xa800u 2512 +#define indic_offset_0x2070u 2552 + + + /* Superscripts and Subscripts */ + + /* 2070 */ _(x,x), _(x,x), _(x,x), _(x,x), _(SM,x), _(x,x), _(x,x), _(x,x), + /* 2078 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 2080 */ _(x,x), _(x,x), _(SM,x), _(SM,x), _(SM,x), _(x,x), _(x,x), _(x,x), + +#define indic_offset_0xa800u 2576 /* 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), + /* A808 */ _(C,x), _(C,x), _(C,x), _(Bi,T), _(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), @@ -525,13 +543,13 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* Saurashtra */ - /* A880 */ _(Bi,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), + /* A880 */ _(Bi,R), _(Vs,R), _(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), /* A890 */ _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* A898 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* A8A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* A8A8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* A8B0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(CF,x), _(M,R), _(M,R), _(M,R), + /* A8B0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(CF,R), _(M,R), _(M,R), _(M,R), /* 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), @@ -540,9 +558,9 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* Devanagari Extended */ - /* 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), + /* A8E0 */ _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), + /* A8E8 */ _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), + /* A8F0 */ _(Ca,T), _(Ca,T), _(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 */ @@ -552,15 +570,15 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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), + /* A928 */ _(Vo,x), _(Vo,x), _(Vo,x), _(TM,B), _(TM,B), _(TM,B), _(x,x), _(x,x), /* 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), _(PK,R), _(x,x), _(x,x), _(x,x), _(x,x), + /* A948 */ _(M,B), _(M,B), _(M,T), _(M,B), _(M,B), _(M,B), _(M,B), _(CF,T), + /* A950 */ _(CF,T), _(CF,T), _(CF,R), _(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), /* 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), @@ -569,14 +587,14 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* Javanese */ - /* A980 */ _(Bi,x), _(Bi,x),_(CSR,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), + /* A980 */ _(Bi,T), _(Bi,T),_(CSR,T), _(Vs,R), _(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), /* A9A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* A9A8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* A9B0 */ _(C,x), _(C,x), _(C,x), _(N,x), _(M,R), _(M,R), _(M,T), _(M,T), - /* A9B8 */ _(M,B), _(M,B), _(M,L), _(M,L), _(M,T), _(CS,x), _(CM,x), _(CM,x), + /* A9B0 */ _(C,x), _(C,x), _(C,x), _(N,T), _(M,R), _(M,R), _(M,T), _(M,T), + /* A9B8 */ _(M,B), _(M,B), _(M,L), _(M,L), _(M,T), _(CS,R), _(CM,R), _(CM,R), /* 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 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), @@ -584,7 +602,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* Myanmar Extended-B */ - /* A9E0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(C,x), + /* A9E0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(M,T), _(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), @@ -597,10 +615,10 @@ 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,L), _(CM,x), _(CM,x), _(x,x), + /* AA30 */ _(M,L), _(M,T), _(M,B), _(CM,R), _(CM,L), _(CM,B), _(CM,B), _(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), + /* AA40 */ _(CF,x), _(CF,x), _(CF,x), _(CF,T), _(CF,x), _(CF,x), _(CF,x), _(CF,x), + /* AA48 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,T), _(CF,R), _(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), @@ -609,7 +627,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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), _(TM,x), _(TM,x), _(C,x), _(C,x), + /* AA78 */ _(x,x), _(x,x), _(C,x), _(TM,R), _(TM,T), _(TM,R), _(C,x), _(C,x), /* Tai Viet */ @@ -620,8 +638,8 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* AAA0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* AAA8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* AAB0 */ _(M,T), _(M,R), _(M,T), _(M,T), _(M,B),_(M,VOL),_(M,VOL), _(M,T), - /* AAB8 */ _(M,T),_(M,VOL), _(M,R),_(M,VOL),_(M,VOL), _(M,R), _(M,T), _(TM,x), - /* AAC0 */ _(TL,x), _(TM,x), _(TL,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* AAB8 */ _(M,T),_(M,VOL), _(M,R),_(M,VOL),_(M,VOL), _(M,R), _(M,T), _(TM,T), + /* AAC0 */ _(TL,x), _(TM,T), _(TL,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* AAC8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 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), @@ -630,9 +648,9 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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), _(IS,x), _(x,x), + /* AAF0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(Vs,R), _(IS,x), _(x,x), -#define indic_offset_0xabc0u 3272 +#define indic_offset_0xabc0u 3336 /* Meetei Mayek */ @@ -642,31 +660,31 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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), _(PK,B), _(x,x), _(x,x), + /* ABE8 */ _(M,B), _(M,R), _(M,R), _(x,x), _(TM,R), _(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_0x10a00u 3336 +#define indic_offset_0x10a00u 3400 /* 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), + /* 10A08 */ _(x,x), _(x,x), _(x,x), _(x,x), _(M,B), _(M,B), _(Bi,B), _(Vs,T), /* 10A10 */ _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), /* 10A18 */ _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 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), _(IS,x), + /* 10A38 */ _(N,T), _(N,B), _(N,B), _(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_0x11000u 3408 +#define indic_offset_0x11000u 3472 /* Brahmi */ - /* 11000 */ _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), + /* 11000 */ _(Bi,R), _(Bi,T), _(Vs,R),_(CWS,x),_(CWS,x), _(VI,x), _(VI,x), _(VI,x), /* 11008 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), /* 11010 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 11018 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -685,21 +703,21 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* Kaithi */ - /* 11080 */ _(Bi,x), _(Bi,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), + /* 11080 */ _(Bi,T), _(Bi,T), _(Vs,R), _(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), /* 11090 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 11098 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 110A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 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), + /* 110B8 */ _(M,R), _(V,B), _(N,B), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), -#define indic_offset_0x11100u 3600 +#define indic_offset_0x11100u 3664 /* Chakma */ - /* 11100 */ _(Bi,x), _(Bi,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), + /* 11100 */ _(Bi,T), _(Bi,T), _(Vs,T), _(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), /* 11110 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 11118 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -716,12 +734,12 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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), + /* 11170 */ _(C,x), _(C,x), _(C,x), _(N,B), _(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 */ _(Bi,x), _(Bi,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), + /* 11180 */ _(Bi,T), _(Bi,T), _(Vs,R), _(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), /* 11190 */ _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 11198 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), @@ -729,8 +747,8 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 111A8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 111B0 */ _(C,x), _(C,x), _(C,x), _(M,R), _(M,L), _(M,R), _(M,B), _(M,B), /* 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), + /* 111C0 */ _(V,R), _(A,x),_(CPrf,x),_(CPrf,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 111C8 */ _(x,x), _(x,x), _(N,x), _(M,T), _(M,B), _(x,x), _(x,x), _(x,x), /* 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), @@ -749,10 +767,19 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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), + /* 11230 */ _(M,T), _(M,T), _(M,TR), _(M,TR), _(Bi,T), _(V,R), _(N,T), _(GM,T), + +#define indic_offset_0x11280u 3976 -#define indic_offset_0x112b0u 3912 + /* Multani */ + + /* 11280 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(x,x), + /* 11288 */ _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x), + /* 11290 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11298 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x), + /* 112A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 112A8 */ _(C,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* Khudawadi */ @@ -761,15 +788,15 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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), + /* 112D8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(Bi,T), /* 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), + /* 112E8 */ _(M,T), _(N,B), _(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), + /* 11300 */ _(Bi,x), _(Bi,T), _(Bi,R), _(Vs,R), _(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), @@ -781,11 +808,11 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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), + /* 11360 */ _(VI,x), _(VI,x), _(M,R), _(M,R), _(x,x), _(x,x), _(Ca,T), _(Ca,T), + /* 11368 */ _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(x,x), _(x,x), _(x,x), + /* 11370 */ _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(x,x), _(x,x), _(x,x), -#define indic_offset_0x11480u 4112 +#define indic_offset_0x11480u 4224 /* Tirhuta */ @@ -797,13 +824,13 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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), + /* 114B8 */ _(M,B), _(M,L), _(M,T), _(M,TL), _(M,LR), _(M,R), _(M,LR), _(Bi,T), + /* 114C0 */ _(Bi,T), _(Vs,R), _(V,B), _(N,B), _(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_0x11580u 4208 +#define indic_offset_0x11580u 4320 /* Siddham */ @@ -815,11 +842,15 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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_0x11600u 4280 - + /* 115B8 */ _(M,L), _(M,TL), _(M,LR),_(M,TLR), _(Bi,T), _(Bi,T), _(Vs,R), _(V,B), + /* 115C0 */ _(N,B), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 115C8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 115D0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 115D8 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), + /* 115E0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 115E8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 115F0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 115F8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* Modi */ @@ -830,8 +861,8 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 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), + /* 11638 */ _(M,B), _(M,T), _(M,T), _(M,R), _(M,R), _(Bi,T), _(Vs,R), _(V,B), + /* 11640 */ _(M,T), _(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), @@ -847,13 +878,30 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = { /* 11690 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 11698 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), /* 116A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), - /* 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), + /* 116A8 */ _(C,x), _(C,x), _(C,x), _(Bi,T), _(Vs,R), _(M,T), _(M,L), _(M,R), + /* 116B0 */ _(M,B), _(M,B), _(M,T), _(M,T), _(M,T), _(M,T), _(V,R), _(N,B), /* 116B8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), /* 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 items: 4488; occupancy: 73% */ + /* 116D0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 116D8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 116E0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 116E8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 116F0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + /* 116F8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), + + /* Ahom */ + + /* 11700 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11708 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11710 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), + /* 11718 */ _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(CM,B), _(CM,x), _(CM,T), + /* 11720 */ _(M,R), _(M,R), _(M,T), _(M,T), _(M,B), _(M,B), _(M,L), _(M,T), + /* 11728 */ _(M,B), _(M,T), _(M,T), _(PK,T), _(x,x), _(x,x), _(x,x), _(x,x), + /* 11730 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), + /* 11738 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), + +}; /* Table items: 4768; occupancy: 72% */ INDIC_TABLE_ELEMENT_TYPE hb_indic_get_categories (hb_codepoint_t u) @@ -862,7 +910,7 @@ hb_indic_get_categories (hb_codepoint_t u) { case 0x0u: if (hb_in_range (u, 0x0028u, 0x003Fu)) return indic_table[u - 0x0028u + indic_offset_0x0028u]; - if (hb_in_range (u, 0x00D0u, 0x00D7u)) return indic_table[u - 0x00D0u + indic_offset_0x00d0u]; + if (hb_in_range (u, 0x00B0u, 0x00D7u)) return indic_table[u - 0x00B0u + indic_offset_0x00b0u]; if (hb_in_range (u, 0x0900u, 0x0DF7u)) return indic_table[u - 0x0900u + indic_offset_0x0900u]; if (unlikely (u == 0x00A0u)) return _(CP,x); break; @@ -872,11 +920,12 @@ hb_indic_get_categories (hb_codepoint_t u) if (hb_in_range (u, 0x1700u, 0x17EFu)) return indic_table[u - 0x1700u + indic_offset_0x1700u]; if (hb_in_range (u, 0x1900u, 0x1A9Fu)) return indic_table[u - 0x1900u + indic_offset_0x1900u]; if (hb_in_range (u, 0x1B00u, 0x1C4Fu)) return indic_table[u - 0x1B00u + indic_offset_0x1b00u]; - if (hb_in_range (u, 0x1CD0u, 0x1CF7u)) return indic_table[u - 0x1CD0u + indic_offset_0x1cd0u]; + if (hb_in_range (u, 0x1CD0u, 0x1CFFu)) return indic_table[u - 0x1CD0u + indic_offset_0x1cd0u]; break; case 0x2u: if (hb_in_range (u, 0x2008u, 0x2017u)) return indic_table[u - 0x2008u + indic_offset_0x2008u]; + if (hb_in_range (u, 0x2070u, 0x2087u)) return indic_table[u - 0x2070u + indic_offset_0x2070u]; if (unlikely (u == 0x25CCu)) return _(CP,x); break; @@ -892,10 +941,9 @@ hb_indic_get_categories (hb_codepoint_t u) case 0x11u: if (hb_in_range (u, 0x11000u, 0x110BFu)) return indic_table[u - 0x11000u + indic_offset_0x11000u]; if (hb_in_range (u, 0x11100u, 0x11237u)) return indic_table[u - 0x11100u + indic_offset_0x11100u]; - if (hb_in_range (u, 0x112B0u, 0x11377u)) return indic_table[u - 0x112B0u + indic_offset_0x112b0u]; + if (hb_in_range (u, 0x11280u, 0x11377u)) return indic_table[u - 0x11280u + indic_offset_0x11280u]; if (hb_in_range (u, 0x11480u, 0x114DFu)) return indic_table[u - 0x11480u + indic_offset_0x11480u]; - if (hb_in_range (u, 0x11580u, 0x115C7u)) return indic_table[u - 0x11580u + indic_offset_0x11580u]; - if (hb_in_range (u, 0x11600u, 0x116CFu)) return indic_table[u - 0x11600u + indic_offset_0x11600u]; + if (hb_in_range (u, 0x11580u, 0x1173Fu)) return indic_table[u - 0x11580u + indic_offset_0x11580u]; break; default: @@ -914,11 +962,14 @@ hb_indic_get_categories (hb_codepoint_t u) #undef ISC_CD #undef ISC_CF #undef ISC_CHL +#undef ISC_CK #undef ISC_CM #undef ISC_CP #undef ISC_CPR +#undef ISC_CPrf #undef ISC_CS #undef ISC_CSR +#undef ISC_CWS #undef ISC_GM #undef ISC_IS #undef ISC_ZWJ @@ -930,6 +981,7 @@ hb_indic_get_categories (hb_codepoint_t u) #undef ISC_x #undef ISC_PK #undef ISC_RS +#undef ISC_SM #undef ISC_TL #undef ISC_TM #undef ISC_V diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc index 53548976a9c..880aa918f89 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc @@ -176,24 +176,8 @@ set_indic_properties (hb_glyph_info_t &info) * Re-assign category */ - - /* The spec says U+0952 is OT_A. However, testing shows that Uniscribe - * treats a whole bunch of characters similarly. - * TESTS: For example, for U+0951: - * U+092E,U+0947,U+0952 - * U+092E,U+0952,U+0947 - * U+092E,U+0947,U+0951 - * U+092E,U+0951,U+0947 - * U+092E,U+0951,U+0952 - * U+092E,U+0952,U+0951 - */ - if (unlikely (hb_in_ranges (u, 0x0951u, 0x0952u, - 0x1CD0u, 0x1CD2u, - 0x1CD4u, 0x1CE1u) || - u == 0x1CF4u)) - cat = OT_A; /* The following act more like the Bindus. */ - else if (unlikely (hb_in_range (u, 0x0953u, 0x0954u))) + if (unlikely (hb_in_range (u, 0x0953u, 0x0954u))) cat = OT_SM; /* The following act like consonants. */ else if (unlikely (hb_in_ranges (u, 0x0A72u, 0x0A73u, @@ -216,15 +200,12 @@ set_indic_properties (hb_glyph_info_t &info) cat = OT_Symbol; ASSERT_STATIC ((int) INDIC_SYLLABIC_CATEGORY_AVAGRAHA == OT_Symbol); } - else if (unlikely (hb_in_range (u, 0x17CDu, 0x17D1u) || - u == 0x17CBu || u == 0x17D3u || u == 0x17DDu)) /* Khmer Various signs */ + else if (unlikely (u == 0x17DDu)) /* https://github.com/roozbehp/unicode-data/issues/2 */ { - /* These are like Top Matras. */ cat = OT_M; pos = POS_ABOVE_C; } else if (unlikely (u == 0x17C6u)) cat = OT_N; /* Khmer Bindu doesn't like to be repositioned. */ - else if (unlikely (u == 0x17D2u)) cat = OT_Coeng; /* Khmer coeng */ else if (unlikely (hb_in_range (u, 0x2010u, 0x2011u))) cat = OT_PLACEHOLDER; else if (unlikely (u == 0x25CCu)) cat = OT_DOTTEDCIRCLE; @@ -557,8 +538,15 @@ data_create_indic (const hb_ot_shape_plan_t *plan) indic_plan->virama_glyph = (hb_codepoint_t) -1; /* Use zero-context would_substitute() matching for new-spec of the main - * Indic scripts, and scripts with one spec only, but not for old-specs. */ - bool zero_context = !indic_plan->is_old_spec; + * Indic scripts, and scripts with one spec only, but not for old-specs. + * The new-spec for all dual-spec scripts says zero-context matching happens. + * + * However, testing with Malayalam shows that old and new spec both allow + * context. Testing with Bengali new-spec however shows that it doesn't. + * So, the heuristic here is the way it is. It should *only* be changed, + * as we discover more cases of what Windows does. DON'T TOUCH OTHERWISE. + */ + bool zero_context = !indic_plan->is_old_spec && plan->props.script != HB_SCRIPT_MALAYALAM; indic_plan->rphf.init (&plan->map, HB_TAG('r','p','h','f'), zero_context); indic_plan->pref.init (&plan->map, HB_TAG('p','r','e','f'), zero_context); indic_plan->blwf.init (&plan->map, HB_TAG('b','l','w','f'), zero_context); @@ -1348,6 +1336,25 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan, break; } } + /* For Malayalam, skip over unformed below- (but NOT post-) forms. */ + if (buffer->props.script == HB_SCRIPT_MALAYALAM) + { + for (unsigned int i = base + 1; i < end; i++) + { + while (i < end && is_joiner (info[i])) + i++; + if (i == end || !is_halant_or_coeng (info[i])) + break; + i++; /* Skip halant. */ + while (i < end && is_joiner (info[i])) + i++; + if (i < end && is_consonant (info[i]) && info[i].indic_position() == POS_BELOW_C) + { + base = i; + info[base].indic_position() = POS_BASE_C; + } + } + } if (start < base && info[base].indic_position() > POS_BASE_C) base--; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar.cc index 00368d8e474..4d3446892ca 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar.cc @@ -199,6 +199,10 @@ set_myanmar_properties (hb_glyph_info_t &info) cat = (indic_category_t) OT_A; break; + case 0x1039u: + cat = (indic_category_t) OT_H; + break; + case 0x103Au: cat = (indic_category_t) OT_As; break; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-private.hh index 80de4f316e4..b5da69b3fc3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-private.hh @@ -44,9 +44,7 @@ enum hb_ot_shape_zero_width_marks_type_t { // HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_EARLY, HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE, HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_EARLY, - HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE, - - HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT = HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE + HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-thai.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-thai.cc index 6556a325173..bd7c5e14274 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-thai.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-thai.cc @@ -377,6 +377,6 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_thai = NULL, /* decompose */ NULL, /* compose */ NULL, /* setup_masks */ - HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT, + HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE, false,/* fallback_position */ }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-tibetan.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-tibetan.cc index 9f09287f620..03bcfee3365 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-tibetan.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-tibetan.cc @@ -57,6 +57,6 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_tibetan = NULL, /* decompose */ NULL, /* compose */ NULL, /* setup_masks */ - HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT, + HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE, true, /* fallback_position */ }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc index a1b63d5b05b..0f667833916 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc @@ -285,6 +285,9 @@ static void setup_topographical_masks (const hb_ot_shape_plan_t *plan, hb_buffer_t *buffer) { + const use_shape_plan_t *use_plan = (const use_shape_plan_t *) plan->data; + if (use_plan->arabic_plan) + return; ASSERT_STATIC (INIT < 4 && ISOL < 4 && MEDI < 4 && FINA < 4); hb_mask_t masks[4], all_masks = 0; @@ -360,7 +363,7 @@ clear_substitution_flags (const hb_ot_shape_plan_t *plan, hb_glyph_info_t *info = buffer->info; unsigned int count = buffer->len; for (unsigned int i = 0; i < count; i++) - _hb_glyph_info_clear_substituted_and_ligated_and_multiplied (&info[i]); + _hb_glyph_info_clear_substituted (&info[i]); } static void @@ -405,6 +408,12 @@ record_pref (const hb_ot_shape_plan_t *plan, } } +static inline bool +is_halant (const hb_glyph_info_t &info) +{ + return info.use_category() == USE_H && !_hb_glyph_info_ligated (&info); +} + static void reorder_syllable (hb_buffer_t *buffer, unsigned int start, unsigned int end) { @@ -420,7 +429,6 @@ reorder_syllable (hb_buffer_t *buffer, unsigned int start, unsigned int end) hb_glyph_info_t *info = buffer->info; -#define HALANT_FLAGS FLAG(USE_H) #define BASE_FLAGS (FLAG (USE_B) | FLAG (USE_GB) | FLAG (USE_IV)) /* Move things forward. */ @@ -428,12 +436,12 @@ reorder_syllable (hb_buffer_t *buffer, unsigned int start, unsigned int end) { /* Got a repha. Reorder it to after first base, before first halant. */ for (unsigned int i = start + 1; i < end; i++) - if (FLAG_UNSAFE (info[i].use_category()) & (HALANT_FLAGS | BASE_FLAGS)) + if ((FLAG_UNSAFE (info[i].use_category()) & (BASE_FLAGS)) || is_halant (info[i])) { /* If we hit a halant, move before it; otherwise it's a base: move to it's * place, and shift things in between backward. */ - if (info[i].use_category() == USE_H) + if (is_halant (info[i])) i--; buffer->merge_clusters (start, i + 1); @@ -450,11 +458,11 @@ reorder_syllable (hb_buffer_t *buffer, unsigned int start, unsigned int end) for (unsigned int i = start; i < end; i++) { uint32_t flag = FLAG_UNSAFE (info[i].use_category()); - if (flag & (HALANT_FLAGS | BASE_FLAGS)) + if ((flag & (BASE_FLAGS)) || is_halant (info[i])) { - /* If we hit a halant, move before it; otherwise it's a base: move to it's + /* If we hit a halant, move after it; otherwise it's a base: move to it's * place, and shift things in between backward. */ - if (info[i].use_category() == USE_H) + if (is_halant (info[i])) j = i + 1; else j = i; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag.cc index a2e5728fcd8..01ce92038fa 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag.cc @@ -355,7 +355,6 @@ static const LangTag ot_languages[] = { {"hay", HB_TAG('H','A','Y',' ')}, /* Haya */ {"haz", HB_TAG('H','A','Z',' ')}, /* Hazaragi */ {"he", HB_TAG('I','W','R',' ')}, /* Hebrew */ - {"hz", HB_TAG('H','E','R',' ')}, /* Herero */ {"hi", HB_TAG('H','I','N',' ')}, /* Hindi */ {"hil", HB_TAG('H','I','L',' ')}, /* Hiligaynon */ {"hnd", HB_TAG('H','N','D',' ')}, /* [Southern] Hindko */ @@ -601,8 +600,8 @@ static const LangTag ot_languages[] = { {"sah", HB_TAG('Y','A','K',' ')}, /* Yakut */ {"sas", HB_TAG('S','A','S',' ')}, /* Sasak */ {"sat", HB_TAG('S','A','T',' ')}, /* Santali */ - {"sck", HB_TAG('S','A','D',' ')}, /* Sadri */ {"sc", HB_TAG('S','R','D',' ')}, /* Sardinian [macrolanguage] */ + {"sck", HB_TAG('S','A','D',' ')}, /* Sadri */ {"scn", HB_TAG('S','C','N',' ')}, /* Sicilian */ {"sco", HB_TAG('S','C','O',' ')}, /* Scots */ {"scs", HB_TAG('S','L','A',' ')}, /* [North] Slavey */ @@ -690,8 +689,8 @@ static const LangTag ot_languages[] = { {"uzs", HB_TAG('U','Z','B',' ')}, /* Southern Uzbek */ {"ve", HB_TAG('V','E','N',' ')}, /* Venda */ {"vec", HB_TAG('V','E','C',' ')}, /* Venetian */ - {"vls", HB_TAG('F','L','E',' ')}, /* Vlaams */ {"vi", HB_TAG('V','I','T',' ')}, /* Vietnamese */ + {"vls", HB_TAG('F','L','E',' ')}, /* Vlaams */ {"vmw", HB_TAG('M','A','K',' ')}, /* Makhuwa */ {"vo", HB_TAG('V','O','L',' ')}, /* Volapük */ {"vro", HB_TAG('V','R','O',' ')}, /* Võro */ @@ -700,9 +699,9 @@ static const LangTag ot_languages[] = { {"wbm", HB_TAG('W','A',' ',' ')}, /* Wa */ {"wbr", HB_TAG('W','A','G',' ')}, /* Wagdi */ {"wle", HB_TAG('S','I','G',' ')}, /* Wolane */ + {"wo", HB_TAG('W','L','F',' ')}, /* Wolof */ {"wry", HB_TAG('M','A','W',' ')}, /* Merwari */ {"wtm", HB_TAG('W','T','M',' ')}, /* Mewati */ - {"wo", HB_TAG('W','L','F',' ')}, /* Wolof */ {"xal", HB_TAG('K','L','M',' ')}, /* Kalmyk */ {"xh", HB_TAG('X','H','S',' ')}, /* Xhosa */ {"xog", HB_TAG('X','O','G',' ')}, /* Soga */ @@ -928,4 +927,27 @@ hb_ot_tag_to_language (hb_tag_t tag) } } +static inline void +test_langs_sorted (void) +{ + for (unsigned int i = 1; i < ARRAY_LENGTH (ot_languages); i++) + { + int c = lang_compare_first_component (ot_languages[i-1].language, ot_languages[i].language); + if (c >= 0) + { + fprintf (stderr, "ot_languages not sorted at index %d: %s %d %s\n", + i, ot_languages[i-1].language, c, ot_languages[i].language); + abort(); + } + } +} + +#ifdef MAIN +int +main (void) +{ + test_langs_sorted (); + return 0; +} +#endif diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-private.hh index 5de1a2ba6d0..7afb25803fb 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-private.hh @@ -1005,5 +1005,7 @@ hb_options (void) return _hb_options.opts; } +/* Size signifying variable-sized array */ +#define VAR 1 #endif /* HB_PRIVATE_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.cc index 8a985839891..352d42c8357 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.cc @@ -210,13 +210,15 @@ parse_one_feature (const char **pp, const char *end, hb_feature_t *feature) /** * hb_feature_from_string: * @str: (array length=len) (element-type uint8_t): a string to parse - * @len: length of @str, or -1 if string is nul-terminated + * @len: length of @str, or -1 if string is %NULL terminated * @feature: (out): the #hb_feature_t to initialize with the parsed values * - * Parses a string into a #hb_feature_t. If @len is -1 then @str is - * %NULL-terminated. + * Parses a string into a #hb_feature_t. * - * Return value: %TRUE if @str is successfully parsed, %FALSE otherwise + * TODO: document the syntax here. + * + * Return value: + * %true if @str is successfully parsed, %false otherwise. * * Since: 0.9.5 **/ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper-list.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper-list.hh index 6c537d49215..b0835d31ab1 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper-list.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper-list.hh @@ -46,6 +46,9 @@ HB_SHAPER_IMPLEMENT (ot) /* <--- This is our main OpenType shaper. */ #ifdef HAVE_UNISCRIBE HB_SHAPER_IMPLEMENT (uniscribe) #endif +#ifdef HAVE_DIRECTWRITE +HB_SHAPER_IMPLEMENT (directwrite) +#endif #ifdef HAVE_CORETEXT HB_SHAPER_IMPLEMENT (coretext) #endif diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.h index 33b68aa0d85..6a15cb00cbc 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.h @@ -405,6 +405,8 @@ hb_unicode_funcs_set_decompose_compatibility_func (hb_unicode_funcs_t *ufuncs, /* accessors */ /** + * hb_unicode_combining_class: + * * Since: 0.9.2 **/ HB_EXTERN hb_unicode_combining_class_t @@ -412,6 +414,8 @@ hb_unicode_combining_class (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); /** + * hb_unicode_eastasian_width: + * * Since: 0.9.2 **/ HB_EXTERN unsigned int @@ -419,6 +423,8 @@ hb_unicode_eastasian_width (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); /** + * hb_unicode_general_category: + * * Since: 0.9.2 **/ HB_EXTERN hb_unicode_general_category_t @@ -426,6 +432,8 @@ hb_unicode_general_category (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); /** + * hb_unicode_mirroring: + * * Since: 0.9.2 **/ HB_EXTERN hb_codepoint_t @@ -433,6 +441,8 @@ hb_unicode_mirroring (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); /** + * hb_unicode_script: + * * Since: 0.9.2 **/ HB_EXTERN hb_script_t @@ -440,6 +450,8 @@ hb_unicode_script (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); /** + * hb_unicode_compose: + * * Since: 0.9.2 **/ HB_EXTERN hb_bool_t @@ -449,6 +461,8 @@ hb_unicode_compose (hb_unicode_funcs_t *ufuncs, hb_codepoint_t *ab); /** + * hb_unicode_decompose: + * * Since: 0.9.2 **/ HB_EXTERN hb_bool_t @@ -458,6 +472,8 @@ hb_unicode_decompose (hb_unicode_funcs_t *ufuncs, hb_codepoint_t *b); /** + * hb_unicode_decompose_compatibility: + * * Since: 0.9.2 **/ HB_EXTERN unsigned int diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc index 01be0cc846b..7fda6788b6a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc @@ -919,7 +919,7 @@ retry: if (unlikely (items[i].a.fNoGlyphIndex)) FAIL ("ScriptShapeOpenType() set fNoGlyphIndex"); - if (unlikely (hr == E_OUTOFMEMORY)) + if (unlikely (hr == E_OUTOFMEMORY || hr == E_NOT_SUFFICIENT_BUFFER)) { if (unlikely (!buffer->ensure (buffer->allocated * 2))) FAIL ("Buffer resize failed"); @@ -1019,7 +1019,7 @@ retry: hb_glyph_position_t *pos = &buffer->pos[i]; /* TODO vertical */ - pos->x_advance = x_mult * info->mask; + pos->x_advance = x_mult * (int32_t) info->mask; pos->x_offset = x_mult * (backward ? -info->var1.i32 : info->var1.i32); pos->y_offset = y_mult * info->var2.i32; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/test.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/test.cc index a8fe046f34c..0c90f8ff428 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/test.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/test.cc @@ -120,7 +120,7 @@ main (int argc, char **argv) info->cluster, info->codepoint, pos->x_offset, - pos->x_offset, + pos->y_offset, pos->x_advance, pos->y_advance); diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac index 3a477952ae6..ebe09c36f73 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], [1.1.2]) +m4_define([harfbuzz_version], [1.1.3]) -- cgit v1.2.3