diff options
17 files changed, 278 insertions, 88 deletions
diff --git a/Build/source/libs/README b/Build/source/libs/README index bb468f5aaca..5a6f584d176 100644 --- a/Build/source/libs/README +++ b/Build/source/libs/README @@ -24,7 +24,7 @@ gmp 6.1.2 - checked 16dec16 graphite2 1.3.10 - checked 20jun17 http://sourceforge.net/projects/silgraphite/files/graphite2/ -harfbuzz 1.6.1 - checked 23oct17 +harfbuzz 1.6.2 - checked 24oct17 http://www.freedesktop.org/software/harfbuzz/release/ icu 58.2 - checked 13mar17 diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog index 1109f2ba008..0a723c40395 100644 --- a/Build/source/libs/harfbuzz/ChangeLog +++ b/Build/source/libs/harfbuzz/ChangeLog @@ -1,3 +1,10 @@ +2017-10-24 Akira Kakuto <kakuto@fuk.kindai.ac.jp> + + Import harfbuzz-1.6.2. + * version.ac: Adjusted. + Note that c++11 is required from the version 1.6.1. Works for + the c++11 configuration are not yet done. + 2017-10-23 Akira Kakuto <kakuto@fuk.kindai.ac.jp> Import harfbuzz-1.6.1. diff --git a/Build/source/libs/harfbuzz/TLpatches/ChangeLog b/Build/source/libs/harfbuzz/TLpatches/ChangeLog index 35c2a5446d1..640ec67e90d 100644 --- a/Build/source/libs/harfbuzz/TLpatches/ChangeLog +++ b/Build/source/libs/harfbuzz/TLpatches/ChangeLog @@ -1,4 +1,9 @@ -2017-10-14 Akira Kakuto <kakuto@fuk.kindai.ac.jp> +2017-10-24 Akira Kakuto <kakuto@fuk.kindai.ac.jp> + + Imported harfbuzz-1.6.2 source tree from: + http://www.freedesktop.org/software/harfbuzz/release/ + +2017-10-23 Akira Kakuto <kakuto@fuk.kindai.ac.jp> Imported harfbuzz-1.6.1 source tree from: http://www.freedesktop.org/software/harfbuzz/release/ diff --git a/Build/source/libs/harfbuzz/TLpatches/TL-Changes b/Build/source/libs/harfbuzz/TLpatches/TL-Changes index cd830ea0f19..adc2bc7fce0 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.6.1/ tree as obtained from: +Changes applied to the harfbuzz-1.6.2/ 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 07cd82845f8..b20c265a55a 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.6.1. +# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 1.6.2. # # 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.6.1' -PACKAGE_STRING='harfbuzz (TeX Live) 1.6.1' +PACKAGE_VERSION='1.6.2' +PACKAGE_STRING='harfbuzz (TeX Live) 1.6.2' 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.6.1 to adapt to many kinds of systems. +\`configure' configures harfbuzz (TeX Live) 1.6.2 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.6.1:";; + short | recursive ) echo "Configuration of harfbuzz (TeX Live) 1.6.2:";; 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.6.1 +harfbuzz (TeX Live) configure 1.6.2 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.6.1, which was +It was created by harfbuzz (TeX Live) $as_me 1.6.2, 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.6.1' + VERSION='1.6.2' cat >>confdefs.h <<_ACEOF @@ -4206,8 +4206,8 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags HB_VERSION_MAJOR=1 HB_VERSION_MINOR=6 -HB_VERSION_MICRO=1 -HB_VERSION=1.6.1 +HB_VERSION_MICRO=2 +HB_VERSION=1.6.2 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.6.1, which was +This file was extended by harfbuzz (TeX Live) $as_me 1.6.2, 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.6.1 +harfbuzz (TeX Live) config.status 1.6.2 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 83425f3cf49..7702acdf214 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog +++ b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog @@ -1,3 +1,145 @@ +commit 30a591e3cef67818ef1ffec92c6a022b5a5f5e77 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Oct 23 14:28:35 2017 -0400 + + [set] Rewrite another way :P + + src/hb-set-private.hh | 25 +++++++++++++------------ + 1 file changed, 13 insertions(+), 12 deletions(-) + +commit 8170801d78a5bf9480d8c06ade849b30bc4e2956 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Oct 23 14:26:48 2017 -0400 + + [set] Fix crash + + Ouch! That's what happens when one plays with increment/decrement + operators! + + Fixes https://github.com/behdad/harfbuzz/issues/578 + + src/hb-set-private.hh | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit 61d1c60a1c555c58205964df4e449ee57125a739 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Oct 23 13:10:21 2017 -0400 + + [RELEASING] Format + + RELEASING.md | 67 + +++++++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 48 insertions(+), 19 deletions(-) + +commit 6a2e1649debd992211bf96ef80d075d2d04a49ed +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Oct 23 13:01:34 2017 -0400 + + [doap] Switch to github issues + + https://github.com/behdad/harfbuzz/pull/575#issuecomment-338514596 + + harfbuzz.doap | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8a898c1929cf7ffc9b0011461b34281ecc98705c +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Oct 23 13:00:36 2017 -0400 + + [RELEASING] Minor + + https://github.com/behdad/harfbuzz/pull/575 + + RELEASING.md | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2ee710e02fad1a8a4b94589bb6f0b90e2aeb7121 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Oct 23 08:37:48 2017 -0400 + + Minor + + src/hb-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dd33e4e96b9345a6b1a9051a6aa4b7d114c74f1e +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Oct 23 08:36:40 2017 -0400 + + [set] Don't use major() + + Fixes https://github.com/behdad/harfbuzz/issues/577 + + src/hb-set-private.hh | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit d0f0ff85b9fe959ef4b90f8daf58be73fca49dd0 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Oct 23 08:34:30 2017 -0400 + + [set] Don't use PAGE_SIZE + + Fixes https://github.com/behdad/harfbuzz/issues/576 + + src/hb-set-private.hh | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 57cf978fa314bd87405a2b133e58fcb116e574a6 +Merge: ce979454 6cc49762 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sun Oct 22 18:24:59 2017 -0400 + + Merge commit '6cc49762c4fdfd0e2770a84d1b1f055acf42376f' + +commit ce979454400c3870717ba40b1065a2f3727cfb93 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sun Oct 22 18:23:38 2017 -0400 + + [icu] Fix error check + + src/hb-icu.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 6cc49762c4fdfd0e2770a84d1b1f055acf42376f +Merge: 8b9d9b71 19923279 +Author: ebraminio <ebrahim@gnu.org> +Date: Mon Oct 23 01:48:22 2017 +0330 + + Merge pull request #575 from behdad/releasing-edit + + Clarify the last step of release + +commit 19923279abd4c7615e8b02e05a02ba18f5c0b298 +Author: ebraminio <ebrahim@gnu.org> +Date: Mon Oct 23 01:47:51 2017 +0330 + + Clarify the last step of release + + RELEASING.md | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8b9d9b71b04c9d5698ec146658b31381060c700d +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sun Oct 22 17:48:06 2017 -0400 + + Fix set initialization issues + + src/hb-ot-layout-gsubgpos-private.hh | 12 ++++++------ + src/hb-ot-shape.cc | 17 +++++++++-------- + src/hb-set-private.hh | 9 --------- + src/hb-set.cc | 6 ++++-- + 4 files changed, 19 insertions(+), 25 deletions(-) + +commit 0ca915efc3734111a57ff71f05d9cbf0e8af3de9 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sun Oct 22 17:38:33 2017 -0400 + + 1.6.1 + + NEWS | 13 +++++++++++++ + configure.ac | 2 +- + 2 files changed, 14 insertions(+), 1 deletion(-) + commit d59d5dc7d339deb45cc84cffd084b52752765a08 Merge: ced86da7 3ee15a60 Author: Behdad Esfahbod <behdad@behdad.org> diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS index 19daabf7620..51cec0d376a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS +++ b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS @@ -1,3 +1,13 @@ +Overview of changes leading to 1.6.2 +Monday, October 23nd, 2017 +==================================== + +- Yesterday's release had a bad crasher; don't use it. That's what + happens when one works on Sunday... + https://github.com/behdad/harfbuzz/issues/578 +- Build fixes for FreeBSD and Chrome Android. + + Overview of changes leading to 1.6.1 Sunday, October 22nd, 2017 ==================================== diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md b/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md index 34f64988ffc..83302c7fbf6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md +++ b/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md @@ -1,37 +1,66 @@ HarfBuzz release walk-through checklist: 1. Open gitk and review changes since last release. - * `git diff $(git describe | sed 's/-.*//').. src/*.h` prints all public API changes. - Document them in NEWS, All API and API semantic changes should be clearly - marked as API additions, API changes, or API deletions. - If there's a backward-incompatible API change (including deletions for API used anywhere), - that's a release blocker. Do NOT release. Document deprecations. -2. Based on severity of changes, decide whether it's a minor or micro release number bump, + * `git diff $(git describe | sed 's/-.*//').. src/*.h` prints all public API + changes. + + Document them in NEWS. All API and API semantic changes should be clearly + marked as API additions, API changes, or API deletions. Document + deprecations. + + If there's a backward-incompatible API change (including deletions for API + used anywhere), that's a release blocker. Do NOT release. + +2. Based on severity of changes, decide whether it's a minor or micro release + number bump, + 3. Make sure you have correct date and new version at the top of NEWS file, + 4. Bump version in configure.ac line 3, + 5. Do "make distcheck", if it passes, you get a tarball. Otherwise, fix things and commit them separately before making release, -6. "make release-files". Enter your GPG password again. This creates a sha256 hash and signs it. -7. Now that you have a tarball built, commit NEWS and configure.ac changes. The commit message - is simply the release number. Eg. "1.4.7" -8. Tag the release and sign it: Eg. "git tag -s 1.4.7 -m 1.4.7". Enter your GPG password. + +6. "make release-files". Enter your GPG password. This creates a sha256 hash + and signs it. + +7. Now that you have release files built, commit NEWS and configure.ac changes. + The commit message is simply the release number. Eg. "1.4.7" + +8. Tag the release and sign it: Eg. "git tag -s 1.4.7 -m 1.4.7". Enter your + GPG password again. + 9. Build win32 bundle. - 1. Put contents of [this](https://drive.google.com/open?id=0B3_fQkxDZZXXbWltRGd5bjVrUDQ) on your `~/.local/i686-w64-mingw32` - 2. Run `./MING32 --with-uniscribe` script (available below) to config harfbuzz with mingw - 3. make - 4. `./UPDATE.sh` (available below) -10. Copy all artefacts to users.freedesktop.org and move them into `/srv/www.freedesktop.org/www/software/harfbuzz/release` - There should be four files. Eg.: + + a. Put contents of [this](https://drive.google.com/open?id=0B3_fQkxDZZXXbWltRGd5bjVrUDQ) on your `~/.local/i686-w64-mingw32`, + + b. Run `./MING32 --with-uniscribe` script (available below) to configure harfbuzz with mingw in a subdirector (eg. winbuild/), + + c. make + + d. Back in the parent directory, run `./UPDATE.sh` (available below) to build win32 bundle. + +10. Copy all artefacts to users.freedesktop.org and move them into + `/srv/www.freedesktop.org/www/software/harfbuzz/release` There should be four + files. Eg.: ``` -rw-r--r-- 1 behdad eng 1592693 Jul 18 11:25 harfbuzz-1.4.7.tar.bz2 -rw-r--r-- 1 behdad eng 89 Jul 18 11:34 harfbuzz-1.4.7.tar.bz2.sha256 -rw-r--r-- 1 behdad eng 339 Jul 18 11:34 harfbuzz-1.4.7.tar.bz2.sha256.asc -rw-r--r-- 1 behdad eng 2895619 Jul 18 11:34 harfbuzz-1.4.7-win32.zip ``` -11. While doing that, quickly double-check the size of the .tar.bz2 and .zip files against their previous releases to make sure nothing bad happened. They should be in the ballpark, perhaps slightly larger. Sometimes they do shrink, that's not by itself a stopper. -12. Push the commit and tag out: "git push --follow-tags". Make sure it's pushed both to freedesktop repo and github. -13. Upload artefacts and NEWS entry on the github release. + +11. While doing that, quickly double-check the size of the .tar.bz2 and .zip + files against their previous releases to make sure nothing bad happened. + They should be in the ballpark, perhaps slightly larger. Sometimes they + do shrink, that's not by itself a stopper. + +12. Push the commit and tag out: "git push --follow-tags". Make sure it's + pushed both to freedesktop repo and github. + +13. Go to GitHub release page [here](https://github.com/behdad/harfbuzz/releases), + edit the tag, upload artefacts and NEWS entry and save. ## MING32 @@ -57,7 +86,7 @@ export LDFLAGS=-L$HOME/.local/$target/lib export PKG_CONFIG_LIBDIR=$HOME/.local/$target/lib/pkgconfig export PATH=$HOME/.local/$target/bin:$PATH -../configure --build=`~/script/config.guess` --host=$target --prefix=/home/behdad/.local/$target "$@" +../configure --build=`../config.guess` --host=$target --prefix=$HOME/.local/$target "$@" ``` ## UPDATE.sh diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac index 1e00e3d5fce..41ace120726 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.6.1], + [1.6.2], [https://github.com/behdad/harfbuzz/issues/new], [harfbuzz], [http://harfbuzz.org/]) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/harfbuzz.doap b/Build/source/libs/harfbuzz/harfbuzz-src/harfbuzz.doap index d2896ebefa8..1e3e9abc484 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/harfbuzz.doap +++ b/Build/source/libs/harfbuzz/harfbuzz-src/harfbuzz.doap @@ -13,7 +13,7 @@ <!--download-page rdf:resource=""/--> <bug-database - rdf:resource="http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz"/> + rdf:resource="https://github.com/behdad/harfbuzz/issues" /> <maintainer> <foaf:Person> diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc index a00803c98d0..01d15f48e8b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc @@ -332,13 +332,13 @@ hb_icu_unicode_decompose_compatibility (hb_unicode_funcs_t *ufuncs HB_UNUSED, /* Normalise the codepoint using NFKD mode. */ icu_err = U_ZERO_ERROR; len = unorm2_normalize (unorm2_getNFKDInstance (&icu_err), utf16, len, normalized, ARRAY_LENGTH (normalized), &icu_err); - if (icu_err) + if (U_FAILURE (icu_err)) return 0; /* Convert the decomposed form from UTF-16 to UTF-32. */ icu_err = U_ZERO_ERROR; u_strToUTF32 ((UChar32*) decomposed, HB_UNICODE_MAX_DECOMPOSITION_LEN, &utf32_len, normalized, len, &icu_err); - if (icu_err) + if (U_FAILURE (icu_err)) return 0; return utf32_len; 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 4abd4b715df..e695d788200 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 @@ -160,7 +160,7 @@ struct hb_collect_glyphs_context_t : return HB_VOID; /* Return if new lookup was recursed to before. */ - if (recursed_lookups.has (lookup_index)) + if (recursed_lookups->has (lookup_index)) return HB_VOID; hb_set_t *old_before = before; @@ -176,7 +176,7 @@ struct hb_collect_glyphs_context_t : input = old_input; after = old_after; - recursed_lookups.add (lookup_index); + recursed_lookups->add (lookup_index); return HB_VOID; } @@ -187,7 +187,7 @@ struct hb_collect_glyphs_context_t : hb_set_t *after; hb_set_t *output; recurse_func_t recurse_func; - hb_set_t recursed_lookups; + hb_set_t *recursed_lookups; unsigned int nesting_level_left; unsigned int debug_depth; @@ -203,15 +203,15 @@ struct hb_collect_glyphs_context_t : after (glyphs_after ? glyphs_after : hb_set_get_empty ()), output (glyphs_output ? glyphs_output : hb_set_get_empty ()), recurse_func (nullptr), - recursed_lookups (), + recursed_lookups (nullptr), nesting_level_left (nesting_level_left_), debug_depth (0) { - recursed_lookups.init (); + recursed_lookups = hb_set_create (); } ~hb_collect_glyphs_context_t (void) { - recursed_lookups.fini (); + hb_set_destroy (recursed_lookups); } void set_recurse_func (recurse_func_t func) { recurse_func = func; } 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 9d1d6f74846..624132d8961 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 @@ -939,18 +939,19 @@ hb_ot_shape_glyphs_closure (hb_font_t *font, for (unsigned int i = 0; i < count; i++) add_char (font, buffer->unicode, mirror, info[i].codepoint, glyphs); - hb_set_t lookups; - lookups.init (); - hb_ot_shape_plan_collect_lookups (shape_plan, HB_OT_TAG_GSUB, &lookups); + hb_set_t *lookups = hb_set_create (); + hb_ot_shape_plan_collect_lookups (shape_plan, HB_OT_TAG_GSUB, lookups); /* And find transitive closure. */ - hb_set_t copy; - copy.init (); + hb_set_t *copy = hb_set_create (); do { - copy.set (glyphs); - for (hb_codepoint_t lookup_index = -1; hb_set_next (&lookups, &lookup_index);) + copy->set (glyphs); + for (hb_codepoint_t lookup_index = -1; hb_set_next (lookups, &lookup_index);) hb_ot_layout_lookup_substitute_closure (font->face, lookup_index, glyphs); - } while (!copy.is_equal (glyphs)); + } while (!copy->is_equal (glyphs)); + hb_set_destroy (copy); + + hb_set_destroy (lookups); hb_shape_plan_destroy (shape_plan); } 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 3d617e2a595..b139ed67289 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-private.hh @@ -340,7 +340,7 @@ _hb_popcount64 (uint64_t mask) if (sizeof (long) >= sizeof (mask)) return __builtin_popcountl (mask); #endif - return _hb_popcount32 (mask) + _hb_popcount32 (mask >> 32); + return _hb_popcount32 (mask & 0xFFFFFFFF) + _hb_popcount32 (mask >> 32); } template <typename T> static inline unsigned int _hb_popcount (T mask); template <> inline unsigned int _hb_popcount<uint32_t> (uint32_t mask) { return _hb_popcount32 (mask); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set-private.hh index 689766c130c..0454a1896e0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set-private.hh @@ -156,6 +156,7 @@ struct hb_set_t elt_t const &elt (hb_codepoint_t g) const { return v[(g & MASK) / ELT_BITS]; } elt_t mask (hb_codepoint_t g) const { return elt_t (1) << (g & ELT_MASK); } }; + static_assert (page_t::PAGE_BITS == sizeof (page_t) * 8, ""); hb_object_header_t header; ASSERT_POD (); @@ -175,15 +176,6 @@ struct hb_set_t return true; } - inline void init (void) { - hb_object_init (this); - page_map.init (); - pages.init (); - } - inline void fini (void) { - page_map.finish (); - pages.finish (); - } inline void clear (void) { if (unlikely (hb_object_is_inert (this))) return; @@ -282,11 +274,11 @@ struct hb_set_t { if (unlikely (in_error)) return; - int na = pages.len; - int nb = other->pages.len; + unsigned int na = pages.len; + unsigned int nb = other->pages.len; unsigned int count = 0; - int a = 0, b = 0; + unsigned int a = 0, b = 0; for (; a < na && b < nb; ) { if (page_map[a].major == other->page_map[b].major) @@ -317,32 +309,35 @@ struct hb_set_t return; /* Process in-place backward. */ - a = na - 1, b = nb - 1; - for (; a >= 0 && b >= 0; ) + a = na; + b = nb; + for (; a && b; ) { if (page_map[a].major == other->page_map[b].major) { - Op::process (page_at (--count).v, page_at (a).v, other->page_at (b).v); a--; b--; + Op::process (page_at (--count).v, page_at (a).v, other->page_at (b).v); } else if (page_map[a].major > other->page_map[b].major) { + a--; if (Op::passthru_left) page_at (--count).v = page_at (a).v; - a--; } else { + b--; if (Op::passthru_right) page_at (--count).v = other->page_at (b).v; - b--; } } - while (a >= 0) - page_at (--count).v = page_at (--a).v; - while (b >= 0) - page_at (--count).v = other->page_at (--b).v; + if (Op::passthru_left) + while (a) + page_at (--count).v = page_at (--a).v; + if (Op::passthru_right) + while (b) + page_at (--count).v = other->page_at (--b).v; assert (!count); } @@ -369,14 +364,14 @@ struct hb_set_t return *codepoint != INVALID; } - page_map_t map = {major (*codepoint), 0}; + page_map_t map = {get_major (*codepoint), 0}; unsigned int i; page_map.bfind (&map, &i); if (i < page_map.len) { if (pages[page_map[i].index].next (codepoint)) { - *codepoint += page_map[i].major * PAGE_SIZE; + *codepoint += page_map[i].major * page_t::PAGE_BITS; return true; } i++; @@ -386,7 +381,7 @@ struct hb_set_t hb_codepoint_t m = pages[page_map[i].index].get_min (); if (m != INVALID) { - *codepoint = page_map[i].major * PAGE_SIZE + m; + *codepoint = page_map[i].major * page_t::PAGE_BITS + m; return true; } } @@ -424,7 +419,7 @@ struct hb_set_t unsigned int count = pages.len; for (unsigned int i = 0; i < count; i++) if (!page_at (i).is_empty ()) - return page_map[i].major * PAGE_SIZE + page_at (i).get_min (); + return page_map[i].major * page_t::PAGE_BITS + page_at (i).get_min (); return INVALID; } inline hb_codepoint_t get_max (void) const @@ -432,16 +427,15 @@ struct hb_set_t unsigned int count = pages.len; for (int i = count - 1; i >= 0; i++) if (!page_at (i).is_empty ()) - return page_map[i].major * PAGE_SIZE + page_at (i).get_max (); + return page_map[i].major * page_t::PAGE_BITS + page_at (i).get_max (); return INVALID; } - static const unsigned int PAGE_SIZE = sizeof (page_t) * 8; static const hb_codepoint_t INVALID = HB_SET_VALUE_INVALID; page_t *page_for_insert (hb_codepoint_t g) { - page_map_t map = {major (g), pages.len}; + page_map_t map = {get_major (g), pages.len}; unsigned int i; if (!page_map.bfind (&map, &i)) { @@ -456,7 +450,7 @@ struct hb_set_t } page_t *page_for (hb_codepoint_t g) { - page_map_t key = {major (g)}; + page_map_t key = {get_major (g)}; const page_map_t *found = page_map.bsearch (&key); if (found) return &pages[found->index]; @@ -464,7 +458,7 @@ struct hb_set_t } const page_t *page_for (hb_codepoint_t g) const { - page_map_t key = {major (g)}; + page_map_t key = {get_major (g)}; const page_map_t *found = page_map.bsearch (&key); if (found) return &pages[found->index]; @@ -472,7 +466,7 @@ struct hb_set_t } page_t &page_at (unsigned int i) { return pages[page_map[i].index]; } const page_t &page_at (unsigned int i) const { return pages[page_map[i].index]; } - unsigned int major (hb_codepoint_t g) const { return g / PAGE_SIZE; } + unsigned int get_major (hb_codepoint_t g) const { return g / page_t::PAGE_BITS; } }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.cc index d33e525de4a..e2c788225d5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.cc @@ -45,7 +45,8 @@ hb_set_create (void) if (!(set = hb_object_create<hb_set_t> ())) return hb_set_get_empty (); - set->clear (); + set->page_map.init (); + set->pages.init (); return set; } @@ -95,7 +96,8 @@ hb_set_destroy (hb_set_t *set) { if (!hb_object_destroy (set)) return; - set->fini (); + set->page_map.finish (); + set->pages.finish (); free (set); } diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac index 20e28d08054..edbb2c2f8b4 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.6.1]) +m4_define([harfbuzz_version], [1.6.2]) |