diff options
author | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2017-02-25 22:30:01 +0000 |
---|---|---|
committer | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2017-02-25 22:30:01 +0000 |
commit | 2afa8cf572f1ad67bf6b9646afa31bfef51138e1 (patch) | |
tree | 9e17b10dff12b7ffef5430beeea04777fcc1c5b1 /Build/source/libs | |
parent | ff7842d1f621779933e2ba4616e2e3ddfc6323c6 (diff) |
harfbuzz 1.4.3
git-svn-id: svn://tug.org/texlive/trunk@43339 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs')
38 files changed, 673 insertions, 83 deletions
diff --git a/Build/source/libs/README b/Build/source/libs/README index 1744dfa5b04..59f1ca7d348 100644 --- a/Build/source/libs/README +++ b/Build/source/libs/README @@ -24,7 +24,7 @@ gmp 6.1.2 - checked 16dec16 graphite2 1.3.9 - checked 13nov16 http://sourceforge.net/projects/silgraphite/files/graphite2/ -harfbuzz 1.4.2 - checked 25jan17 +harfbuzz 1.4.3 - checked 25feb17 http://www.freedesktop.org/software/harfbuzz/release/ icu 57.1 (release) - checked 27mar16 diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog index e0b2d05d367..7876a29e2ab 100644 --- a/Build/source/libs/harfbuzz/ChangeLog +++ b/Build/source/libs/harfbuzz/ChangeLog @@ -1,3 +1,8 @@ +2017-02-25 Akira Kakuto <kakuto@fuk.kindai.ac.jp> + + Import harfbuzz-1.4.3. + * Makefile.am, version.ac: Adjusted. + 2017-01-25 Akira Kakuto <kakuto@fuk.kindai.ac.jp> Import harfbuzz-1.4.2. diff --git a/Build/source/libs/harfbuzz/Makefile.am b/Build/source/libs/harfbuzz/Makefile.am index d38a4257421..6cbd6a44c82 100644 --- a/Build/source/libs/harfbuzz/Makefile.am +++ b/Build/source/libs/harfbuzz/Makefile.am @@ -55,6 +55,7 @@ libharfbuzz_a_SOURCES = \ @HARFBUZZ_TREE@/src/hb-ot-name-table.hh \ @HARFBUZZ_TREE@/src/hb-ot-os2-table.hh \ @HARFBUZZ_TREE@/src/hb-ot-post-table.hh \ + @HARFBUZZ_TREE@/src/hb-ot-var-mvar-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 1bda3bba1ce..fff7ec5f910 100644 --- a/Build/source/libs/harfbuzz/Makefile.in +++ b/Build/source/libs/harfbuzz/Makefile.in @@ -669,6 +669,7 @@ libharfbuzz_a_SOURCES = @HARFBUZZ_TREE@/src/hb-atomic-private.hh \ @HARFBUZZ_TREE@/src/hb-ot-name-table.hh \ @HARFBUZZ_TREE@/src/hb-ot-os2-table.hh \ @HARFBUZZ_TREE@/src/hb-ot-post-table.hh \ + @HARFBUZZ_TREE@/src/hb-ot-var-mvar-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/TLpatches/ChangeLog b/Build/source/libs/harfbuzz/TLpatches/ChangeLog index dad487f7a86..fd5b26cd274 100644 --- a/Build/source/libs/harfbuzz/TLpatches/ChangeLog +++ b/Build/source/libs/harfbuzz/TLpatches/ChangeLog @@ -1,3 +1,8 @@ +2017-02-25 Akira Kakuto <kakuto@fuk.kindai.ac.jp> + + Imported harfbuzz-1.4.3 source tree from: + http://www.freedesktop.org/software/harfbuzz/release/ + 2017-01-25 Akira Kakuto <kakuto@fuk.kindai.ac.jp> Imported harfbuzz-1.4.2 source tree from: diff --git a/Build/source/libs/harfbuzz/TLpatches/TL-Changes b/Build/source/libs/harfbuzz/TLpatches/TL-Changes index be2b4ac1d4d..4560aa752a8 100644 --- a/Build/source/libs/harfbuzz/TLpatches/TL-Changes +++ b/Build/source/libs/harfbuzz/TLpatches/TL-Changes @@ -1,4 +1,4 @@ -Changes applied to the harfbuzz-1.4.2/ tree as obtained from: +Changes applied to the harfbuzz-1.4.3/ tree as obtained from: http://www.freedesktop.org/software/harfbuzz/release/ Removed: diff --git a/Build/source/libs/harfbuzz/configure b/Build/source/libs/harfbuzz/configure index 9d2284a1740..510e2866316 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.4.2. +# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 1.4.3. # # Report bugs to <tex-k@tug.org>. # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='harfbuzz (TeX Live)' PACKAGE_TARNAME='harfbuzz--tex-live-' -PACKAGE_VERSION='1.4.2' -PACKAGE_STRING='harfbuzz (TeX Live) 1.4.2' +PACKAGE_VERSION='1.4.3' +PACKAGE_STRING='harfbuzz (TeX Live) 1.4.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.4.2 to adapt to many kinds of systems. +\`configure' configures harfbuzz (TeX Live) 1.4.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.4.2:";; + short | recursive ) echo "Configuration of harfbuzz (TeX Live) 1.4.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.4.2 +harfbuzz (TeX Live) configure 1.4.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.4.2, which was +It was created by harfbuzz (TeX Live) $as_me 1.4.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.4.2' + VERSION='1.4.3' cat >>confdefs.h <<_ACEOF @@ -4206,8 +4206,8 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags HB_VERSION_MAJOR=1 HB_VERSION_MINOR=4 -HB_VERSION_MICRO=2 -HB_VERSION=1.4.2 +HB_VERSION_MICRO=3 +HB_VERSION=1.4.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.4.2, which was +This file was extended by harfbuzz (TeX Live) $as_me 1.4.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.4.2 +harfbuzz (TeX Live) config.status 1.4.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog index 6aa78766bb5..12e9995315f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog +++ b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog @@ -1,3 +1,313 @@ +commit a657f23ca31237d652b5c101ed24194b6aeadaf8 +Author: Dominik Röttsches <d-r@roettsches.de> +Date: Mon Feb 20 21:52:07 2017 +0200 + + Blacklist another instance of Padauk (#419) + + In https://crbug.com/681813 another instance of Padauk was identified + triggering collapsed glyphs. Blacklist this version by patching + hb-ot-layout.cc to print out gdef, gsub, and gpos table length, then + adding those to the list of blacklisted versions. + + src/hb-ot-layout.cc | 3 +++ + 1 file changed, 3 insertions(+) + +commit 70202983f57fe85b2d3b56a9c205effeee66222d +Author: ebraminio <ebrahim@gnu.org> +Date: Sat Feb 18 10:37:36 2017 +0330 + + [ci] Disable vcpkg freetype installation and fix Appveyor CI (#422) + + appveyor.yml | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 44f7d6ecde9bf7427a05cbe73ed5d668b8a72b2a +Author: jfkthame <jfkthame@gmail.com> +Date: Fri Feb 17 03:03:24 2017 +0000 + + Guard against underflow when adjusting length (#421) + + * Guard against underflow when adjusting length + + With the fuzz-testcase in mozilla bug 1295299, we end up with a + recursed lookup that removes 3 items, when `match_positions[idx]` + is 0, which results in (unsigned) `end` wrapping to a huge value. + + Making `end` a signed int is probably the simplest route to a fix. + + Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1295299. + + * Add testcase for #421. + + src/hb-ot-layout-gsubgpos-private.hh | 6 +++--- + .../sha1sum/558661aa659912f4d30ecd27bd09835171a8e2b0.ttf | Bin 0 -> + 1358 bytes + test/shaping/tests/fuzzed.tests | 1 + + 3 files changed, 4 insertions(+), 3 deletions(-) + +commit 45766b673f427bb791c9d5886cadedfac0447066 +Author: jfkthame <jfkthame@gmail.com> +Date: Thu Feb 16 17:40:21 2017 +0000 + + [indic] Add support for Grantha marks that may be used in Tamil to + th… (#401) + + * [indic] Add support for Grantha marks that may be used in Tamil + to the Indic table. + + See https://bugzilla.mozilla.org/show_bug.cgi?id=1331339. + + Testcase: U+0BA4,U+0BC6,U+1133c,U+0BAA,U+1133c,U+0BC6,U+1133c + + * [indic] Add test for Grantha nukta that is allowed in Tamil by + ScriptExtensions.txt + + src/hb-ot-shape-complex-indic-table.cc | 7 +++++++ + .../sha1sum/3493e92eaded2661cadde752a39f9d58b11f0326.ttf | Bin 0 -> + 1400 bytes + test/shaping/tests/indic-script-extensions.tests | 1 + + 3 files changed, 8 insertions(+) + +commit d4bb52b9fd8a5bc4af13752ea3e464eccfe3223b +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Feb 9 14:13:25 2017 -0800 + + Unbreak hb-coretext build + + src/hb-coretext.cc | 3 +++ + 1 file changed, 3 insertions(+) + +commit c8dfed8e1ee4ab64b6936f5c8561db0666e37647 +Merge: 7c47474f b435c7c4 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Feb 8 14:36:18 2017 -0800 + + Merge pull request #357 from khaledhosny/graphite-scale + + [graphite] Fix shaping with varying font sizes + +commit 7c47474f209bdf84cf87844c277ed711cad78196 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Feb 8 14:33:28 2017 -0800 + + Set LC_ALL instead of LANG when creating harfbuzz.def + + Hopefully fixes Travis faliure? + https://github.com/behdad/harfbuzz/pull/413#issuecomment-278481882 + https://travis-ci.org/khaledhosny/harfbuzz/jobs/199785332#L1065 + + src/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ffde3c9f9effcd2b47f5fd76df45551e68c0b1ec +Author: Philip Withnall <philip@tecnocode.co.uk> +Date: Wed Feb 8 21:56:57 2017 +0000 + + hb-font: Fix a potentially undefined use of memcmp() (#413) + + While it’s fine to call memcmp(x, 0, 0) in practice, the C99 + standard + explicitly says that this is not allowed: even if the length is zero, + the pointer arguments must be valid. + + http://stackoverflow.com/a/16363034 + + Coverity ID: 141178 + + Signed-off-by: Philip Withnall <withnall@endlessm.com> + + src/hb-font.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 09594df1aecbb7d37093055147c25cc7d7b7fef6 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Feb 7 18:25:12 2017 -0800 + + Update ax_pthread.m4 to latest upstream version + + Might help with https://github.com/behdad/harfbuzz/issues/399 + + m4/ax_pthread.m4 | 394 + ++++++++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 285 insertions(+), 109 deletions(-) + +commit a6ced90efccf869defc0b310effca220f01cf318 +Author: Philip Withnall <philip@tecnocode.co.uk> +Date: Wed Feb 8 02:18:33 2017 +0000 + + test: Fix some memory leaks in test-font.c (#409) + + Coverity IDs: 141039, 141040, 141041 + + test/api/test-font.c | 35 ++++++++++++++++++++++++++++++----- + 1 file changed, 30 insertions(+), 5 deletions(-) + +commit 925ceacfed45c44dd2a025c32bebb1358b560741 +Author: Philip Withnall <philip@tecnocode.co.uk> +Date: Wed Feb 8 02:17:48 2017 +0000 + + util: Add missing field initialisers in constructor (#410) + + Coverity ID: 141042 + + util/hb-shape.cc | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 73c6dcbb45269186f204b2212288b6384ce42c9d +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Feb 7 16:53:21 2017 -0800 + + Silence Coverity warning + + Fixes https://github.com/behdad/harfbuzz/issues/408 + + src/hb-ot-shape-complex-arabic.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 466b3e58bdc64229dab08c6e0e0079c789540370 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Feb 3 16:43:25 2017 -0800 + + Shuffle things around a bit + + src/hb-coretext.cc | 4 ++-- + src/hb-directwrite.cc | 4 ++-- + src/hb-fallback-shape.cc | 4 ++++ + src/hb-graphite2.cc | 4 ++-- + src/hb-ot-layout-private.hh | 1 - + src/hb-ot-layout.cc | 2 -- + src/hb-ot-math.cc | 3 +-- + src/hb-ot-shape.cc | 4 ++++ + src/hb-ot-var.cc | 2 -- + src/hb-shape-plan.cc | 7 ------- + src/hb-shaper-private.hh | 11 +++++++---- + src/hb-uniscribe.cc | 4 ++-- + 12 files changed, 24 insertions(+), 26 deletions(-) + +commit fc8189b63931f03c5d2e70dde198e9c856bd78f5 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Feb 3 16:17:08 2017 -0800 + + Minor + + src/hb-shaper-private.hh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit d3d3691806aaa6aed93a88c845d472e727e7f850 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Feb 3 15:42:03 2017 -0800 + + Add dirty-state tracking to hb_face_t + + src/hb-face-private.hh | 9 +++++++++ + src/hb-face.cc | 19 ++++++++++++++++++- + src/hb-font.cc | 2 +- + 3 files changed, 28 insertions(+), 2 deletions(-) + +commit 2171f48b4b1e66a3c16a83cc00b0006d32ae9738 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Feb 3 10:58:09 2017 -0800 + + Add dirty-state tracking to hb_font_t + + src/hb-font-private.hh | 12 ++++++++++++ + src/hb-font.cc | 30 ++++++++++++++++++++++++++++++ + 2 files changed, 42 insertions(+) + +commit 95808bad2c17a9ef41c58c04faf1b4706fb7d72e +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Feb 3 10:39:40 2017 -0800 + + Add new API hb_font_set_face() + + For completeness. + + src/hb-font.cc | 29 +++++++++++++++++++++++++++++ + src/hb-font.h | 4 ++++ + 2 files changed, 33 insertions(+) + +commit 4ec19319ab195d852708661e12da2a6485fce544 +Author: jfkthame <jfkthame@gmail.com> +Date: Thu Feb 2 18:48:23 2017 +0000 + + Add Win10 Anniversary Update version of Tahoma to GDEF + blacklist. (#412) + + src/hb-ot-layout.cc | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 1dd630a7f2c2cec780fee507367341bc9050cdb3 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Feb 1 11:57:21 2017 -0800 + + Minor + + Fixes https://github.com/behdad/harfbuzz/issues/411 + + src/hb-fallback-shape.cc | 2 +- + src/hb-ot-shape-normalize.cc | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit e888f642db16f52836cbfec29de43ff20236dc85 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Jan 26 14:50:14 2017 -0800 + + Route Adlam through Arabic shaper + + Fixes joined Adlam rendering. + + Fixes https://github.com/googlei18n/noto-fonts/issues/828 + + src/hb-ot-shape-complex-private.hh | 3 +++ + test/shaping/Makefile.am | 1 + + .../5dfad7735c6a67085f1b90d4d497e32907db4c78.ttf | Bin 0 -> + 21160 bytes + test/shaping/tests/arabic-like-joining.tests | 1 + + 4 files changed, 5 insertions(+) + +commit 72c754873c6b15cecb32d9e491c98495f804347a +Author: jfkthame <jfkthame@gmail.com> +Date: Thu Jan 26 22:35:41 2017 +0000 + + Add Win7 version of himalaya.ttf to the GDEF table blacklist. (#407) + + src/hb-ot-layout.cc | 2 ++ + 1 file changed, 2 insertions(+) + +commit 22af28a3f14c6d748ed589f8980b168152116c8c +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Jan 23 23:42:53 2017 -0800 + + [var] Implement MVAR table + + Unhooked. Untested. + + src/Makefile.sources | 1 + + src/hb-font.cc | 2 +- + src/hb-ot-var-mvar-table.hh | 110 + ++++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-var.cc | 1 + + 4 files changed, 113 insertions(+), 1 deletion(-) + +commit 67a191164dec2cfcab97363175c58e459f6ff8f9 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Jan 23 23:21:30 2017 -0800 + + [var] Whitespace + + src/hb-ot-var-hvar-table.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 6af6c1114a3495584ac4197c62592741c407b5a2 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Jan 23 18:35:00 2017 -0800 + + 1.4.2 + + NEWS | 31 +++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 32 insertions(+), 1 deletion(-) + commit 79e8e27ffd3da29ca27d3aebd2ef425bf1cb7f9d Author: Behdad Esfahbod <behdad@behdad.org> Date: Mon Jan 23 17:55:31 2017 -0800 @@ -629,6 +939,32 @@ Date: Sun Jan 8 23:55:54 2017 -0800 src/hb-ot-shape-complex-use.cc | 22 ---------------------- 1 file changed, 22 deletions(-) +commit b435c7c46a46350771e837e87fee448fd9dc06d3 +Author: Khaled Hosny <khaledhosny@eglug.org> +Date: Fri Nov 11 02:16:39 2016 +0200 + + [graphite] Stop creating unused gr_face + + It is unused after previous commit, hb_graphite2_font_get_gr_font() + makes no sense now so deprecating it. + + src/hb-graphite2.cc | 22 +++++----------------- + src/hb-graphite2.h | 4 ++++ + 2 files changed, 9 insertions(+), 17 deletions(-) + +commit 1b00a3b0488a5d1c6ede141ae0545e2eb9af0ed8 +Author: Khaled Hosny <khaledhosny@eglug.org> +Date: Sun Oct 30 20:16:41 2016 +0200 + + [graphite] Fix shaping with varying font sizes + + Shape using design units and scale the output. + + See https://bugs.documentfoundation.org/show_bug.cgi?id=103403#c7 + + src/hb-graphite2.cc | 27 +++++++++++++++------------ + 1 file changed, 15 insertions(+), 12 deletions(-) + commit af596a5655ee2ed09da17a7de79f619e1547dcd9 Author: Behdad Esfahbod <behdad@behdad.org> Date: Thu Jan 5 20:24:41 2017 -0800 diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS index 43a3bacea1b..e175b38a8f5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS +++ b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS @@ -1,3 +1,15 @@ +Overview of changes leading to 1.4.3 +Saturday, February 25, 2017 +==================================== + +- Route Adlam script to Arabic shaper. +- Misc fixes. +- New API: + hb_font_set_face() +- Deprecate API: + hb_graphite2_font_get_gr_font() + + Overview of changes leading to 1.4.2 Monday, January 23, 2017 ==================================== diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac index 31fa97d3ba0..a3eb0f02136 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.4.2], + [1.4.3], [https://github.com/behdad/harfbuzz/issues/new], [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 d7420a090d4..e322d568647 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am @@ -218,7 +218,7 @@ harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS) (cat $^ || echo 'hb_ERROR ()' ) | \ $(EGREP) '^hb_.* \(' | \ sed -e 's/ (.*//' | \ - LANG=C sort; \ + LC_ALL=C sort; \ echo LIBRARY libharfbuzz-0.dll; \ ) >"$@" @ ! grep -q hb_ERROR "$@" \ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources b/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources index 8d7f1a05d2b..6363cf9300a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources @@ -112,6 +112,7 @@ HB_OT_sources = \ hb-ot-var-avar-table.hh \ hb-ot-var-fvar-table.hh \ hb-ot-var-hvar-table.hh \ + hb-ot-var-mvar-table.hh \ $(NULL) HB_OT_headers = \ 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 e857dfae03f..8f2483b0806 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc @@ -69,8 +69,8 @@ hb_coretext_face_create (CGFontRef cg_font) } -HB_SHAPER_DATA_ENSURE_DECLARE(coretext, face) -HB_SHAPER_DATA_ENSURE_DECLARE(coretext, font) +HB_SHAPER_DATA_ENSURE_DEFINE(coretext, face) +HB_SHAPER_DATA_ENSURE_DEFINE(coretext, font) /* @@ -1222,6 +1222,9 @@ fail: * AAT shaper */ +HB_SHAPER_DATA_ENSURE_DEFINE(coretext_aat, face) +HB_SHAPER_DATA_ENSURE_DEFINE(coretext_aat, font) + /* * shaper face data */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc index d63bc047379..ab07d8a3098 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc @@ -34,8 +34,8 @@ #define HB_DEBUG_DIRECTWRITE (HB_DEBUG+0) #endif -HB_SHAPER_DATA_ENSURE_DECLARE(directwrite, face) -HB_SHAPER_DATA_ENSURE_DECLARE(directwrite, font) +HB_SHAPER_DATA_ENSURE_DEFINE(directwrite, face) +HB_SHAPER_DATA_ENSURE_DEFINE(directwrite, font) /* diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face-private.hh index 43e7b1cb3ff..eb0e850aa87 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face-private.hh @@ -54,6 +54,13 @@ struct hb_face_t { mutable unsigned int upem; /* Units-per-EM. */ mutable unsigned int num_glyphs; /* Number of glyphs. */ + enum dirty_t { + NOTHING = 0x0000, + INDEX = 0x0001, + UPEM = 0x0002, + NUM_GLYPHS = 0x0004, + } dirty; + struct hb_shaper_data_t shaper_data; /* Various shaper data. */ /* Various non-shaping data. */ @@ -99,6 +106,8 @@ struct hb_face_t { HB_INTERNAL void load_num_glyphs (void) const; }; +HB_MARK_AS_FLAG_T (hb_face_t::dirty_t); + extern HB_INTERNAL const hb_face_t _hb_face_nil; #define HB_SHAPER_DATA_CREATE_FUNC_EXTRA_ARGS diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc index 1ba97070727..1800c995a46 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc @@ -51,6 +51,8 @@ const hb_face_t _hb_face_nil = { 1000, /* upem */ 0, /* num_glyphs */ + hb_face_t::NOTHING, /* dirty */ + { #define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_INVALID, #include "hb-shaper-list.hh" @@ -171,7 +173,7 @@ hb_face_create (hb_blob_t *blob, closure, (hb_destroy_func_t) _hb_face_for_data_closure_destroy); - hb_face_set_index (face, index); + face->index = index; return face; } @@ -365,6 +367,11 @@ hb_face_set_index (hb_face_t *face, if (face->immutable) return; + if (face->index == index) + return; + + face->dirty |= face->INDEX; + face->index = index; } @@ -400,6 +407,11 @@ hb_face_set_upem (hb_face_t *face, if (face->immutable) return; + if (face->upem == upem) + return; + + face->dirty |= face->UPEM; + face->upem = upem; } @@ -444,6 +456,11 @@ hb_face_set_glyph_count (hb_face_t *face, if (face->immutable) return; + if (face->num_glyphs == glyph_count) + return; + + face->dirty |= face->NUM_GLYPHS; + face->num_glyphs = glyph_count; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-fallback-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-fallback-shape.cc index ac6d4b00f55..4b60c6c3491 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-fallback-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-fallback-shape.cc @@ -28,6 +28,10 @@ #include "hb-shaper-impl-private.hh" +HB_SHAPER_DATA_ENSURE_DEFINE(fallback, face) +HB_SHAPER_DATA_ENSURE_DEFINE(fallback, font) + + /* * shaper face data */ @@ -125,7 +129,7 @@ _hb_fallback_shape (hb_shape_plan_t *shape_plan HB_UNUSED, pos[i].y_advance = 0; continue; } - font->get_nominal_glyph (info[i].codepoint, &info[i].codepoint); + (void) font->get_nominal_glyph (info[i].codepoint, &info[i].codepoint); font->get_glyph_advance_for_direction (info[i].codepoint, direction, &pos[i].x_advance, 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 53671d78d23..fbb16a0b72f 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 @@ -116,6 +116,16 @@ struct hb_font_t { void *user_data; hb_destroy_func_t destroy; + enum dirty_t { + NOTHING = 0x0000, + FACE = 0x0001, + PARENT = 0x0002, + FUNCS = 0x0004, + SCALE = 0x0008, + PPEM = 0x0010, + VARIATIONS = 0x0020, + } dirty; + struct hb_shaper_data_t shaper_data; @@ -543,6 +553,8 @@ struct hb_font_t { } }; +HB_MARK_AS_FLAG_T (hb_font_t::dirty_t); + #define HB_SHAPER_DATA_CREATE_FUNC_EXTRA_ARGS #define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_PROTOTYPE(shaper, font); #include "hb-shaper-list.hh" 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 ea455012684..e900bd3f65a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc @@ -1196,6 +1196,8 @@ hb_font_get_empty (void) NULL, /* user_data */ NULL, /* destroy */ + hb_font_t::NOTHING, /* dirty */ + { #define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_INVALID, #include "hb-shaper-list.hh" @@ -1348,6 +1350,11 @@ hb_font_set_parent (hb_font_t *font, if (!parent) parent = hb_font_get_empty (); + if (parent == font->parent) + return; + + font->dirty |= font->PARENT; + hb_font_t *old = font->parent; font->parent = hb_font_reference (parent); @@ -1372,6 +1379,37 @@ hb_font_get_parent (hb_font_t *font) } /** + * hb_font_set_face: + * @font: a font. + * @face: new face. + * + * Sets font-face of @font. + * + * Since: 1.4.3 + **/ +void +hb_font_set_face (hb_font_t *font, + hb_face_t *face) +{ + if (font->immutable) + return; + + if (unlikely (!face)) + face = hb_face_get_empty (); + + if (font->face == face) + return; + + font->dirty |= font->FACE; + + hb_face_t *old = font->face; + + font->face = hb_face_reference (face); + + hb_face_destroy (old); +} + +/** * hb_font_get_face: * @font: a font. * @@ -1417,6 +1455,8 @@ hb_font_set_funcs (hb_font_t *font, if (!klass) klass = hb_font_funcs_get_empty (); + font->dirty |= font->FUNCS; + hb_font_funcs_reference (klass); hb_font_funcs_destroy (font->klass); font->klass = klass; @@ -1472,6 +1512,11 @@ hb_font_set_scale (hb_font_t *font, if (font->immutable) return; + if (font->x_scale == x_scale && font->y_scale == y_scale) + return; + + font->dirty |= font->SCALE; + font->x_scale = x_scale; font->y_scale = y_scale; } @@ -1513,6 +1558,11 @@ hb_font_set_ppem (hb_font_t *font, if (font->immutable) return; + if (font->x_ppem == x_ppem && font->y_ppem == y_ppem) + return; + + font->dirty |= font->PPEM; + font->x_ppem = x_ppem; font->y_ppem = y_ppem; } @@ -1545,6 +1595,16 @@ _hb_font_adopt_var_coords_normalized (hb_font_t *font, int *coords, /* 2.14 normalized */ unsigned int coords_length) { + if (font->num_coords == coords_length && + (coords_length == 0 || + 0 == memcmp (font->coords, coords, coords_length * sizeof (coords[0])))) + { + free (coords); + return; + } + + font->dirty |= font->VARIATIONS; + free (font->coords); font->coords = coords; @@ -1627,7 +1687,7 @@ hb_font_set_var_coords_normalized (hb_font_t *font, } /** - * hb_font_set_var_coords_normalized: + * hb_font_get_var_coords_normalized: * * Return value is valid as long as variation coordinates of the font * are not modified. 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 e2e59796f9f..85fb56d5b6d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.h @@ -563,6 +563,10 @@ hb_font_set_parent (hb_font_t *font, HB_EXTERN hb_font_t * hb_font_get_parent (hb_font_t *font); +HB_EXTERN void +hb_font_set_face (hb_font_t *font, + hb_face_t *face); + HB_EXTERN hb_face_t * hb_font_get_face (hb_font_t *font); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc index a2d90db878f..5b804b8294e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc @@ -27,7 +27,6 @@ */ #define HB_SHAPER graphite2 -#define hb_graphite2_shaper_font_data_t gr_font #include "hb-shaper-impl-private.hh" #include "hb-graphite2.h" @@ -35,8 +34,8 @@ #include <graphite2/Segment.h> -HB_SHAPER_DATA_ENSURE_DECLARE(graphite2, face) -HB_SHAPER_DATA_ENSURE_DECLARE(graphite2, font) +HB_SHAPER_DATA_ENSURE_DEFINE(graphite2, face) +HB_SHAPER_DATA_ENSURE_DEFINE(graphite2, font) /* @@ -153,26 +152,17 @@ hb_graphite2_face_get_gr_face (hb_face_t *face) * shaper font data */ -static float hb_graphite2_get_advance (const void *hb_font, unsigned short gid) -{ - return ((hb_font_t *) hb_font)->get_glyph_h_advance (gid); -} +struct hb_graphite2_shaper_font_data_t {}; hb_graphite2_shaper_font_data_t * -_hb_graphite2_shaper_font_data_create (hb_font_t *font) +_hb_graphite2_shaper_font_data_create (hb_font_t *font HB_UNUSED) { - if (unlikely (!hb_graphite2_shaper_face_data_ensure (font->face))) return NULL; - - hb_face_t *face = font->face; - hb_graphite2_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face); - - return gr_make_font_with_advance_fn (font->x_scale, font, &hb_graphite2_get_advance, face_data->grface); + return (hb_graphite2_shaper_font_data_t *) HB_SHAPER_DATA_SUCCEEDED; } void -_hb_graphite2_shaper_font_data_destroy (hb_graphite2_shaper_font_data_t *data) +_hb_graphite2_shaper_font_data_destroy (hb_graphite2_shaper_font_data_t *data HB_UNUSED) { - gr_font_destroy (data); } /* @@ -181,8 +171,7 @@ _hb_graphite2_shaper_font_data_destroy (hb_graphite2_shaper_font_data_t *data) gr_font * hb_graphite2_font_get_gr_font (hb_font_t *font) { - if (unlikely (!hb_graphite2_shaper_font_data_ensure (font))) return NULL; - return HB_SHAPER_DATA_GET (font); + return NULL; } @@ -230,7 +219,6 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, { hb_face_t *face = font->face; gr_face *grface = HB_SHAPER_DATA_GET (face)->grface; - gr_font *grfont = HB_SHAPER_DATA_GET (font); const char *lang = hb_language_to_string (hb_buffer_get_language (buffer)); const char *lang_end = lang ? strchr (lang, '-') : NULL; @@ -262,7 +250,7 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, hb_tag_t script_tag[2]; hb_ot_tags_from_script (hb_buffer_get_script (buffer), &script_tag[0], &script_tag[1]); - seg = gr_make_seg (grfont, grface, + seg = gr_make_seg (NULL, grface, script_tag[1] == HB_TAG_NONE ? script_tag[0] : script_tag[1], feats, gr_utf32, chars, buffer->len, @@ -373,7 +361,10 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, } buffer->len = glyph_count; - float yscale = font->y_scale / font->x_scale; + unsigned int upem = hb_face_get_upem (face); + float xscale = (float) font->x_scale / upem; + float yscale = (float) font->y_scale / upem; + yscale *= yscale / xscale; /* Positioning. */ if (!HB_DIRECTION_IS_BACKWARD(buffer->props.direction)) { @@ -383,16 +374,16 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, curradvx = 0; for (is = gr_seg_first_slot (seg); is; pPos++, ++info, is = gr_slot_next_in_segment (is)) { - pPos->x_offset = gr_slot_origin_X (is) - curradvx; + pPos->x_offset = gr_slot_origin_X (is) * xscale - curradvx; pPos->y_offset = gr_slot_origin_Y (is) * yscale - curradvy; if (info->cluster != currclus) { - pPos->x_advance = info->var1.i32; + pPos->x_advance = info->var1.i32 * xscale; curradvx += pPos->x_advance; currclus = info->cluster; } else pPos->x_advance = 0.; - pPos->y_advance = gr_slot_advance_Y (is, grface, grfont) * yscale; + pPos->y_advance = gr_slot_advance_Y (is, grface, NULL) * yscale; curradvy += pPos->y_advance; } } @@ -401,20 +392,20 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, int currclus = -1; const hb_glyph_info_t *info = buffer->info; hb_glyph_position_t *pPos = hb_buffer_get_glyph_positions (buffer, NULL); - curradvx = gr_seg_advance_X(seg); + curradvx = gr_seg_advance_X(seg) * xscale; for (is = gr_seg_first_slot (seg); is; pPos++, info++, is = gr_slot_next_in_segment (is)) { if (info->cluster != currclus) { - pPos->x_advance = info->var1.i32; - if (currclus != -1) curradvx -= info[-1].var1.i32; + pPos->x_advance = info->var1.i32 * xscale; + if (currclus != -1) curradvx -= info[-1].var1.i32 * xscale; currclus = info->cluster; } else pPos->x_advance = 0.; - pPos->y_advance = gr_slot_advance_Y (is, grface, grfont) * yscale; + pPos->y_advance = gr_slot_advance_Y (is, grface, NULL) * yscale; curradvy -= pPos->y_advance; - pPos->x_offset = gr_slot_origin_X (is) - curradvx + pPos->x_advance; + pPos->x_offset = gr_slot_origin_X (is) * xscale - curradvx + pPos->x_advance; pPos->y_offset = gr_slot_origin_Y (is) * yscale - curradvy; } hb_buffer_reverse_clusters (buffer); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.h index 122c3e47636..82b1e64cd2c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.h @@ -39,9 +39,13 @@ HB_BEGIN_DECLS HB_EXTERN gr_face * hb_graphite2_face_get_gr_face (hb_face_t *face); +#ifndef HB_DISABLE_DEPRECATED + HB_EXTERN gr_font * hb_graphite2_font_get_gr_font (hb_font_t *font); +#endif + HB_END_DECLS 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 b7a0122a3b3..0c423526861 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 @@ -959,7 +959,7 @@ static inline bool apply_lookup (hb_apply_context_t *c, TRACE_APPLY (NULL); hb_buffer_t *buffer = c->buffer; - unsigned int end; + int end; /* All positions are distance from beginning of *output* buffer. * Adjust. */ @@ -998,8 +998,8 @@ static inline bool apply_lookup (hb_apply_context_t *c, /* Recursed lookup changed buffer len. Adjust. */ - end = int (end) + delta; - if (end <= match_positions[idx]) + end += delta; + if (end <= int (match_positions[idx])) { /* End might end up being smaller than match_positions[idx] if the recursed * lookup ended up removing many items, more than we have had matched. 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 8c348beb17c..071a439d60c 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 @@ -623,5 +623,4 @@ _hb_buffer_assert_gsubgpos_vars (hb_buffer_t *buffer) #undef lig_props #undef glyph_props - #endif /* HB_OT_LAYOUT_PRIVATE_HH */ 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 d7ededd8db9..e78e1524e65 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 @@ -39,8 +39,6 @@ #include "hb-ot-map-private.hh" -HB_SHAPER_DATA_ENSURE_DECLARE(ot, face) - hb_ot_layout_t * _hb_ot_layout_create (hb_face_t *face) { @@ -107,10 +105,16 @@ _hb_ot_layout_create (hb_face_t *face) || (994 == gdef_len && 60336 == gpos_len && 24474 == gsub_len) /* sha1sum:7199385abb4c2cc81c83a151a7599b6368e92343 tahomabd.ttf from Windows 10 */ || (1006 == gdef_len && 61740 == gpos_len && 24470 == gsub_len) + /* sha1sum:b9c84d820c49850d3d27ec498be93955b82772b5 tahoma.ttf from Windows 10 AU */ + || (1006 == gdef_len && 61352 == gpos_len && 24576 == gsub_len) + /* sha1sum:2bdfaab28174bdadd2f3d4200a30a7ae31db79d2 tahomabd.ttf from Windows 10 AU */ + || (1018 == gdef_len && 62834 == gpos_len && 24572 == gsub_len) /* sha1sum:b0d36cf5a2fbe746a3dd277bffc6756a820807a7 Tahoma.ttf from Mac OS X 10.9 */ || (832 == gdef_len && 47162 == gpos_len && 7324 == gsub_len) /* sha1sum:12fc4538e84d461771b30c18b5eb6bd434e30fba Tahoma Bold.ttf from Mac OS X 10.9 */ || (844 == gdef_len && 45474 == gpos_len && 7302 == gsub_len) + /* sha1sum:eb8afadd28e9cf963e886b23a30b44ab4fd83acc himalaya.ttf from Windows 7 */ + || (180 == gdef_len && 7254 == gpos_len && 13054 == gsub_len) /* sha1sum:73da7f025b238a3f737aa1fde22577a6370f77b0 himalaya.ttf from Windows 8 */ || (192 == gdef_len && 7254 == gpos_len && 12638 == gsub_len) /* sha1sum:6e80fd1c0b059bbee49272401583160dc1e6a427 himalaya.ttf from Windows 8.1 */ @@ -129,6 +133,9 @@ _hb_ot_layout_create (hb_face_t *face) || (1330 == gdef_len && 57938 == gpos_len && 109904 == gsub_len) /* 91fcc10cf15e012d27571e075b3b4dfe31754a8a padauk-3.0/Padauk-bookbold.ttf */ || (1330 == gdef_len && 58972 == gpos_len && 109904 == gsub_len) + /* sha1sum: c26e41d567ed821bed997e937bc0c41435689e85 Padauk.ttf + * "Padauk Regular" "Version 2.5", see https://crbug.com/681813 */ + || (1004 == gdef_len && 14836 == gpos_len && 59092 == gsub_len) ) { /* Many versions of Tahoma have bad GDEF tables that incorrectly classify some spacing marks diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math.cc index 2d7e6792a58..f82a07353c9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math.cc @@ -26,10 +26,9 @@ #include "hb-open-type-private.hh" +#include "hb-ot-layout-private.hh" #include "hb-ot-math-table.hh" -HB_SHAPER_DATA_ENSURE_DECLARE(ot, face) - static inline const OT::MATH& _get_math (hb_face_t *face) { 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 56ec5cd65cf..57ffc1dc5fe 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 @@ -540,7 +540,7 @@ apply_stch (const hb_ot_shape_plan_t *plan, /* 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) + if (shortfall > 0 && n_repeating > 0) { ++n_copies; hb_position_t excess = (n_copies + 1) * sign * w_repeating - sign * w_remaining; 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 80a6b25e3b0..e10a4d25f5f 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 @@ -422,6 +422,13 @@ hb_indic_get_categories (hb_codepoint_t u) if (hb_in_range (u, 0xAA60u, 0xAA7Fu)) return indic_table[u - 0xAA60u + indic_offset_0xaa60u]; break; + case 0x11u: + // According to ScriptExtensions.txt, these Grantha marks may also be used in Tamil, + // so the Indic shaper needs to know their categories. + if (unlikely (u == 0x11303)) return _(Vs,R); + if (unlikely (u == 0x1133c)) return _(N,B); + break; + default: 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 39572dfe007..952441b6a59 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 @@ -191,6 +191,9 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner) case HB_SCRIPT_MANICHAEAN: case HB_SCRIPT_PSALTER_PAHLAVI: + /* Unicode-9.0 additions */ + case HB_SCRIPT_ADLAM: + /* For Arabic script, use the Arabic shaper even if no OT script tag was found. * This is because we do fallback shaping for Arabic script (and not others). * But note that Arabic shaping is applicable only to horizontal layout; for diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc index 107617e81ca..94a3d7d27aa 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc @@ -91,7 +91,7 @@ compose_unicode (const hb_ot_shape_normalize_context_t *c, static inline void set_glyph (hb_glyph_info_t &info, hb_font_t *font) { - font->get_nominal_glyph (info.codepoint, &info.glyph_index()); + (void) font->get_nominal_glyph (info.codepoint, &info.glyph_index()); } static inline void diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc index 6b38739c91b..2eacb34c4d9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc @@ -128,6 +128,8 @@ hb_ot_shape_collect_features (hb_ot_shape_planner_t *planner, * shaper face data */ +HB_SHAPER_DATA_ENSURE_DEFINE(ot, face) + hb_ot_shaper_face_data_t * _hb_ot_shaper_face_data_create (hb_face_t *face) { @@ -145,6 +147,8 @@ _hb_ot_shaper_face_data_destroy (hb_ot_shaper_face_data_t *data) * shaper font data */ +HB_SHAPER_DATA_ENSURE_DEFINE(ot, font) + struct hb_ot_shaper_font_data_t {}; hb_ot_shaper_font_data_t * diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-hvar-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-hvar-table.hh index 3a2a820376f..f9d801e3b8f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-hvar-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-hvar-table.hh @@ -78,10 +78,10 @@ struct DeltaSetIndexMap { return (format & 0xF) + 1; } protected: - USHORT format; /* A packed field that describes the compressed + USHORT format; /* A packed field that describes the compressed * representation of delta-set indices. */ - USHORT mapCount; /* The number of mapping entries. */ - BYTE mapData[VAR]; /* The delta-set index mapping data. */ + USHORT mapCount; /* The number of mapping entries. */ + BYTE mapData[VAR]; /* The delta-set index mapping data. */ public: DEFINE_SIZE_ARRAY (4, mapData); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-mvar-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-mvar-table.hh new file mode 100644 index 00000000000..3cb74984767 --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-mvar-table.hh @@ -0,0 +1,110 @@ +/* + * Copyright © 2017 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_VAR_MVAR_TABLE_HH +#define HB_OT_VAR_MVAR_TABLE_HH + +#include "hb-ot-layout-common-private.hh" + + +namespace OT { + + +struct VariationValueRecord +{ + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this)); + } + + public: + Tag valueTag; /* Four-byte tag identifying a font-wide measure. */ + ULONG varIdx; /* Outer/inner index into VariationStore item. */ + + public: + DEFINE_SIZE_STATIC (8); +}; + + +/* + * MVAR -- Metrics Variations Table + */ + +#define HB_OT_TAG_MVAR HB_TAG('M','V','A','R') + +struct MVAR +{ + static const hb_tag_t tableTag = HB_OT_TAG_MVAR; + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (version.sanitize (c) && + likely (version.major == 1) && + c->check_struct (this) && + valueRecordSize >= VariationValueRecord::static_size && + varStore.sanitize (c, this) && + c->check_array (values, valueRecordSize, valueRecordCount)); + } + + inline float get_var (hb_tag_t tag, + int *coords, unsigned int coord_count) const + { + const VariationValueRecord *record; + record = (VariationValueRecord *) bsearch (&tag, values, + valueRecordCount, valueRecordSize, + (hb_compare_func_t) tag_compare); + if (!record) + return 0.; + + return (this+varStore).get_delta (record->varIdx, coords, coord_count); + } + +protected: + static inline int tag_compare (const hb_tag_t *a, const Tag *b) + { return b->cmp (*a); } + + protected: + FixedVersion<>version; /* Version of the metrics variation table + * initially set to 0x00010000u */ + USHORT reserved; /* Not used; set to 0. */ + USHORT valueRecordSize;/* The size in bytes of each value record — + * must be greater than zero. */ + USHORT valueRecordCount;/* The number of value records — may be zero. */ + OffsetTo<VariationStore> + varStore; /* Offset to item variation store table. */ + BYTE values[VAR]; /* Array of value records. The records must be + * in binary order of their valueTag field. */ + + public: + DEFINE_SIZE_ARRAY (12, values); +}; + +} /* namespace OT */ + + +#endif /* HB_OT_VAR_MVAR_TABLE_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var.cc index d4d16dfffb0..691196d9bb6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var.cc @@ -29,10 +29,9 @@ #include "hb-ot-layout-private.hh" #include "hb-ot-var-avar-table.hh" #include "hb-ot-var-fvar-table.hh" +#include "hb-ot-var-mvar-table.hh" #include "hb-ot-var.h" -HB_SHAPER_DATA_ENSURE_DECLARE(ot, face) - /* * fvar/avar */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.cc index 600faaeb18c..1ac77bef750 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.cc @@ -35,13 +35,6 @@ #endif -#define HB_SHAPER_IMPLEMENT(shaper) \ - HB_SHAPER_DATA_ENSURE_DECLARE(shaper, face) \ - HB_SHAPER_DATA_ENSURE_DECLARE(shaper, font) -#include "hb-shaper-list.hh" -#undef HB_SHAPER_IMPLEMENT - - static void hb_shape_plan_plan (hb_shape_plan_t *shape_plan, const hb_feature_t *user_features, diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper-private.hh index d1d1146dad2..381398a6171 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper-private.hh @@ -65,27 +65,31 @@ struct hb_shaper_data_t { #define HB_SHAPER_DATA_INVALID ((void *) -1) #define HB_SHAPER_DATA_IS_INVALID(data) ((void *) (data) == HB_SHAPER_DATA_INVALID) -#define HB_SHAPER_DATA_TYPE(shaper, object) struct hb_##shaper##_shaper_##object##_data_t +#define HB_SHAPER_DATA_TYPE_NAME(shaper, object) hb_##shaper##_shaper_##object##_data_t +#define HB_SHAPER_DATA_TYPE(shaper, object) struct HB_SHAPER_DATA_TYPE_NAME(shaper, object) #define HB_SHAPER_DATA_INSTANCE(shaper, object, instance) (* (HB_SHAPER_DATA_TYPE(shaper, object) **) &(instance)->shaper_data.shaper) -#define HB_SHAPER_DATA(shaper, object) HB_SHAPER_DATA_INSTANCE (shaper, object, object) +#define HB_SHAPER_DATA(shaper, object) HB_SHAPER_DATA_INSTANCE(shaper, object, object) #define HB_SHAPER_DATA_CREATE_FUNC(shaper, object) _hb_##shaper##_shaper_##object##_data_create #define HB_SHAPER_DATA_DESTROY_FUNC(shaper, object) _hb_##shaper##_shaper_##object##_data_destroy +#define HB_SHAPER_DATA_ENSURE_FUNC(shaper, object) hb_##shaper##_shaper_##object##_data_ensure #define HB_SHAPER_DATA_PROTOTYPE(shaper, object) \ HB_SHAPER_DATA_TYPE (shaper, object); /* Type forward declaration. */ \ extern "C" HB_INTERNAL HB_SHAPER_DATA_TYPE (shaper, object) * \ HB_SHAPER_DATA_CREATE_FUNC (shaper, object) (hb_##object##_t *object HB_SHAPER_DATA_CREATE_FUNC_EXTRA_ARGS); \ extern "C" HB_INTERNAL void \ - HB_SHAPER_DATA_DESTROY_FUNC (shaper, object) (HB_SHAPER_DATA_TYPE (shaper, object) *data) + HB_SHAPER_DATA_DESTROY_FUNC (shaper, object) (HB_SHAPER_DATA_TYPE (shaper, object) *data); \ + extern "C" HB_INTERNAL bool \ + HB_SHAPER_DATA_ENSURE_FUNC (shaper, object) (hb_##object##_t *object) #define HB_SHAPER_DATA_DESTROY(shaper, object) \ if (HB_SHAPER_DATA_TYPE (shaper, object) *data = HB_SHAPER_DATA (shaper, object)) \ if (data != HB_SHAPER_DATA_INVALID && data != HB_SHAPER_DATA_SUCCEEDED) \ HB_SHAPER_DATA_DESTROY_FUNC (shaper, object) (data); -#define HB_SHAPER_DATA_ENSURE_DECLARE(shaper, object) \ -static inline bool \ -hb_##shaper##_shaper_##object##_data_ensure (hb_##object##_t *object) \ +#define HB_SHAPER_DATA_ENSURE_DEFINE(shaper, object) \ +bool \ +HB_SHAPER_DATA_ENSURE_FUNC(shaper, object) (hb_##object##_t *object) \ {\ retry: \ HB_SHAPER_DATA_TYPE (shaper, object) *data = (HB_SHAPER_DATA_TYPE (shaper, object) *) hb_atomic_ptr_get (&HB_SHAPER_DATA (shaper, object)); \ 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 6e4db01495f..58f983dbec1 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc @@ -293,8 +293,8 @@ struct range_record_t { unsigned int index_last; /* == end - 1 */ }; -HB_SHAPER_DATA_ENSURE_DECLARE(uniscribe, face) -HB_SHAPER_DATA_ENSURE_DECLARE(uniscribe, font) +HB_SHAPER_DATA_ENSURE_DEFINE(uniscribe, face) +HB_SHAPER_DATA_ENSURE_DEFINE(uniscribe, font) /* diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac index 3c3340d1816..d3c36985937 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.4.2]) +m4_define([harfbuzz_version], [1.4.3]) |