summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2019-06-01 08:54:42 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2019-06-01 08:54:42 +0000
commitc3b919224b2b02826bddf55535535ab47638844d (patch)
tree728f7d1ab81bbbed0c1e777c2c63bcc516d8810a /Build
parent6232e1d5fac4d935744926829f80d53a750cbf0b (diff)
harfbuzz-2.5.1
git-svn-id: svn://tug.org/texlive/trunk@51283 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build')
-rw-r--r--Build/source/libs/README2
-rw-r--r--Build/source/libs/harfbuzz/ChangeLog5
-rw-r--r--Build/source/libs/harfbuzz/TLpatches/ChangeLog5
-rw-r--r--Build/source/libs/harfbuzz/TLpatches/TL-Changes2
-rwxr-xr-xBuild/source/libs/harfbuzz/configure24
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog548
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am24
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/NEWS11
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/README.md22
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/README.mingw.md48
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/README.wine.md40
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md54
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/TESTING.md75
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/configure.ac6
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-src/mingw-configure.sh28
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/mingw-ldd.py58
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-src/mingw32.sh2
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-src/mingw64.sh2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ucd-table.py14
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py7
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh21
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic.hh4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex.hh22
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh26
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-deprecated.h4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh8
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh12
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh55
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh9
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math.h4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh609
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.rl20
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-table.cc4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc3
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.hh2
-rw-r--r--Build/source/libs/harfbuzz/version.ac2
39 files changed, 1305 insertions, 486 deletions
diff --git a/Build/source/libs/README b/Build/source/libs/README
index 7f2de168f37..20657ee56f0 100644
--- a/Build/source/libs/README
+++ b/Build/source/libs/README
@@ -25,7 +25,7 @@ graphite2 1.3.13 - checked 21dec18
http://sourceforge.net/projects/silgraphite/files/graphite2/
(requires C++11)
-harfbuzz 2.5.0 - checked 25may19
+harfbuzz 2.5.1 - checked 01jun19
http://www.freedesktop.org/software/harfbuzz/release/
icu 63.1 - checked 8jan19
diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog
index 7016d68e605..c235b3cd6cb 100644
--- a/Build/source/libs/harfbuzz/ChangeLog
+++ b/Build/source/libs/harfbuzz/ChangeLog
@@ -1,3 +1,8 @@
+2019-06-01 Akira Kakuto <kakuto@w32tex.org>
+
+ Import harfbuzz-2.5.1.
+ * version.ac: Adjusted.
+
2019-05-30 Khaled Hosny <dr.khaled.hosny@gmail.com>
* Makefile.am: Fix missing Unicode functions with
diff --git a/Build/source/libs/harfbuzz/TLpatches/ChangeLog b/Build/source/libs/harfbuzz/TLpatches/ChangeLog
index ff7a392febb..40c2ec0e294 100644
--- a/Build/source/libs/harfbuzz/TLpatches/ChangeLog
+++ b/Build/source/libs/harfbuzz/TLpatches/ChangeLog
@@ -1,3 +1,8 @@
+2019-06-01 Akira Kakuto <kakuto@w32tex.org>
+
+ Imported harfbuzz-2.5.1 source tree from:
+ http://www.freedesktop.org/software/harfbuzz/release/
+
2019-05-25 Akira Kakuto <kakuto@w32tex.org>
Imported harfbuzz-2.5.0 source tree from:
diff --git a/Build/source/libs/harfbuzz/TLpatches/TL-Changes b/Build/source/libs/harfbuzz/TLpatches/TL-Changes
index 429e2373692..c3bd0bc15c3 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-2.5.0/ tree as obtained from:
+Changes applied to the harfbuzz-2.5.1/ 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 4991a583f7f..99434ffd35e 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) 2.5.0.
+# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 2.5.1.
#
# 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='2.5.0'
-PACKAGE_STRING='harfbuzz (TeX Live) 2.5.0'
+PACKAGE_VERSION='2.5.1'
+PACKAGE_STRING='harfbuzz (TeX Live) 2.5.1'
PACKAGE_BUGREPORT='tex-k@tug.org'
PACKAGE_URL=''
@@ -1311,7 +1311,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) 2.5.0 to adapt to many kinds of systems.
+\`configure' configures harfbuzz (TeX Live) 2.5.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1382,7 +1382,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of harfbuzz (TeX Live) 2.5.0:";;
+ short | recursive ) echo "Configuration of harfbuzz (TeX Live) 2.5.1:";;
esac
cat <<\_ACEOF
@@ -1487,7 +1487,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-harfbuzz (TeX Live) configure 2.5.0
+harfbuzz (TeX Live) configure 2.5.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2123,7 +2123,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 2.5.0, which was
+It was created by harfbuzz (TeX Live) $as_me 2.5.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -4047,7 +4047,7 @@ fi
# Define the identity of the package.
PACKAGE='harfbuzz--tex-live-'
- VERSION='2.5.0'
+ VERSION='2.5.1'
# Some tools Automake needs.
@@ -4241,8 +4241,8 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags
HB_VERSION_MAJOR=2
HB_VERSION_MINOR=5
-HB_VERSION_MICRO=0
-HB_VERSION=2.5.0
+HB_VERSION_MICRO=1
+HB_VERSION=2.5.1
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -7919,7 +7919,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 2.5.0, which was
+This file was extended by harfbuzz (TeX Live) $as_me 2.5.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -7985,7 +7985,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 2.5.0
+harfbuzz (TeX Live) config.status 2.5.1
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 384e51a917e..ff09cf7e9ba 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog
@@ -1,3 +1,469 @@
+commit 93c455567fe3d92a7efe65bf0e9ac2af794e2c4f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 31 22:53:27 2019 -0700
+
+ 2.5.1
+
+ NEWS | 11 +++++++++++
+ configure.ac | 2 +-
+ src/hb-version.h | 4 ++--
+ 3 files changed, 14 insertions(+), 3 deletions(-)
+
+commit 10e3cb9246ab3d288af4effe484f4d8beb2243d6
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 31 22:56:37 2019 -0700
+
+ [docs] Fix dist
+
+ docs/Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 619f5f1eb9e5e2a4f326f89c9e3e05b01f9c042f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 31 22:31:35 2019 -0700
+
+ Fourth try at building VS bots
+
+ Based on https://github.com/harfbuzz/harfbuzz/issues/1730#issuecomment-497151210
+
+ src/hb-algs.hh | 16 +++++++++++-----
+ 1 file changed, 11 insertions(+), 5 deletions(-)
+
+commit f387a09742bd8e4a7a8da6db954339609839a113
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 31 22:12:23 2019 -0700
+
+ [ci] Disable VS 2013
+
+ That one doesn't even understand constexpr.
+
+ appveyor.yml | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+commit aba3888d933474a874d2f3ff02397b523846466c
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 31 22:11:27 2019 -0700
+
+ Third try at fixing VS build
+
+ https://github.com/harfbuzz/harfbuzz/issues/1730
+
+ src/hb-algs.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 8aaecbb5832568135f6149254ed9e17ac4310341
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 31 21:41:40 2019 -0700
+
+ Second VS fix try
+
+ https://github.com/harfbuzz/harfbuzz/issues/1730
+
+ src/hb-algs.hh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 5a1b5c0a8b91a2291e7327e84acba2406a14414e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 31 21:08:39 2019 -0700
+
+ Try fixing VS builds
+
+ Hopefully fixes https://github.com/harfbuzz/harfbuzz/issues/1730
+
+ src/hb-algs.hh | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit 66381fb73f21e8e3c1c14b196e64d1004be303c7
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 31 20:20:43 2019 -0700
+
+ [ci] Enable other versions of Visual Studio
+
+ https://github.com/harfbuzz/harfbuzz/issues/1730
+
+ appveyor.yml | 44 ++++++++++++++++++++++++--------------------
+ 1 file changed, 24 insertions(+), 20 deletions(-)
+
+commit 92fde3dea282d308fad2b8e93cd638aa813c6f2a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 31 20:16:25 2019 -0700
+
+ Whitespace
+
+ src/hb-algs.hh | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 49879adbfc57c3173a25bbc55afc0796ee71b6da
+Author: rsheeter <rsheeter@google.com>
+Date: Fri May 31 15:14:44 2019 -0700
+
+ [subset] Correct calculation of max offset; fixes bug where loca would erroneously be short
+
+ src/hb-ot-glyf-table.hh | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit 2ad4ba7bc04fbbd886a2da6fbc55a4e13468d878
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 31 15:48:54 2019 -0700
+
+ [gsub] Minor
+
+ src/hb-ot-layout-gsub-table.hh | 40 +++++++++++++++++++++-------------------
+ 1 file changed, 21 insertions(+), 19 deletions(-)
+
+commit 2dbdec66a17af94fffc50949e4712465aada9a68
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 31 15:38:11 2019 -0700
+
+ [gsub] Porting serialize to iterators
+
+ src/hb-ot-layout-gsub-table.hh | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+commit 1834cf86d40abfbb536db1edb366c90318ba49fc
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 31 14:39:32 2019 -0700
+
+ [serialize] Pass offset to serialize_subset()
+
+ src/hb-open-type.hh | 14 +++++++++-----
+ src/hb-ot-layout-common.hh | 4 ++--
+ src/hb-ot-layout-gdef-table.hh | 12 ++++++------
+ src/hb-ot-layout-gsubgpos.hh | 7 ++++---
+ 4 files changed, 21 insertions(+), 16 deletions(-)
+
+commit 926044162472aeca8f5032b11b544d38be587110
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 31 14:34:34 2019 -0700
+
+ [serialize] Pass offset to serialize_copy()
+
+ src/hb-open-type.hh | 12 ++++++++----
+ src/hb-ot-layout-common.hh | 4 ++--
+ src/hb-ot-layout-gsubgpos.hh | 2 +-
+ src/hb-ot-name-table.hh | 2 +-
+ 4 files changed, 12 insertions(+), 8 deletions(-)
+
+commit 87dd4bff1c42f1845fb3d11477e5de210121d48e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu May 30 11:26:17 2019 -0400
+
+ [math] Rename HB_MATH_GLYPH_PART_FLAG_EXTENDER
+
+ To HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER. Added a deprecated macro.
+
+ Fixes https://github.com/harfbuzz/harfbuzz/issues/1734
+
+ src/hb-ot-deprecated.h | 4 ++++
+ src/hb-ot-math-table.hh | 2 +-
+ src/hb-ot-math.h | 2 +-
+ test/api/test-ot-math.c | 16 ++++++++--------
+ 4 files changed, 14 insertions(+), 10 deletions(-)
+
+commit 88f9dab366491af144da316384991e74af443226
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Wed May 29 01:55:31 2019 +0430
+
+ [ci] Clean up and add disabled bots of other msvc versions (#1733)
+
+ appveyor.yml | 41 ++++++++++++++++++++++++++++++-----------
+ 1 file changed, 30 insertions(+), 11 deletions(-)
+
+commit da9d43171ba4ae0a78c92e9de83498fd2f513c8b
+Author: Bruce Mitchener <bruce.mitchener@gmail.com>
+Date: Tue May 28 21:50:17 2019 +0700
+
+ Fix some typos.
+
+ docs/usermanual-clusters.xml | 4 ++--
+ docs/usermanual-fonts-and-faces.xml | 2 +-
+ src/hb-ot-math.h | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 8a133718472d152fa1f69ec52862b019b71b371f
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Tue May 28 13:54:45 2019 +0430
+
+ [test] minor, fix copyright
+
+ nothing important, fixing a copy paste error inconsistency
+
+ test/api/test-aat-layout.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 13316ac5d435f11c2c65fd2d762841a819afb639
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Tue May 28 13:48:39 2019 +0430
+
+ [test] minor style improve
+
+ test/subset/run-tests.py | 38 +++++++++++++++++++-------------------
+ 1 file changed, 19 insertions(+), 19 deletions(-)
+
+commit d64fb9db520d77eb7bb40ceda4e20be5e602bf91
+Author: David Corbett <corbett.dav@husky.neu.edu>
+Date: Sun May 26 11:05:54 2019 -0400
+
+ [use] Allow U+1A60 TAI THAM SIGN SAKOT after vowel
+
+ src/gen-use-table.py | 7 +-
+ src/hb-ot-shape-complex-use-machine.hh | 609 +++++++++++----------
+ src/hb-ot-shape-complex-use-machine.rl | 20 +-
+ src/hb-ot-shape-complex-use-table.cc | 4 +-
+ src/hb-ot-shape-complex-use.cc | 3 +
+ src/hb-ot-shape-complex-use.hh | 2 +
+ .../3cc01fede4debd4b7794ccb1b16cdb9987ea7571.ttf | Bin 0 -> 1144 bytes
+ .../fd565cabd5208d345d0ed4fda7ae742917d846a5.ttf | Bin 1056 -> 0 bytes
+ .../shaping/data/in-house/tests/use-syllable.tests | 5 +-
+ 9 files changed, 351 insertions(+), 299 deletions(-)
+
+commit 179570d4cae9aefcd91d540b8865a81d569b3358
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon May 27 13:08:07 2019 -0400
+
+ [atomic] Fix warning, second time
+
+ Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1554306
+
+ src/hb-atomic.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ad17a8bdd571c7b275f9735e3602a8068f12934f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sat May 25 16:33:21 2019 -0400
+
+ [ucd] Update for latest packTab
+
+ src/gen-ucd-table.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 771712b3ca97035ba5690e65bd7e63a852286159
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sat May 25 15:58:45 2019 -0400
+
+ [ucd] Update for recent packTab
+
+ No need for separate youseedy package.
+
+ src/gen-ucd-table.py | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 52aa6c57c5a4b18807a1329549dface90b148f22
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat May 25 22:55:06 2019 +0430
+
+ [ci] minor
+
+ .circleci/config.yml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 9b75da4299adb5487519ddf96e99949b1dad2d5c
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat May 25 22:46:10 2019 +0430
+
+ [ci] minor
+
+ .circleci/config.yml | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 9158cab3f9f9e1a4941c1dbf0aa71455ceb00da6
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat May 25 22:33:02 2019 +0430
+
+ [ci] Store dist-win result instead
+
+ .circleci/config.yml | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+commit 85b68a42af541bc91f2851389ac09b012a6d3aa1
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sat May 25 12:59:01 2019 -0400
+
+ [atomic] Fix warnings
+
+ https://bugzilla.mozilla.org/show_bug.cgi?id=1554306
+
+ src/hb-atomic.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 941c1b6d711b8528d0f5faa5655b09ea74f7dfb4
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sat May 25 12:52:16 2019 -0400
+
+ [mingw] Update instructions
+
+ https://github.com/harfbuzz/harfbuzz/issues/1728
+
+ RELEASING.md | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 210f93c143d0fa2a7b293a6ffd138b3e01cab7c0
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sat May 25 12:49:20 2019 -0400
+
+ [mutex] Prefer pthread over windows
+
+ https://github.com/harfbuzz/harfbuzz/issues/1728
+
+ src/hb-mutex.hh | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+commit a5d1b0bdaa0183e2bd310640f5867426096e0b18
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sat May 25 12:45:40 2019 -0400
+
+ Look for pthread even if win32
+
+ https://github.com/harfbuzz/harfbuzz/issues/1728
+
+ configure.ac | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+commit f3b132187fc734cbb3705b405361c8bad9a72582
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sat May 25 12:42:38 2019 -0400
+
+ [mingw] Some more tweaks
+
+ It now survives ./config.status --recheck as well.
+
+ https://github.com/harfbuzz/harfbuzz/issues/1728
+
+ mingw-configure.sh | 37 ++++++++++++++++++-------------------
+ mingw32.sh | 2 +-
+ mingw64.sh | 2 +-
+ 3 files changed, 20 insertions(+), 21 deletions(-)
+
+commit c41ed54b169c16fb9862e88ddf127ae68c1561e9
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sat May 25 12:35:09 2019 -0400
+
+ [mingw] Add "make dist-win" to toplevel Makefile
+
+ Makefile.am | 16 +++++++++++++---
+ 1 file changed, 13 insertions(+), 3 deletions(-)
+
+commit a0a75a7c701932f4533b104eeb3c6087d01aa2ae
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sat May 25 12:16:28 2019 -0400
+
+ [mingw] More
+
+ Makefile.am | 8 +++++++-
+ mingw-configure.sh | 29 +++++++++++++++++++++++++++++
+ mingw32.sh | 25 ++-----------------------
+ mingw64.sh | 25 ++-----------------------
+ 4 files changed, 40 insertions(+), 47 deletions(-)
+
+commit 309a9d8ffb499f89738864acef596685ca495150
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat May 25 20:40:03 2019 +0430
+
+ [ci] Remove --without-icu now that we have it in ./mingw{32,64} scripts
+
+ .circleci/config.yml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit ccfe642c0cdc9fbc8280669e3e8b01dc5eb682d8
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sat May 25 12:08:05 2019 -0400
+
+ [mingw] Force off ICU
+
+ If cross-compiled ICU is not available, we might end up finding the
+ native ICU via icu-config. That's distracting.
+
+ mingw32.sh | 2 +-
+ mingw64.sh | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 0e6b7f7cd51d7376f21a422881cb4eb542360b0b
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat May 25 20:27:29 2019 +0430
+
+ [ci] Build mingw on Fedora and store .exe outputs
+
+ .circleci/config.yml | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+commit 7b716cbbe6de2902ca6b1f67024b3f8cdb41340c
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sat May 25 11:37:23 2019 -0400
+
+ [ming2] Update instructions
+
+ Part of https://github.com/harfbuzz/harfbuzz/issues/1728
+
+ Only left to write how to create a win32 bundle.
+
+ README.mingw.md | 44 ++++++++++++++++++++++++++------------------
+ RELEASING.md | 54 ++++++------------------------------------------------
+ 2 files changed, 32 insertions(+), 66 deletions(-)
+
+commit 77a1b6b7c3bd5490ffa5bb48a8b52d9c4c18e669
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sat May 25 11:18:40 2019 -0400
+
+ [mingw] Rename README.wine
+
+ Makefile.am | 2 +-
+ README.wine.md => README.mingw.md | 0
+ 2 files changed, 1 insertion(+), 1 deletion(-)
+
+commit c68b4264880c0f99bcb579345e51ce54e799655b
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sat May 25 11:17:56 2019 -0400
+
+ [mingw] Update for recent change
+
+ README.wine.md | 2 +-
+ RELEASING.md | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 5cf2e648a67e1af20a23e010c86e8812a74ff7a4
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Sat May 25 11:15:15 2019 -0400
+
+ [mingw] Update for Fedora mingw installation location
+
+ Also adds --with-uniscribe by default.
+
+ Part of https://github.com/harfbuzz/harfbuzz/issues/1728
+
+ mingw32.sh | 9 +++++----
+ mingw64.sh | 9 +++++----
+ 2 files changed, 10 insertions(+), 8 deletions(-)
+
+commit e7ed85de95d3ccdb674ec5a30ae66d53cea74b3a
+Merge: f93a5e6a 97ba206b
+Author: n8willis <n8willis@users.noreply.github.com>
+Date: Sat May 25 16:05:07 2019 +0100
+
+ Merge pull request #1691 from n8willis/usermanual-shaping
+
+ Usermanual: Add new chapters.
+
+commit 97ba206bed341dc7c915a86531512b1e0617303d
+Author: Nathan Willis <nwillis@glyphography.com>
+Date: Sat May 25 12:26:50 2019 +0100
+
+ Usermanual; minor.
+
+ ...usermanual-buffers-language-script-and-direction.xml | 2 +-
+ docs/usermanual-opentype-features.xml | 17 ++++++++++-------
+ 2 files changed, 11 insertions(+), 8 deletions(-)
+
+commit f93a5e6a7dad4fde2bf61c241bf32da678525c8b
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 24 17:02:38 2019 -0400
+
+ [win] Add mingw-ldd.py
+
+ Part of https://github.com/harfbuzz/harfbuzz/issues/1728
+
+ mingw-ldd.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 58 insertions(+)
+
commit 5fd3ece5237ac6a4ee95b2665b5e20102ed176bb
Author: Behdad Esfahbod <behdad@behdad.org>
Date: Fri May 24 15:56:15 2019 -0400
@@ -19,6 +485,15 @@ Date: Fri May 24 15:41:34 2019 -0400
src/hb-common.cc | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
+commit dd5ad6b6b5aed3db62bc03b89acf90c68795edb4
+Author: Nathan Willis <nwillis@glyphography.com>
+Date: Fri May 24 20:30:22 2019 +0100
+
+ Usermanual-buffers-chapter: trim out fallback-of-ufuncs talk and just mention that stuff exists if you care to go find it.
+
+ docs/usermanual-buffers-language-script-and-direction.xml | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
commit e1a5ce6aa661251e998df7b3612a1d5d39e28827
Author: Qunxin Liu <qxliu@google.com>
Date: Fri May 24 10:58:52 2019 -0700
@@ -33,6 +508,15 @@ Date: Fri May 24 10:58:52 2019 -0700
...estcase-minimized-hb-subset-fuzzer-5761434614497280 | Bin 0 -> 532 bytes
3 files changed, 1 insertion(+), 1 deletion(-)
+commit 240540ff9a463cf386ae5755471a5621b94290df
+Author: Nathan Willis <nwillis@glyphography.com>
+Date: Fri May 24 20:13:35 2019 +0100
+
+ Usermanual-buffers-chapter: explain ICU fallback for Ufuncs.
+
+ docs/usermanual-buffers-language-script-and-direction.xml | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
commit d100ccad02b038719472b2cc733940ffb0374cd1
Author: David Corbett <corbett.dav@husky.neu.edu>
Date: Sun May 19 10:01:20 2019 -0400
@@ -1750,6 +2234,24 @@ Date: Sat May 11 18:48:41 2019 -0400
test/fuzzing/main.cc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
+commit a29b1de55abca2e90733caff7423e5251d72e03c
+Author: Nathan Willis <nwillis@glyphography.com>
+Date: Sat May 11 20:56:55 2019 +0100
+
+ Usermanual, fix up userfeatures example code in OpenType features section of shaping chapter.
+
+ docs/usermanual-opentype-features.xml | 15 +++++++++++----
+ 1 file changed, 11 insertions(+), 4 deletions(-)
+
+commit 78fcb14db9041af0e0d5ea209cf0cb1977f6dcc3
+Author: Nathan Willis <nwillis@glyphography.com>
+Date: Sat May 11 20:56:02 2019 +0100
+
+ Usermanual, minor: flesh out invisible-glyph discussion in buffers chapter.
+
+ ...ermanual-buffers-language-script-and-direction.xml | 19 +++++++++++++++----
+ 1 file changed, 15 insertions(+), 4 deletions(-)
+
commit 25531a30394c451a7a2aee77928e0a550015b803
Author: Ebrahim Byagowi <ebrahim@gnu.org>
Date: Sat May 11 19:50:42 2019 +0000
@@ -4265,6 +4767,52 @@ Date: Tue Apr 30 13:35:50 2019 -0400
src/hb-ot-shape-complex-myanmar.hh | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
+commit 68749e996aedbae9b1c4553f5672f74e1727b850
+Author: Nathan Willis <nwillis@glyphography.com>
+Date: Tue Apr 30 17:23:55 2019 +0100
+
+ [Docs] Usermanual; update XML manifest for new chapters.
+
+ docs/Makefile.am | 4 ++--
+ docs/harfbuzz-docs.xml | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 30d7d1064ee339ca216699851030f9bae8c07c68
+Author: Nathan Willis <nwillis@glyphography.com>
+Date: Tue Apr 30 17:23:19 2019 +0100
+
+ [Docs] Usermanual; add Utilities chapter.
+
+ docs/usermanual-utilities.xml | 244 ++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 244 insertions(+)
+
+commit d0f5a05aef73293fe21ddb022084166a7a095862
+Author: Nathan Willis <nwillis@glyphography.com>
+Date: Tue Apr 30 17:22:54 2019 +0100
+
+ [Docs] Usermanual; add Shaping, Features, and Plans.
+
+ docs/usermanual-opentype-features.xml | 279 +++++++++++++++++++++++++++++++++-
+ 1 file changed, 277 insertions(+), 2 deletions(-)
+
+commit 8354c99fbee2887cb71440f4e25ad1e6f46b2592
+Author: Nathan Willis <nwillis@glyphography.com>
+Date: Tue Apr 30 17:22:08 2019 +0100
+
+ [Docs] Usermanual; add Fonts And Faces chapter.
+
+ docs/usermanual-fonts-and-faces.xml | 445 +++++++++++++++++++++++++++++++++++-
+ 1 file changed, 437 insertions(+), 8 deletions(-)
+
+commit 3b301c5ac6b15728f858cb6f5de8dfc6a77209fa
+Author: Nathan Willis <nwillis@glyphography.com>
+Date: Tue Apr 30 17:21:33 2019 +0100
+
+ [Docs] Usermanual; fill out Buffers chapter.
+
+ ...anual-buffers-language-script-and-direction.xml | 358 +++++++++++++++++++--
+ 1 file changed, 335 insertions(+), 23 deletions(-)
+
commit 6d9a86ae7535ea8e3c108a49c6da877a78cdac26
Author: Nathan Willis <nwillis@glyphography.com>
Date: Tue Apr 30 16:09:01 2019 +0100
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am
index a66e2c8280e..26ebdc6e79a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am
@@ -9,12 +9,18 @@ SUBDIRS = src util test docs
EXTRA_DIST = \
autogen.sh \
harfbuzz.doap \
+ README.md \
+ README.mingw.md \
README.python.md \
- README.wine.md \
BUILD.md \
RELEASING.md \
+ TESTING.md \
CMakeLists.txt \
replace-enum-strings.cmake \
+ mingw-configure.sh \
+ mingw-ldd.py \
+ mingw32.sh \
+ mingw64.sh \
$(NULL)
MAINTAINERCLEANFILES = \
@@ -60,8 +66,6 @@ DISTCHECK_CONFIGURE_FLAGS = \
--enable-introspection \
$(NULL)
-# TODO: Copy infrastructure from cairo
-
# TAR_OPTIONS is not set as env var for 'make dist'. How to fix that?
TAR_OPTIONS = --owner=0 --group=0
@@ -70,7 +74,6 @@ dist-hook: dist-clear-sticky-bits
dist-clear-sticky-bits:
chmod -R a-s $(distdir)
-
tar_file = $(PACKAGE_TARNAME)-$(VERSION).tar.xz
sha256_file = $(tar_file).sha256
gpg_file = $(sha256_file).asc
@@ -82,5 +85,18 @@ $(gpg_file): $(sha256_file)
release-files: $(tar_file) $(sha256_file) $(gpg_file)
+dist-win:
+ @case $(host_triplet) in *-w64-mingw32) ;; *) echo "Error: Requires mingw build. See README.mingw.md.">&2; exit 1 ;; esac
+ @DIR=$(PACKAGE_TARNAME)-$(VERSION)-win`case $(host_triplet) in i686-*) echo 32 ;; x86_64-*) echo 64 ;; esac`; \
+ $(RM) -r $$DIR; $(MKDIR_P) $$DIR || exit 1; \
+ cp util/.libs/hb-{shape,view,subset}.exe $$DIR && \
+ $(top_srcdir)/mingw-ldd.py $$DIR/hb-view.exe | grep -v 'not found' | cut -d '>' -f 2 | xargs cp -t $$DIR && \
+ cp src/.libs/libharfbuzz{,-subset}-0.dll $$DIR && \
+ chmod a+x $$DIR/*.{exe,dll} && \
+ $(STRIP) $$DIR/*.{exe,dll} && \
+ zip -r $$DIR.zip $$DIR && \
+ $(RM) -r $$DIR && \
+ echo "$$DIR.zip is ready."
+
-include $(top_srcdir)/git.mk
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
index 752ebf78eb5..51929738a53 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
@@ -1,3 +1,14 @@
+Overview of changes leading to 2.5.1
+Friday, May 31, 2019
+====================================
+- Fix build with various versions of Visual Studio.
+- Improved documentation, thanks to Nathan Willis.
+- Bugfix in subsetting glyf table.
+- Improved scripts for cross-compiling for Windows using mingw.
+- Rename HB_MATH_GLYPH_PART_FLAG_EXTENDER to HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER.
+ A deprecated macro is added for backwards-compatibility.
+
+
Overview of changes leading to 2.5.0
Friday, May 24, 2019
====================================
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/README.md b/Build/source/libs/harfbuzz/harfbuzz-src/README.md
new file mode 100644
index 00000000000..ce0a04d1f09
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/README.md
@@ -0,0 +1,22 @@
+[![Travis Build Status](https://travis-ci.org/harfbuzz/harfbuzz.svg?branch=master)](https://travis-ci.org/harfbuzz/harfbuzz)
+[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/0t0flrxpstj9lb9w?svg=true&branch=master)](https://ci.appveyor.com/project/harfbuzz/harfbuzz)
+[![CircleCI Build Status](https://circleci.com/gh/harfbuzz/harfbuzz/tree/master.svg?style=svg)](https://circleci.com/gh/harfbuzz/harfbuzz/tree/master)
+[![Coverity Code Health](https://img.shields.io/coverity/scan/5450.svg)](https://scan.coverity.com/projects/behdad-harfbuzz)
+[![Codacy Code Health](https://api.codacy.com/project/badge/Grade/f17f1708783c447488bc8dd317150eaa)](https://app.codacy.com/app/behdad/harfbuzz)
+[![Codecov Code Coverage](https://codecov.io/gh/harfbuzz/harfbuzz/branch/master/graph/badge.svg)](https://codecov.io/gh/harfbuzz/harfbuzz)
+[![Coverals Code Coverage](https://img.shields.io/coveralls/harfbuzz/harfbuzz.svg)](https://coveralls.io/r/harfbuzz/harfbuzz)
+[ABI Tracker](http://abi-laboratory.pro/tracker/timeline/harfbuzz/)
+
+This is HarfBuzz, a text shaping library.
+
+For bug reports, mailing list, and other information please visit:
+
+ http://harfbuzz.org/
+
+For license information, see [COPYING](COPYING).
+
+For build information, see [BUILD.md](BUILD.md).
+
+For test execution, see [TESTING.md](TESTING.md).
+
+Documentation: https://harfbuzz.github.io
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/README.mingw.md b/Build/source/libs/harfbuzz/harfbuzz-src/README.mingw.md
new file mode 100644
index 00000000000..76d1a8754e3
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/README.mingw.md
@@ -0,0 +1,48 @@
+For the development of HarfBuzz, the Microsoft shaping technology, Uniscribe,
+as a widely used and tested shaper is used as more-or-less OpenType reference
+implementation and that specially is important where OpenType specification
+is or wasn't that clear. For having access to Uniscribe on Linux/macOS these
+steps are recommended:
+
+1. Install Wine from your favorite package manager. On Fedora that's `dnf install wine`.
+
+2. And `mingw-w64` compiler.
+ With `brew` on macOS, you can have it like `brew install mingw-w64`.
+ On Fedora, with `dnf install mingw32-gcc-c++`, or `dnf install mingw64-gcc-c++` for the
+ 64-bit Windows.
+
+3. Install cross-compiled dependency packages. Alternatively see [^1] below.
+ On Fedora that would be `dnf install mingw32-glib2 mingw32-cairo mingw32-freetype`
+ for 32-bit, or `dnf install mingw64-glib2 mingw64-cairo mingw64-freetype` for 64-bit.
+
+5. `NOCONFIGURE=1 ./autogen.sh && mkdir winbuild && cd winbuild`
+
+6. Run `../mingw32.sh` for 32-bit build, or `../mingw64.sh` for 64-bit. This configures
+ HarfBuzz for cross-compiling. It enables Uniscribe backend as well.
+
+7. `make`
+
+Now you can use hb-shape using `wine util/hb-shape.exe` but if you like to shape with
+the Microsoft Uniscribe,
+
+8. Bring a 32bit version of `usp10.dll` for yourself from `C:\Windows\SysWOW64\usp10.dll` of your
+ Windows installation (assuming you have a 64-bit installation, otherwise
+ `C:\Windows\System32\usp10.dll`) that it is not a DirectWrite proxy
+ ([for more info](https://en.wikipedia.org/wiki/Uniscribe)).
+ Rule of thumb, your `usp10.dll` should have a size more than 500kb, otherwise
+ it is designed to work with DirectWrite which Wine can't work with its original one.
+ You want a Uniscribe from Windows 7 or older.
+
+ Put the DLL in the folder you are going to run the next command,
+
+9. `WINEDLLOVERRIDES="usp10=n" wine util/hb-shape.exe fontname.ttf -u 0061,0062,0063 --shaper=uniscribe`
+
+(`0061,0062,0063` means `abc`, use test/shaping/hb-unicode-decode to generate ones you need)
+
+
+[^1] Download and put [this](https://drive.google.com/open?id=0B3_fQkxDZZXXbWltRGd5bjVrUDQ)
+ in your `~/.local/i686-w64-mingw32`. Then replace all the instances of
+ `/home/behdad/.local/i586-mingw32msvc` and `/home/behdad/.local/i686-w64-mingw32`
+ with `<$HOME>/.local/i686-w64-mingw32` on that folder.
+ (`<$HOME>` replace it with `/home/XXX` or `/Users/XXX` on macOS)
+ You shouldn't replace the instances of those inside binary files.
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/README.wine.md b/Build/source/libs/harfbuzz/harfbuzz-src/README.wine.md
deleted file mode 100644
index 799eb631f87..00000000000
--- a/Build/source/libs/harfbuzz/harfbuzz-src/README.wine.md
+++ /dev/null
@@ -1,40 +0,0 @@
-For the development of HarfBuzz, the Microsoft shaping technology, Uniscribe,
-as a widely used and tested shaper is used as more-or-less OpenType reference
-implementation and that specially is important where OpenType specification
-is or wasn't that clear. For having access to Uniscribe on Linux/macOS these
-steps are recommended:
-
-1. Install Wine from your favorite package manager.
-
-2. And `mingw-w64` compiler.
- With `brew` on macOS, you can have it like `brew install mingw-w64`
-
-3. Download and put [this](https://drive.google.com/open?id=0B3_fQkxDZZXXbWltRGd5bjVrUDQ)
- on your `~/.local/i686-w64-mingw32`.
-
-4. Replace all the instances of `/home/behdad/.local/i586-mingw32msvc`
- and `/home/behdad/.local/i686-w64-mingw32` with `<$HOME>/.local/i686-w64-mingw32`
- on that folder. (`<$HOME>` replace it with `/home/XXX` or `/Users/XXX` on macOS)
-
- Probably you shouldn't replace the ones are inside binaries.
-
-5. `NOCONFIGURE=1 ./autogen.sh && mkdir winbuild && cd winbuild`
-
-6. `../mingw32.sh --with-uniscribe && cd ..`
-
-7. `make -Cwinbuild`
-
-Now you can use hb-shape using `wine winbuild/util/hb-shape.exe` but if you like to
-to use the original Uniscribe,
-
-8. Bring a 32bit version of `usp10.dll` for yourself from `C:\Windows\SysWOW64\usp10.dll` of your
- Windows installation (assuming you have a 64-bit installation, otherwise `C:\Windows\System32\usp10.dll`)
- that it is not a DirectWrite proxy ([for more info](https://en.wikipedia.org/wiki/Uniscribe)).
- Rule of thumb, your `usp10.dll` should have a size more than 500kb, otherwise
- it is designed to work with DirectWrite which Wine can't work with its original one.
-
- Put the dll on the folder you are going to run the next command,
-
-9. `WINEDLLOVERRIDES="usp10=n" wine winbuild/util/hb-shape.exe fontname.ttf -u 0061,0062,0063 --shaper=uniscribe`
-
-(`0061,0062,0063` means `abc`, use test/shaping/hb-unicode-decode to generate ones you need)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md b/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md
index 5dcce58847c..360aea76450 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md
@@ -46,27 +46,21 @@ HarfBuzz release walk-through checklist:
10. Build win32 bundle.
- a. Put contents of [this](https://drive.google.com/open?id=0B3_fQkxDZZXXbWltRGd5bjVrUDQ) on your `~/.local/i686-w64-mingw32`,
+ a. Build Win32 binaries. See [README.mingw.md](README.mingw.md).
- b. Run `../mingw32.sh --with-uniscribe` script 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.
+ b. Run "make dist-win" to build Win32 bundle.
11. 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 1592693 Jul 18 11:25 harfbuzz-1.4.7.tar.xz
+-rw-r--r-- 1 behdad eng 89 Jul 18 11:34 harfbuzz-1.4.7.tar.xz.sha256
+-rw-r--r-- 1 behdad eng 339 Jul 18 11:34 harfbuzz-1.4.7.tar.xz.sha256.asc
-rw-r--r-- 1 behdad eng 2895619 Jul 18 11:34 harfbuzz-1.4.7-win32.zip
```
-12. While doing that, quickly double-check the size of the .tar.bz2 and .zip
+12. While doing that, quickly double-check the size of the .tar.xz 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.
@@ -76,39 +70,3 @@ HarfBuzz release walk-through checklist:
14. Go to GitHub release page [here](https://github.com/harfbuzz/harfbuzz/releases),
edit the tag, upload artefacts and NEWS entry and save.
-
-
-## UPDATE.sh
-```bash
-#!/bin/bash
-
-v=$1
-
-if test "x$v" = x; then
- echo "usage: UPDATE.sh micro-version"
- exit 1
-fi
-
-dir_prefix=harfbuzz-1.4.
-dir_suffix=-win32
-dir=$dir_prefix$v$dir_suffix
-dir_old=$dir_prefix$((v-1))$dir_suffix
-if test -d "$dir"; then
- echo "New dir $dir exists; not overwriting"
- exit 1
-fi
-if ! test -d "$dir_old"; then
- echo "Old dir $dir_old does NOT exist; aborting"
- exit 1
-fi
-set -ex
-cp -a "$dir_old" "$dir.tmp"
-rm -f "$dir.tmp"/GDX32.dll
-rm -f "$dir.tmp"/usp10.dll
-cp ../winbuild/src/.libs/libharfbuzz-0.dll{,.def} $dir.tmp/
-cp ../winbuild/util/.libs/hb-{shape,view}.exe $dir.tmp/
-i686-w64-mingw32-strip $dir.tmp/{hb-shape.exe,hb-view.exe,libharfbuzz-0.dll}
-mv $dir.tmp $dir
-zip -r $dir.zip $dir
-echo Bundle $dir.zip ready
-```
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/TESTING.md b/Build/source/libs/harfbuzz/harfbuzz-src/TESTING.md
new file mode 100644
index 00000000000..4efc64ca5a9
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/TESTING.md
@@ -0,0 +1,75 @@
+## Build & Run
+
+Depending on what area you are working in change or add `HB_DEBUG_<whatever>`.
+Values defined in `hb-debug.hh`.
+
+```shell
+# quick sanity check
+time (make -j4 CPPFLAGS='-DHB_DEBUG_SUBSET=100' \
+ && (make -j4 -C test/api check || cat test/api/test-suite.log))
+
+# slower sanity check
+time (make -j4 CPPFLAGS='-DHB_DEBUG_SUBSET=100' \
+ && make -j4 -C src check \
+ && make -j4 -C test/api check \
+ && make -j4 -C test/subset check)
+
+# confirm you didn't break anything else
+time (make -j4 CPPFLAGS='-DHB_DEBUG_SUBSET=100' \
+ && make -j4 check)
+
+# often catches files you didn't add, e.g. test fonts to EXTRA_DIST
+make distcheck
+```
+
+### Run tests with asan
+
+**NOTE**: this sometimes yields harder to read results than the full fuzzer
+
+```shell
+# For nice symbols tell asan how to symoblize. Note that it doesn't like versioned copies like llvm-symbolizer-3.8
+# export ASAN_SYMBOLIZER_PATH=path to version-less llvm-symbolizer
+# ex
+export ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-3.8/bin/llvm-symbolizer
+
+./configure CC=clang CXX=clang++ CPPFLAGS=-fsanitize=address LDFLAGS=-fsanitize=address
+# make/run tests as usual
+```
+
+### Debug with GDB
+
+```
+cd ./util
+../libtool --mode=execute gdb --args ./hb-subset ...
+```
+
+### Enable Debug Logging
+
+```shell
+# make clean if you previously build w/o debug logging
+make CPPFLAGS=-DHB_DEBUG_SUBSET=100
+```
+
+## Build and Test via CMake
+
+Note: You'll need to first install ninja-build via apt-get.
+
+```shell
+cd harfbuzz
+mkdir buid
+cmake -DHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild && CTEST_OUTPUT_ON_FAILURE=1 ninja -Cbuild test
+```
+## Test with the Fuzzer
+
+```shell
+# push your changs to a branch on googlefonts/harfbuzz
+# In a local copy of oss-fuzz, edit projects/harfbuzz/Dockerfile
+# Change the git clone to pull your branch
+
+# Do this periodically
+sudo python infra/helper.py build_image harfbuzz
+
+# Do these to update/run
+sudo python infra/helper.py build_fuzzers --sanitizer address harfbuzz
+sudo python infra/helper.py run_fuzzer harfbuzz hb-subset-fuzzer
+```
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac
index e53928a8fdd..6a68df79e63 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],
- [2.5.0],
+ [2.5.1],
[https://github.com/harfbuzz/harfbuzz/issues/new],
[harfbuzz],
[http://harfbuzz.org/])
@@ -134,9 +134,7 @@ AC_MSG_RESULT([$hb_os_win32])
AM_CONDITIONAL(OS_WIN32, test "$hb_os_win32" = "yes")
have_pthread=false
-if test "$hb_os_win32" = no; then
- AX_PTHREAD([have_pthread=true])
-fi
+AX_PTHREAD([have_pthread=true])
if $have_pthread; then
AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads])
fi
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/mingw-configure.sh b/Build/source/libs/harfbuzz/harfbuzz-src/mingw-configure.sh
new file mode 100755
index 00000000000..3281ce38299
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/mingw-configure.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+case $1 in
+ i686 | x86_64) ;;
+ *) echo "Usage: $0 i686|x86_64" >&2; exit 1 ;;
+esac
+
+target=$1-w64-mingw32
+shift
+
+exec "$(dirname "$0")"/configure \
+ --build=`../config.guess` \
+ --host=$target \
+ --prefix=$HOME/.local/$target \
+ CC= \
+ CXX= \
+ CPP= \
+ LD= \
+ CFLAGS="-static-libgcc" \
+ CXXFLAGS="-static-libgcc -static-libstdc++" \
+ CPPFLAGS="-I$HOME/.local/$target/include" \
+ LDFLAGS=-L$HOME/.local/$target/lib \
+ PKG_CONFIG_LIBDIR=$HOME/.local/$target/lib/pkgconfig:/usr/$target/sys-root/mingw/lib/pkgconfig/ \
+ PKG_CONFIG_PATH=$HOME/.local/$target/share/pkgconfig:/usr/$target/sys-root/mingw/share/pkgconfig/ \
+ PATH=$HOME/.local/$target/bin:/usr/$target/sys-root/mingw/bin:/usr/$target/bin:$PATH \
+ --without-icu \
+ --with-uniscribe \
+ "$@"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/mingw-ldd.py b/Build/source/libs/harfbuzz/harfbuzz-src/mingw-ldd.py
new file mode 100644
index 00000000000..1d659efa46d
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/mingw-ldd.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+
+# Copied from https://github.com/xantares/mingw-ldd/blob/master/mingw-ldd.py
+# Modified to point to right prefix location on Fedora.
+
+# WTFPL - Do What the Fuck You Want to Public License
+from __future__ import print_function
+import pefile
+import os
+import sys
+
+
+def get_dependency(filename):
+ deps = []
+ pe = pefile.PE(filename)
+ for imp in pe.DIRECTORY_ENTRY_IMPORT:
+ deps.append(imp.dll.decode())
+ return deps
+
+
+def dep_tree(root, prefix=None):
+ if not prefix:
+ arch = get_arch(root)
+ #print('Arch =', arch)
+ prefix = '/usr/'+arch+'-w64-mingw32/sys-root/mingw/bin'
+ #print('Using default prefix', prefix)
+ dep_dlls = dict()
+
+ def dep_tree_impl(root, prefix):
+ for dll in get_dependency(root):
+ if dll in dep_dlls:
+ continue
+ full_path = os.path.join(prefix, dll)
+ if os.path.exists(full_path):
+ dep_dlls[dll] = full_path
+ dep_tree_impl(full_path, prefix=prefix)
+ else:
+ dep_dlls[dll] = 'not found'
+
+ dep_tree_impl(root, prefix)
+ return (dep_dlls)
+
+
+def get_arch(filename):
+ type2arch= {pefile.OPTIONAL_HEADER_MAGIC_PE: 'i686',
+ pefile.OPTIONAL_HEADER_MAGIC_PE_PLUS: 'x86_64'}
+ pe = pefile.PE(filename)
+ try:
+ return type2arch[pe.PE_TYPE]
+ except KeyError:
+ sys.stderr.write('Error: unknown architecture')
+ sys.exit(1)
+
+if __name__ == '__main__':
+ filename = sys.argv[1]
+ for dll, full_path in dep_tree(filename).items():
+ print(' ' * 7, dll, '=>', full_path)
+
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/mingw32.sh b/Build/source/libs/harfbuzz/harfbuzz-src/mingw32.sh
new file mode 100755
index 00000000000..77edffa98ce
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/mingw32.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec "$(dirname "$0")"/mingw-configure.sh i686 "$@"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/mingw64.sh b/Build/source/libs/harfbuzz/harfbuzz-src/mingw64.sh
new file mode 100755
index 00000000000..28724a48ed3
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/mingw64.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec "$(dirname "$0")"/mingw-configure.sh x86_64 "$@"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ucd-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ucd-table.py
index 3d5b8d26cc3..3f821802d7d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ucd-table.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ucd-table.py
@@ -10,11 +10,11 @@ if len (sys.argv) != 2:
# https://github.com/harfbuzz/packtab
-# https://github.com/harfbuzz/youseedy
-import youseedy, packTab
+import packTab
+import packTab.ucdxml
-ucdxml = youseedy.load_ucdxml(sys.argv[1])
-ucd = youseedy.ucdxml_get_repertoire(ucdxml)
+ucdxml = packTab.ucdxml.load_ucdxml(sys.argv[1])
+ucd = packTab.ucdxml.ucdxml_get_repertoire(ucdxml)
gc = [u['gc'] for u in ucd]
@@ -88,9 +88,9 @@ print('#include "hb.hh"')
print()
code = packTab.Code('_hb_ucd')
-sc_array, _, _ = code.addArray('hb_script_t', 'sc_map', sc_array)
-dm1_array, _, _ = code.addArray('hb_codepoint_t', 'dm1_map', dm1_array)
-dm2_array, _, _ = code.addArray('uint64_t', 'dm2_map', dm2_array)
+sc_array, _ = code.addArray('hb_script_t', 'sc_map', sc_array)
+dm1_array, _ = code.addArray('hb_codepoint_t', 'dm1_map', dm1_array)
+dm2_array, _ = code.addArray('uint64_t', 'dm2_map', dm2_array)
code.print_c(linkage='static inline')
for compression in (DEFAULT, COMPACT):
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py
index c86bdbbdca5..820838cf8eb 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py
@@ -214,7 +214,9 @@ def is_CONS_SUB(U, UISC, UGC):
def is_CONS_WITH_STACKER(U, UISC, UGC):
return UISC == Consonant_With_Stacker
def is_HALANT(U, UISC, UGC):
- return UISC in [Virama, Invisible_Stacker] and not is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UGC)
+ return (UISC in [Virama, Invisible_Stacker]
+ and not is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UGC)
+ and not is_SAKOT(U, UISC, UGC))
def is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UGC):
# https://github.com/harfbuzz/harfbuzz/issues/1102
# https://github.com/harfbuzz/harfbuzz/issues/1379
@@ -240,6 +242,8 @@ def is_Reserved(U, UISC, UGC):
return UGC == 'Cn'
def is_REPHA(U, UISC, UGC):
return UISC in [Consonant_Preceding_Repha, Consonant_Prefixed]
+def is_SAKOT(U, UISC, UGC):
+ return U == 0x1A60
def is_SYM(U, UISC, UGC):
if U == 0x25CC: return False #SPEC-DRAFT
#SPEC-DRAFT return UGC in [So, Sc] or UISC == Symbol_Letter
@@ -279,6 +283,7 @@ use_mapping = {
'Rsv': is_Reserved,
'R': is_REPHA,
'S': is_SYM,
+ 'Sk': is_SAKOT,
'SM': is_SYM_MOD,
'VS': is_VARIATION_SELECTOR,
'V': is_VOWEL,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh
index 007db9e40c5..38104fdb82e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh
@@ -167,10 +167,21 @@ template <unsigned Pos=1, typename Appl, typename V>
auto hb_partial (Appl&& a, V&& v) HB_AUTO_RETURN
(( hb_partial_t<Pos, Appl, V> (a, v) ))
+/* The following hacky replacement version is to make Visual Stuiod build:. */ \
+/* https://github.com/harfbuzz/harfbuzz/issues/1730 */ \
+#ifdef _MSC_VER
#define HB_PARTIALIZE(Pos) \
template <typename _T> \
- auto operator () (_T&& _v) const HB_AUTO_RETURN (hb_partial<Pos> (this, hb_forward<_T> (_v))) \
+ decltype(auto) operator () (_T&& _v) const \
+ { return hb_partial<Pos> (this, hb_forward<_T> (_v)); } \
static_assert (true, "")
+#else
+#define HB_PARTIALIZE(Pos) \
+ template <typename _T> \
+ auto operator () (_T&& _v) const HB_AUTO_RETURN \
+ (hb_partial<Pos> (this, hb_forward<_T> (_v))) \
+ static_assert (true, "")
+#endif
struct
@@ -807,7 +818,7 @@ struct hb_bitwise_and
static constexpr bool passthru_left = false;
static constexpr bool passthru_right = false;
template <typename T> auto
- operator () (const T &a, const T &b) const HB_AUTO_RETURN (a & b)
+ operator () (const T &a, const T &b) const HB_AUTO_RETURN (a & b)
}
HB_FUNCOBJ (hb_bitwise_and);
struct hb_bitwise_or
@@ -815,7 +826,7 @@ struct hb_bitwise_or
static constexpr bool passthru_left = true;
static constexpr bool passthru_right = true;
template <typename T> auto
- operator () (const T &a, const T &b) const HB_AUTO_RETURN (a | b)
+ operator () (const T &a, const T &b) const HB_AUTO_RETURN (a | b)
}
HB_FUNCOBJ (hb_bitwise_or);
struct hb_bitwise_xor
@@ -823,7 +834,7 @@ struct hb_bitwise_xor
static constexpr bool passthru_left = true;
static constexpr bool passthru_right = true;
template <typename T> auto
- operator () (const T &a, const T &b) const HB_AUTO_RETURN (a ^ b)
+ operator () (const T &a, const T &b) const HB_AUTO_RETURN (a ^ b)
}
HB_FUNCOBJ (hb_bitwise_xor);
struct hb_bitwise_sub
@@ -831,7 +842,7 @@ struct hb_bitwise_sub
static constexpr bool passthru_left = true;
static constexpr bool passthru_right = false;
template <typename T> auto
- operator () (const T &a, const T &b) const HB_AUTO_RETURN (a & ~b)
+ operator () (const T &a, const T &b) const HB_AUTO_RETURN (a & ~b)
}
HB_FUNCOBJ (hb_bitwise_sub);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic.hh
index a82ce6cf3c7..45413d5e73d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic.hh
@@ -216,7 +216,7 @@ static_assert ((sizeof (long) == sizeof (void *)), "");
#define HB_ATOMIC_INT_NIL 1 /* Warn that fallback implementation is in use. */
-#define _hb_memory_barrier()
+#define _hb_memory_barrier() do {} while (0)
#define hb_atomic_int_impl_add(AI, V) ((*(AI) += (V)) - (V))
@@ -227,7 +227,7 @@ static_assert ((sizeof (long) == sizeof (void *)), "");
#define hb_atomic_int_impl_add(AI, V) ((*(AI) += (V)) - (V))
-#define _hb_memory_barrier()
+#define _hb_memory_barrier() do {} while (0)
#define hb_atomic_ptr_impl_cmpexch(P,O,N) (* (void **) (P) == (void *) (O) ? (* (void **) (P) = (void *) (N), true) : false)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex.hh
index a760e731796..cbbfa26810a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex.hh
@@ -48,6 +48,17 @@
/* Defined externally, i.e. in config.h; must have typedef'ed hb_mutex_impl_t as well. */
+#elif !defined(HB_NO_MT) && (defined(HAVE_PTHREAD) || defined(__APPLE__))
+
+#include <pthread.h>
+typedef pthread_mutex_t hb_mutex_impl_t;
+#define HB_MUTEX_IMPL_INIT PTHREAD_MUTEX_INITIALIZER
+#define hb_mutex_impl_init(M) pthread_mutex_init (M, nullptr)
+#define hb_mutex_impl_lock(M) pthread_mutex_lock (M)
+#define hb_mutex_impl_unlock(M) pthread_mutex_unlock (M)
+#define hb_mutex_impl_finish(M) pthread_mutex_destroy (M)
+
+
#elif !defined(HB_NO_MT) && defined(_WIN32)
#include <windows.h>
@@ -63,17 +74,6 @@ typedef CRITICAL_SECTION hb_mutex_impl_t;
#define hb_mutex_impl_finish(M) DeleteCriticalSection (M)
-#elif !defined(HB_NO_MT) && (defined(HAVE_PTHREAD) || defined(__APPLE__))
-
-#include <pthread.h>
-typedef pthread_mutex_t hb_mutex_impl_t;
-#define HB_MUTEX_IMPL_INIT PTHREAD_MUTEX_INITIALIZER
-#define hb_mutex_impl_init(M) pthread_mutex_init (M, nullptr)
-#define hb_mutex_impl_lock(M) pthread_mutex_lock (M)
-#define hb_mutex_impl_unlock(M) pthread_mutex_unlock (M)
-#define hb_mutex_impl_finish(M) pthread_mutex_destroy (M)
-
-
#elif !defined(HB_NO_MT) && defined(HAVE_INTEL_ATOMIC_PRIMITIVES)
#if defined(HAVE_SCHED_H) && defined(HAVE_SCHED_YIELD)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh
index 896f7a0155f..de2d25638a3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh
@@ -298,20 +298,24 @@ struct OffsetTo : Offset<OffsetType, has_null>
}
template <typename ...Ts>
- bool serialize_subset (hb_subset_context_t *c, const Type &src, const void *base, Ts&&... ds)
+ bool serialize_subset (hb_subset_context_t *c,
+ const OffsetTo& src,
+ const void *src_base,
+ const void *dst_base,
+ Ts&&... ds)
{
*this = 0;
- if (has_null && &src == _hb_has_null<Type, has_null>::get_null ())
+ if (src.is_null ())
return false;
auto *s = c->serializer;
s->push ();
- bool ret = c->dispatch (src, hb_forward<Ts> (ds)...);
+ bool ret = c->dispatch (src_base+src, hb_forward<Ts> (ds)...);
if (ret || !has_null)
- s->add_link (*this, s->pop_pack (), base);
+ s->add_link (*this, s->pop_pack (), dst_base);
else
s->pop_discard ();
@@ -320,17 +324,21 @@ struct OffsetTo : Offset<OffsetType, has_null>
/* TODO: Somehow merge this with previous function into a serialize_dispatch(). */
template <typename ...Ts>
- bool serialize_copy (hb_serialize_context_t *c, const Type &src, const void *base, Ts&&... ds)
+ bool serialize_copy (hb_serialize_context_t *c,
+ const OffsetTo& src,
+ const void *src_base,
+ const void *dst_base,
+ Ts&&... ds)
{
*this = 0;
- if (has_null && &src == _hb_has_null<Type, has_null>::get_null ())
+ if (src.is_null ())
return false;
c->push ();
- bool ret = c->copy (src, hb_forward<Ts> (ds)...);
+ bool ret = c->copy (src_base+src, hb_forward<Ts> (ds)...);
- c->add_link (*this, c->pop_pack (), base);
+ c->add_link (*this, c->pop_pack (), dst_base);
return ret;
}
@@ -679,7 +687,7 @@ struct OffsetListOf : OffsetArrayOf<Type>
if (unlikely (!out)) return_trace (false);
unsigned int count = this->len;
for (unsigned int i = 0; i < count; i++)
- out->arrayZ[i].serialize_subset (c, (*this)[i], out);
+ out->arrayZ[i].serialize_subset (c, this->arrayZ[i], this, out);
return_trace (true);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-deprecated.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-deprecated.h
index bce51b71e78..bc72f8a7016 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-deprecated.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-deprecated.h
@@ -40,6 +40,10 @@ HB_BEGIN_DECLS
#ifndef HB_DISABLE_DEPRECATED
+/* https://github.com/harfbuzz/harfbuzz/issues/1734 */
+#define HB_MATH_GLYPH_PART_FLAG_EXTENDER HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER
+
+
/* Like hb_ot_layout_table_find_script, but takes zero-terminated array of scripts to test */
HB_EXTERN HB_DEPRECATED_FOR (hb_ot_layout_table_select_script) hb_bool_t
hb_ot_layout_table_choose_script (hb_face_t *face,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh
index 6113dbcf89a..1ac9f6ba204 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh
@@ -85,7 +85,7 @@ struct glyf
static bool
_add_loca_and_head (hb_subset_plan_t * plan, Iterator padded_offsets)
{
- unsigned int max_offset = + padded_offsets | hb_reduce (hb_max, 0);
+ unsigned max_offset = + padded_offsets | hb_reduce(hb_add, 0);
unsigned num_offsets = padded_offsets.len () + 1;
bool use_short_loca = max_offset < 0x1FFFF;
unsigned entry_size = use_short_loca ? 2 : 4;
@@ -93,6 +93,8 @@ struct glyf
if (unlikely (!loca_prime_data)) return false;
+ DEBUG_MSG(SUBSET, nullptr, "loca entry_size %d num_offsets %d max_offset %d size %d", entry_size, num_offsets, max_offset, entry_size * num_offsets);
+
if (use_short_loca)
_write_loca (padded_offsets, 1, hb_array ((HBUINT16*) loca_prime_data, num_offsets));
else
@@ -164,6 +166,7 @@ struct glyf
| hb_map (&SubsetGlyph::padded_size)
;
+ if (c->serializer->in_error ()) return_trace (false);
return_trace (c->serializer->check_success (_add_loca_and_head (c->plan, padded_offsets)));
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh
index bd728ecad6c..f801f5af896 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh
@@ -142,7 +142,7 @@ struct RecordListOf : RecordArrayOf<Type>
if (unlikely (!out)) return_trace (false);
unsigned int count = this->len;
for (unsigned int i = 0; i < count; i++)
- out->get_offset (i).serialize_subset (c, (*this)[i], out);
+ out->get_offset (i).serialize_subset (c, this->get_offset (i), this, out);
return_trace (true);
}
@@ -279,10 +279,10 @@ struct Script
TRACE_SUBSET (this);
auto *out = c->serializer->embed (*this);
if (unlikely (!out)) return_trace (false);
- out->defaultLangSys.serialize_copy (c->serializer, this+defaultLangSys, out);
+ out->defaultLangSys.serialize_copy (c->serializer, defaultLangSys, this, out);
unsigned int count = langSys.len;
for (unsigned int i = 0; i < count; i++)
- out->langSys.arrayZ[i].offset.serialize_copy (c->serializer, this+langSys[i].offset, out);
+ out->langSys.arrayZ[i].offset.serialize_copy (c->serializer, langSys[i].offset, this, out);
return_trace (true);
}
@@ -732,7 +732,7 @@ struct Lookup
OffsetArrayOf<TSubTable>& out_subtables = out->get_subtables<TSubTable> ();
unsigned int count = subTable.len;
for (unsigned int i = 0; i < count; i++)
- out_subtables[i].serialize_subset (c, this+subtables[i], out, get_type ());
+ out_subtables[i].serialize_subset (c, subtables[i], this, out, get_type ());
return_trace (true);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh
index ac1bddb2e0a..0fca9947dd5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh
@@ -442,16 +442,16 @@ struct GDEF
auto *out = c->serializer->embed (*this);
if (unlikely (!out)) return_trace (false);
- out->glyphClassDef.serialize_subset (c, this+glyphClassDef, out);
- out->attachList = 0;//TODO(subset) serialize_subset (c, this+attachList, out);
- out->ligCaretList = 0;//TODO(subset) serialize_subset (c, this+ligCaretList, out);
- out->markAttachClassDef.serialize_subset (c, this+markAttachClassDef, out);
+ out->glyphClassDef.serialize_subset (c, glyphClassDef, this, out);
+ out->attachList = 0;//TODO(subset) serialize_subset (c, attachList, this, out);
+ out->ligCaretList = 0;//TODO(subset) serialize_subset (c, ligCaretList, this, out);
+ out->markAttachClassDef.serialize_subset (c, markAttachClassDef, this, out);
if (version.to_int () >= 0x00010002u)
- out->markGlyphSetsDef = 0;// TODO(subset) serialize_subset (c, this+markGlyphSetsDef, out);
+ out->markGlyphSetsDef = 0;// TODO(subset) serialize_subset (c, markGlyphSetsDef, this, out);
if (version.to_int () >= 0x00010003u)
- out->varStore = 0;// TODO(subset) serialize_subset (c, this+varStore, out);
+ out->varStore = 0;// TODO(subset) serialize_subset (c, varStore, this, out);
return_trace (true);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh
index 0e1966e98e8..f532f9dff28 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh
@@ -87,8 +87,7 @@ struct SingleSubstFormat1
}
template<typename Iterator,
- hb_requires (hb_is_sorted_source_of (Iterator,
- hb_codepoint_t))>
+ hb_requires (hb_is_sorted_source_of (Iterator, hb_codepoint_t))>
bool serialize (hb_serialize_context_t *c,
Iterator glyphs,
unsigned delta)
@@ -181,7 +180,7 @@ struct SingleSubstFormat2
template<typename Iterator,
hb_requires (hb_is_sorted_source_of (Iterator,
- const hb_codepoint_pair_t))>
+ hb_codepoint_pair_t))>
bool serialize (hb_serialize_context_t *c,
Iterator it)
{
@@ -339,8 +338,10 @@ struct Sequence
return_trace (true);
}
+ template <typename Iterator,
+ hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
bool serialize (hb_serialize_context_t *c,
- hb_array_t<const GlyphID> subst)
+ Iterator subst)
{
TRACE_SERIALIZE (this);
return_trace (substitute.serialize (c, subst));
@@ -515,8 +516,10 @@ struct AlternateSet
return_trace (true);
}
+ template <typename Iterator,
+ hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
bool serialize (hb_serialize_context_t *c,
- hb_array_t<const GlyphID> alts)
+ Iterator alts)
{
TRACE_SERIALIZE (this);
return_trace (alternates.serialize (c, alts));
@@ -729,9 +732,11 @@ struct Ligature
return_trace (true);
}
+ template <typename Iterator,
+ hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
bool serialize (hb_serialize_context_t *c,
GlyphID ligature,
- hb_array_t<const GlyphID> components /* Starting from second */)
+ Iterator components /* Starting from second */)
{
TRACE_SERIALIZE (this);
if (unlikely (!c->extend_min (*this))) return_trace (false);
@@ -1282,7 +1287,7 @@ struct SubstLookup : Lookup
HB_INTERNAL static bool apply_recurse_func (hb_ot_apply_context_t *c, unsigned int lookup_index);
SubTable& serialize_subtable (hb_serialize_context_t *c,
- unsigned int i)
+ unsigned int i)
{ return get_subtables<SubTable> ()[i].serialize (c, this); }
bool serialize_single (hb_serialize_context_t *c,
@@ -1292,9 +1297,8 @@ struct SubstLookup : Lookup
{
TRACE_SERIALIZE (this);
if (unlikely (!Lookup::serialize (c, SubTable::Single, lookup_props, 1))) return_trace (false);
-
- return_trace (serialize_subtable (c, 0).u.single
- .serialize (c, hb_zip (glyphs, substitutes)));
+ return_trace (serialize_subtable (c, 0).u.single.
+ serialize (c, hb_zip (glyphs, substitutes)));
}
bool serialize_multiple (hb_serialize_context_t *c,
@@ -1305,10 +1309,11 @@ struct SubstLookup : Lookup
{
TRACE_SERIALIZE (this);
if (unlikely (!Lookup::serialize (c, SubTable::Multiple, lookup_props, 1))) return_trace (false);
- return_trace (serialize_subtable (c, 0).u.multiple.serialize (c,
- glyphs,
- substitute_len_list,
- substitute_glyphs_list));
+ return_trace (serialize_subtable (c, 0).u.multiple.
+ serialize (c,
+ glyphs,
+ substitute_len_list,
+ substitute_glyphs_list));
}
bool serialize_alternate (hb_serialize_context_t *c,
@@ -1319,10 +1324,11 @@ struct SubstLookup : Lookup
{
TRACE_SERIALIZE (this);
if (unlikely (!Lookup::serialize (c, SubTable::Alternate, lookup_props, 1))) return_trace (false);
- return_trace (serialize_subtable (c, 0).u.alternate.serialize (c,
- glyphs,
- alternate_len_list,
- alternate_glyphs_list));
+ return_trace (serialize_subtable (c, 0).u.alternate.
+ serialize (c,
+ glyphs,
+ alternate_len_list,
+ alternate_glyphs_list));
}
bool serialize_ligature (hb_serialize_context_t *c,
@@ -1335,12 +1341,13 @@ struct SubstLookup : Lookup
{
TRACE_SERIALIZE (this);
if (unlikely (!Lookup::serialize (c, SubTable::Ligature, lookup_props, 1))) return_trace (false);
- return_trace (serialize_subtable (c, 0).u.ligature.serialize (c,
- first_glyphs,
- ligature_per_first_glyph_count_list,
- ligatures_list,
- component_count_list,
- component_list));
+ return_trace (serialize_subtable (c, 0).u.ligature.
+ serialize (c,
+ first_glyphs,
+ ligature_per_first_glyph_count_list,
+ ligatures_list,
+ component_count_list,
+ component_list));
}
template <typename context_t>
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh
index 7d395b5d84d..4bc3d7e157e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh
@@ -2684,18 +2684,19 @@ struct GSUBGPOS
auto *out = c->serializer->embed (*this);
if (unlikely (!out)) return_trace (false);
- out->scriptList.serialize_subset (c, this+scriptList, out);
- out->featureList.serialize_subset (c, this+featureList, out);
+ out->scriptList.serialize_subset (c, scriptList, this, out);
+ out->featureList.serialize_subset (c, featureList, this, out);
typedef OffsetListOf<TLookup> TLookupList;
/* TODO Use intersects() to count how many subtables survive? */
CastR<OffsetTo<TLookupList>> (out->lookupList)
.serialize_subset (c,
- this+CastR<OffsetTo<TLookupList>> (lookupList),
+ CastR<OffsetTo<TLookupList>> (lookupList),
+ this,
out);
if (version.to_int () >= 0x00010001u)
- out->featureVars.serialize_copy (c->serializer, this+featureVars, out);
+ out->featureVars.serialize_copy (c->serializer, featureVars, this, out);
return_trace (true);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh
index dd622640410..0b16e0b9b3e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh
@@ -462,7 +462,7 @@ struct MathGlyphPartRecord
out.end_connector_length = font->em_scale (endConnectorLength, scale);
out.full_advance = font->em_scale (fullAdvance, scale);
- static_assert ((unsigned int) HB_MATH_GLYPH_PART_FLAG_EXTENDER ==
+ static_assert ((unsigned int) HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER ==
(unsigned int) PartFlags::Extender, "");
out.flags = (hb_ot_math_glyph_part_flags_t)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math.h
index d88aef8e949..7b2befbceea 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math.h
@@ -151,14 +151,14 @@ typedef struct hb_ot_math_glyph_variant_t {
* Since: 1.3.3
*/
typedef enum { /*< flags >*/
- HB_MATH_GLYPH_PART_FLAG_EXTENDER = 0x00000001u /* Extender glyph */
+ HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER = 0x00000001u /* Extender glyph */
} hb_ot_math_glyph_part_flags_t;
/**
* hb_ot_math_glyph_part_t:
* @glyph: The glyph index of the variant part
* @start_connector_length: The length of the connector on the starting side of the variant part
- * @end_connection_length: The length of the conector on the ending side of the variant part
+ * @end_connection_length: The length of the connector on the ending side of the variant part
* @full_advance: The total advance of the part
* @flags: #hb_ot_math_glyph_part_flags_t flags for the part
*
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh
index 4eda46789ee..68d7b3a65a8 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh
@@ -104,7 +104,7 @@ struct NameRecord
TRACE_SERIALIZE (this);
auto *out = c->embed (this);
if (unlikely (!out)) return_trace (nullptr);
- out->offset.serialize_copy (c, src_base + offset, dst_base, length);
+ out->offset.serialize_copy (c, offset, src_base, dst_base, length);
return_trace (out);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh
index 39c20dec869..01fe3d788ac 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh
@@ -36,39 +36,42 @@
#line 38 "hb-ot-shape-complex-use-machine.hh"
static const unsigned char _use_syllable_machine_trans_keys[] = {
- 12u, 44u, 1u, 15u, 1u, 1u, 12u, 44u, 0u, 47u, 21u, 21u, 11u, 47u, 11u, 47u,
- 1u, 15u, 1u, 1u, 11u, 47u, 22u, 47u, 23u, 47u, 24u, 47u, 25u, 47u, 26u, 47u,
- 45u, 46u, 46u, 46u, 24u, 47u, 24u, 47u, 24u, 47u, 23u, 47u, 23u, 47u, 23u, 47u,
- 22u, 47u, 22u, 47u, 22u, 47u, 22u, 47u, 11u, 47u, 1u, 47u, 11u, 47u, 13u, 21u,
- 4u, 4u, 13u, 13u, 11u, 47u, 11u, 47u, 41u, 42u, 42u, 42u, 11u, 47u, 11u, 47u,
- 22u, 47u, 23u, 47u, 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 47u,
- 24u, 47u, 24u, 47u, 23u, 47u, 23u, 47u, 23u, 47u, 22u, 47u, 22u, 47u, 22u, 47u,
- 22u, 47u, 11u, 47u, 1u, 47u, 1u, 15u, 4u, 4u, 13u, 21u, 13u, 13u, 12u, 44u,
- 1u, 47u, 11u, 47u, 41u, 42u, 42u, 42u, 21u, 42u, 1u, 5u, 0
+ 12u, 48u, 1u, 15u, 1u, 1u, 12u, 48u, 1u, 1u, 0u, 48u, 21u, 21u, 11u, 48u,
+ 11u, 48u, 1u, 15u, 1u, 1u, 11u, 48u, 22u, 48u, 23u, 48u, 24u, 47u, 25u, 47u,
+ 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u, 1u, 1u, 24u, 48u,
+ 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 11u, 48u,
+ 1u, 48u, 11u, 48u, 13u, 21u, 4u, 4u, 13u, 13u, 11u, 48u, 11u, 48u, 41u, 42u,
+ 42u, 42u, 11u, 48u, 11u, 48u, 22u, 48u, 23u, 48u, 24u, 47u, 25u, 47u, 26u, 47u,
+ 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u, 24u, 48u, 23u, 48u, 23u, 48u,
+ 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 11u, 48u, 1u, 48u, 1u, 15u,
+ 4u, 4u, 13u, 21u, 13u, 13u, 12u, 48u, 1u, 48u, 11u, 48u, 41u, 42u, 42u, 42u,
+ 21u, 42u, 1u, 5u, 0
};
static const char _use_syllable_machine_key_spans[] = {
- 33, 15, 1, 33, 48, 1, 37, 37,
- 15, 1, 37, 26, 25, 24, 23, 22,
- 2, 1, 24, 24, 24, 25, 25, 25,
- 26, 26, 26, 26, 37, 47, 37, 9,
- 1, 1, 37, 37, 2, 1, 37, 37,
- 26, 25, 24, 23, 22, 2, 1, 24,
- 24, 24, 25, 25, 25, 26, 26, 26,
- 26, 37, 47, 15, 1, 9, 1, 33,
- 47, 37, 2, 1, 22, 5
+ 37, 15, 1, 37, 1, 49, 1, 38,
+ 38, 15, 1, 38, 27, 26, 24, 23,
+ 22, 2, 1, 25, 25, 25, 1, 25,
+ 26, 26, 26, 27, 27, 27, 27, 38,
+ 48, 38, 9, 1, 1, 38, 38, 2,
+ 1, 38, 38, 27, 26, 24, 23, 22,
+ 2, 1, 25, 25, 25, 25, 26, 26,
+ 26, 27, 27, 27, 27, 38, 48, 15,
+ 1, 9, 1, 37, 48, 38, 2, 1,
+ 22, 5
};
static const short _use_syllable_machine_index_offsets[] = {
- 0, 34, 50, 52, 86, 135, 137, 175,
- 213, 229, 231, 269, 296, 322, 347, 371,
- 394, 397, 399, 424, 449, 474, 500, 526,
- 552, 579, 606, 633, 660, 698, 746, 784,
- 794, 796, 798, 836, 874, 877, 879, 917,
- 955, 982, 1008, 1033, 1057, 1080, 1083, 1085,
- 1110, 1135, 1160, 1186, 1212, 1238, 1265, 1292,
- 1319, 1346, 1384, 1432, 1448, 1450, 1460, 1462,
- 1496, 1544, 1582, 1585, 1587, 1610
+ 0, 38, 54, 56, 94, 96, 146, 148,
+ 187, 226, 242, 244, 283, 311, 338, 363,
+ 387, 410, 413, 415, 441, 467, 493, 495,
+ 521, 548, 575, 602, 630, 658, 686, 714,
+ 753, 802, 841, 851, 853, 855, 894, 933,
+ 936, 938, 977, 1016, 1044, 1071, 1096, 1120,
+ 1143, 1146, 1148, 1174, 1200, 1226, 1252, 1279,
+ 1306, 1333, 1361, 1389, 1417, 1445, 1484, 1533,
+ 1549, 1551, 1561, 1563, 1601, 1650, 1689, 1692,
+ 1694, 1717
};
static const char _use_syllable_machine_indicies[] = {
@@ -76,237 +79,253 @@ static const char _use_syllable_machine_indicies[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 3, 2, 2, 2, 2, 2,
+ 1, 0, 0, 0, 1, 0, 3, 2,
2, 2, 2, 2, 2, 2, 2, 2,
- 4, 2, 3, 2, 6, 5, 5, 5,
+ 2, 2, 2, 2, 4, 2, 3, 2,
+ 6, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 6, 5, 7, 8,
- 9, 7, 10, 11, 9, 9, 9, 9,
- 9, 3, 12, 13, 9, 14, 7, 7,
- 15, 16, 9, 9, 17, 18, 19, 20,
- 21, 22, 23, 17, 24, 25, 26, 27,
- 28, 29, 9, 30, 31, 32, 9, 33,
- 34, 35, 36, 37, 38, 39, 9, 41,
- 40, 43, 1, 42, 42, 44, 42, 42,
- 42, 42, 42, 45, 46, 47, 48, 49,
- 50, 51, 52, 46, 53, 45, 54, 55,
- 56, 57, 42, 58, 59, 60, 42, 42,
- 42, 42, 61, 62, 63, 64, 42, 43,
- 1, 42, 42, 44, 42, 42, 42, 42,
- 42, 65, 46, 47, 48, 49, 50, 51,
- 52, 46, 53, 54, 54, 55, 56, 57,
- 42, 58, 59, 60, 42, 42, 42, 42,
- 61, 62, 63, 64, 42, 43, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 67, 66, 43, 66, 43,
- 1, 42, 42, 44, 42, 42, 42, 42,
- 42, 42, 46, 47, 48, 49, 50, 51,
- 52, 46, 53, 54, 54, 55, 56, 57,
- 42, 58, 59, 60, 42, 42, 42, 42,
- 61, 62, 63, 64, 42, 46, 47, 48,
- 49, 50, 42, 42, 42, 42, 42, 42,
- 55, 56, 57, 42, 58, 59, 60, 42,
- 42, 42, 42, 47, 62, 63, 64, 42,
- 47, 48, 49, 50, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 58, 59,
- 60, 42, 42, 42, 42, 42, 62, 63,
- 64, 42, 48, 49, 50, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 62,
- 63, 64, 42, 49, 50, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 62,
- 63, 64, 42, 50, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 62, 63,
- 64, 42, 62, 63, 42, 63, 42, 48,
- 49, 50, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 58, 59, 60, 42,
- 42, 42, 42, 42, 62, 63, 64, 42,
- 48, 49, 50, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 59, 60,
- 42, 42, 42, 42, 42, 62, 63, 64,
- 42, 48, 49, 50, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42,
- 60, 42, 42, 42, 42, 42, 62, 63,
- 64, 42, 47, 48, 49, 50, 42, 42,
- 42, 42, 42, 42, 55, 56, 57, 42,
- 58, 59, 60, 42, 42, 42, 42, 47,
- 62, 63, 64, 42, 47, 48, 49, 50,
- 42, 42, 42, 42, 42, 42, 42, 56,
- 57, 42, 58, 59, 60, 42, 42, 42,
- 42, 47, 62, 63, 64, 42, 47, 48,
- 49, 50, 42, 42, 42, 42, 42, 42,
- 42, 42, 57, 42, 58, 59, 60, 42,
- 42, 42, 42, 47, 62, 63, 64, 42,
- 46, 47, 48, 49, 50, 42, 52, 46,
- 42, 42, 42, 55, 56, 57, 42, 58,
- 59, 60, 42, 42, 42, 42, 47, 62,
- 63, 64, 42, 46, 47, 48, 49, 50,
- 42, 68, 46, 42, 42, 42, 55, 56,
- 57, 42, 58, 59, 60, 42, 42, 42,
- 42, 47, 62, 63, 64, 42, 46, 47,
- 48, 49, 50, 42, 42, 46, 42, 42,
- 42, 55, 56, 57, 42, 58, 59, 60,
- 42, 42, 42, 42, 47, 62, 63, 64,
- 42, 46, 47, 48, 49, 50, 51, 52,
- 46, 42, 42, 42, 55, 56, 57, 42,
- 58, 59, 60, 42, 42, 42, 42, 47,
- 62, 63, 64, 42, 43, 1, 42, 42,
- 44, 42, 42, 42, 42, 42, 42, 46,
- 47, 48, 49, 50, 51, 52, 46, 53,
- 42, 54, 55, 56, 57, 42, 58, 59,
- 60, 42, 42, 42, 42, 61, 62, 63,
- 64, 42, 43, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 67, 66, 66, 66, 66, 66, 66, 66,
- 47, 48, 49, 50, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 58, 59,
- 60, 66, 66, 66, 66, 66, 62, 63,
- 64, 66, 43, 1, 42, 42, 44, 42,
- 42, 42, 42, 42, 42, 46, 47, 48,
- 49, 50, 51, 52, 46, 53, 45, 54,
- 55, 56, 57, 42, 58, 59, 60, 42,
- 42, 42, 42, 61, 62, 63, 64, 42,
- 70, 69, 69, 69, 69, 69, 69, 69,
- 71, 69, 10, 72, 70, 69, 43, 1,
- 42, 42, 44, 42, 42, 42, 42, 42,
- 73, 46, 47, 48, 49, 50, 51, 52,
- 46, 53, 45, 54, 55, 56, 57, 42,
- 58, 59, 60, 42, 74, 75, 42, 61,
- 62, 63, 64, 42, 43, 1, 42, 42,
- 44, 42, 42, 42, 42, 42, 42, 46,
- 47, 48, 49, 50, 51, 52, 46, 53,
- 45, 54, 55, 56, 57, 42, 58, 59,
- 60, 42, 74, 75, 42, 61, 62, 63,
- 64, 42, 74, 75, 76, 75, 76, 3,
- 6, 77, 77, 78, 77, 77, 77, 77,
- 77, 79, 17, 18, 19, 20, 21, 22,
- 23, 17, 24, 26, 26, 27, 28, 29,
- 77, 30, 31, 32, 77, 77, 77, 77,
- 36, 37, 38, 39, 77, 3, 6, 77,
- 77, 78, 77, 77, 77, 77, 77, 77,
- 17, 18, 19, 20, 21, 22, 23, 17,
- 24, 26, 26, 27, 28, 29, 77, 30,
- 31, 32, 77, 77, 77, 77, 36, 37,
- 38, 39, 77, 17, 18, 19, 20, 21,
- 77, 77, 77, 77, 77, 77, 27, 28,
- 29, 77, 30, 31, 32, 77, 77, 77,
- 77, 18, 37, 38, 39, 77, 18, 19,
- 20, 21, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 30, 31, 32, 77,
- 77, 77, 77, 77, 37, 38, 39, 77,
- 19, 20, 21, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 37, 38, 39,
- 77, 20, 21, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 37, 38, 39,
- 77, 21, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 37, 38, 39, 77,
- 37, 38, 77, 38, 77, 19, 20, 21,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 30, 31, 32, 77, 77, 77,
- 77, 77, 37, 38, 39, 77, 19, 20,
- 21, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 31, 32, 77, 77,
- 77, 77, 77, 37, 38, 39, 77, 19,
- 20, 21, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 32, 77,
- 77, 77, 77, 77, 37, 38, 39, 77,
- 18, 19, 20, 21, 77, 77, 77, 77,
- 77, 77, 27, 28, 29, 77, 30, 31,
- 32, 77, 77, 77, 77, 18, 37, 38,
- 39, 77, 18, 19, 20, 21, 77, 77,
- 77, 77, 77, 77, 77, 28, 29, 77,
- 30, 31, 32, 77, 77, 77, 77, 18,
- 37, 38, 39, 77, 18, 19, 20, 21,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 29, 77, 30, 31, 32, 77, 77, 77,
- 77, 18, 37, 38, 39, 77, 17, 18,
- 19, 20, 21, 77, 23, 17, 77, 77,
- 77, 27, 28, 29, 77, 30, 31, 32,
- 77, 77, 77, 77, 18, 37, 38, 39,
- 77, 17, 18, 19, 20, 21, 77, 80,
- 17, 77, 77, 77, 27, 28, 29, 77,
- 30, 31, 32, 77, 77, 77, 77, 18,
- 37, 38, 39, 77, 17, 18, 19, 20,
- 21, 77, 77, 17, 77, 77, 77, 27,
- 28, 29, 77, 30, 31, 32, 77, 77,
- 77, 77, 18, 37, 38, 39, 77, 17,
- 18, 19, 20, 21, 22, 23, 17, 77,
- 77, 77, 27, 28, 29, 77, 30, 31,
- 32, 77, 77, 77, 77, 18, 37, 38,
- 39, 77, 3, 6, 77, 77, 78, 77,
- 77, 77, 77, 77, 77, 17, 18, 19,
- 20, 21, 22, 23, 17, 24, 77, 26,
- 27, 28, 29, 77, 30, 31, 32, 77,
- 77, 77, 77, 36, 37, 38, 39, 77,
- 3, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 4, 77,
- 77, 77, 77, 77, 77, 77, 18, 19,
- 20, 21, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 30, 31, 32, 77,
- 77, 77, 77, 77, 37, 38, 39, 77,
- 3, 81, 81, 81, 81, 81, 81, 81,
- 81, 81, 81, 81, 81, 81, 4, 81,
- 82, 77, 13, 77, 77, 77, 77, 77,
- 77, 77, 83, 77, 13, 77, 6, 81,
+ 6, 5, 5, 5, 6, 5, 7, 5,
+ 8, 9, 10, 8, 11, 12, 10, 10,
+ 10, 10, 10, 3, 13, 14, 10, 15,
+ 8, 8, 16, 17, 10, 10, 18, 19,
+ 20, 21, 22, 23, 24, 18, 25, 26,
+ 27, 28, 29, 30, 10, 31, 32, 33,
+ 10, 34, 35, 36, 37, 38, 39, 40,
+ 13, 10, 42, 41, 44, 1, 43, 43,
+ 45, 43, 43, 43, 43, 43, 46, 47,
+ 48, 49, 50, 51, 52, 53, 47, 54,
+ 46, 55, 56, 57, 58, 43, 59, 60,
+ 61, 43, 43, 43, 43, 62, 63, 64,
+ 65, 1, 43, 44, 1, 43, 43, 45,
+ 43, 43, 43, 43, 43, 66, 47, 48,
+ 49, 50, 51, 52, 53, 47, 54, 55,
+ 55, 56, 57, 58, 43, 59, 60, 61,
+ 43, 43, 43, 43, 62, 63, 64, 65,
+ 1, 43, 44, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67,
+ 68, 67, 44, 67, 44, 1, 43, 43,
+ 45, 43, 43, 43, 43, 43, 43, 47,
+ 48, 49, 50, 51, 52, 53, 47, 54,
+ 55, 55, 56, 57, 58, 43, 59, 60,
+ 61, 43, 43, 43, 43, 62, 63, 64,
+ 65, 1, 43, 47, 48, 49, 50, 51,
+ 43, 43, 43, 43, 43, 43, 56, 57,
+ 58, 43, 59, 60, 61, 43, 43, 43,
+ 43, 48, 63, 64, 65, 69, 43, 48,
+ 49, 50, 51, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 59, 60, 61,
+ 43, 43, 43, 43, 43, 63, 64, 65,
+ 69, 43, 49, 50, 51, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 63,
+ 64, 65, 43, 50, 51, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 63,
+ 64, 65, 43, 51, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 63, 64,
+ 65, 43, 63, 64, 43, 64, 43, 49,
+ 50, 51, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 59, 60, 61, 43,
+ 43, 43, 43, 43, 63, 64, 65, 69,
+ 43, 49, 50, 51, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 60,
+ 61, 43, 43, 43, 43, 43, 63, 64,
+ 65, 69, 43, 49, 50, 51, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 61, 43, 43, 43, 43, 43,
+ 63, 64, 65, 69, 43, 71, 70, 49,
+ 50, 51, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 63, 64, 65, 69,
+ 43, 48, 49, 50, 51, 43, 43, 43,
+ 43, 43, 43, 56, 57, 58, 43, 59,
+ 60, 61, 43, 43, 43, 43, 48, 63,
+ 64, 65, 69, 43, 48, 49, 50, 51,
+ 43, 43, 43, 43, 43, 43, 43, 57,
+ 58, 43, 59, 60, 61, 43, 43, 43,
+ 43, 48, 63, 64, 65, 69, 43, 48,
+ 49, 50, 51, 43, 43, 43, 43, 43,
+ 43, 43, 43, 58, 43, 59, 60, 61,
+ 43, 43, 43, 43, 48, 63, 64, 65,
+ 69, 43, 47, 48, 49, 50, 51, 43,
+ 53, 47, 43, 43, 43, 56, 57, 58,
+ 43, 59, 60, 61, 43, 43, 43, 43,
+ 48, 63, 64, 65, 69, 43, 47, 48,
+ 49, 50, 51, 43, 72, 47, 43, 43,
+ 43, 56, 57, 58, 43, 59, 60, 61,
+ 43, 43, 43, 43, 48, 63, 64, 65,
+ 69, 43, 47, 48, 49, 50, 51, 43,
+ 43, 47, 43, 43, 43, 56, 57, 58,
+ 43, 59, 60, 61, 43, 43, 43, 43,
+ 48, 63, 64, 65, 69, 43, 47, 48,
+ 49, 50, 51, 52, 53, 47, 43, 43,
+ 43, 56, 57, 58, 43, 59, 60, 61,
+ 43, 43, 43, 43, 48, 63, 64, 65,
+ 69, 43, 44, 1, 43, 43, 45, 43,
+ 43, 43, 43, 43, 43, 47, 48, 49,
+ 50, 51, 52, 53, 47, 54, 43, 55,
+ 56, 57, 58, 43, 59, 60, 61, 43,
+ 43, 43, 43, 62, 63, 64, 65, 1,
+ 43, 44, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 68,
+ 67, 67, 67, 67, 67, 67, 67, 48,
+ 49, 50, 51, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 59, 60, 61,
+ 67, 67, 67, 67, 67, 63, 64, 65,
+ 69, 67, 44, 1, 43, 43, 45, 43,
+ 43, 43, 43, 43, 43, 47, 48, 49,
+ 50, 51, 52, 53, 47, 54, 46, 55,
+ 56, 57, 58, 43, 59, 60, 61, 43,
+ 43, 43, 43, 62, 63, 64, 65, 1,
+ 43, 74, 73, 73, 73, 73, 73, 73,
+ 73, 75, 73, 11, 76, 74, 73, 44,
+ 1, 43, 43, 45, 43, 43, 43, 43,
+ 43, 77, 47, 48, 49, 50, 51, 52,
+ 53, 47, 54, 46, 55, 56, 57, 58,
+ 43, 59, 60, 61, 43, 78, 79, 43,
+ 62, 63, 64, 65, 1, 43, 44, 1,
+ 43, 43, 45, 43, 43, 43, 43, 43,
+ 43, 47, 48, 49, 50, 51, 52, 53,
+ 47, 54, 46, 55, 56, 57, 58, 43,
+ 59, 60, 61, 43, 78, 79, 43, 62,
+ 63, 64, 65, 1, 43, 78, 79, 80,
+ 79, 80, 3, 6, 81, 81, 82, 81,
+ 81, 81, 81, 81, 83, 18, 19, 20,
+ 21, 22, 23, 24, 18, 25, 27, 27,
+ 28, 29, 30, 81, 31, 32, 33, 81,
+ 81, 81, 81, 37, 38, 39, 40, 6,
+ 81, 3, 6, 81, 81, 82, 81, 81,
+ 81, 81, 81, 81, 18, 19, 20, 21,
+ 22, 23, 24, 18, 25, 27, 27, 28,
+ 29, 30, 81, 31, 32, 33, 81, 81,
+ 81, 81, 37, 38, 39, 40, 6, 81,
+ 18, 19, 20, 21, 22, 81, 81, 81,
+ 81, 81, 81, 28, 29, 30, 81, 31,
+ 32, 33, 81, 81, 81, 81, 19, 38,
+ 39, 40, 84, 81, 19, 20, 21, 22,
81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 31, 32, 33, 81, 81, 81,
+ 81, 81, 38, 39, 40, 84, 81, 20,
+ 21, 22, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 38, 39, 40, 81,
+ 21, 22, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
- 81, 81, 81, 81, 81, 81, 6, 81,
- 8, 77, 77, 77, 8, 77, 77, 77,
- 77, 77, 3, 6, 13, 77, 78, 77,
- 77, 77, 77, 77, 77, 17, 18, 19,
- 20, 21, 22, 23, 17, 24, 25, 26,
- 27, 28, 29, 77, 30, 31, 32, 77,
- 33, 34, 77, 36, 37, 38, 39, 77,
- 3, 6, 77, 77, 78, 77, 77, 77,
- 77, 77, 77, 17, 18, 19, 20, 21,
- 22, 23, 17, 24, 25, 26, 27, 28,
- 29, 77, 30, 31, 32, 77, 77, 77,
- 77, 36, 37, 38, 39, 77, 33, 34,
- 77, 34, 77, 74, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 74,
- 75, 76, 8, 81, 81, 81, 8, 81,
- 0
+ 81, 81, 81, 81, 38, 39, 40, 81,
+ 22, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 38, 39, 40, 81, 38,
+ 39, 81, 39, 81, 20, 21, 22, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 31, 32, 33, 81, 81, 81, 81,
+ 81, 38, 39, 40, 84, 81, 20, 21,
+ 22, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 32, 33, 81, 81,
+ 81, 81, 81, 38, 39, 40, 84, 81,
+ 20, 21, 22, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 33,
+ 81, 81, 81, 81, 81, 38, 39, 40,
+ 84, 81, 20, 21, 22, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 38,
+ 39, 40, 84, 81, 19, 20, 21, 22,
+ 81, 81, 81, 81, 81, 81, 28, 29,
+ 30, 81, 31, 32, 33, 81, 81, 81,
+ 81, 19, 38, 39, 40, 84, 81, 19,
+ 20, 21, 22, 81, 81, 81, 81, 81,
+ 81, 81, 29, 30, 81, 31, 32, 33,
+ 81, 81, 81, 81, 19, 38, 39, 40,
+ 84, 81, 19, 20, 21, 22, 81, 81,
+ 81, 81, 81, 81, 81, 81, 30, 81,
+ 31, 32, 33, 81, 81, 81, 81, 19,
+ 38, 39, 40, 84, 81, 18, 19, 20,
+ 21, 22, 81, 24, 18, 81, 81, 81,
+ 28, 29, 30, 81, 31, 32, 33, 81,
+ 81, 81, 81, 19, 38, 39, 40, 84,
+ 81, 18, 19, 20, 21, 22, 81, 85,
+ 18, 81, 81, 81, 28, 29, 30, 81,
+ 31, 32, 33, 81, 81, 81, 81, 19,
+ 38, 39, 40, 84, 81, 18, 19, 20,
+ 21, 22, 81, 81, 18, 81, 81, 81,
+ 28, 29, 30, 81, 31, 32, 33, 81,
+ 81, 81, 81, 19, 38, 39, 40, 84,
+ 81, 18, 19, 20, 21, 22, 23, 24,
+ 18, 81, 81, 81, 28, 29, 30, 81,
+ 31, 32, 33, 81, 81, 81, 81, 19,
+ 38, 39, 40, 84, 81, 3, 6, 81,
+ 81, 82, 81, 81, 81, 81, 81, 81,
+ 18, 19, 20, 21, 22, 23, 24, 18,
+ 25, 81, 27, 28, 29, 30, 81, 31,
+ 32, 33, 81, 81, 81, 81, 37, 38,
+ 39, 40, 6, 81, 3, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 4, 81, 81, 81, 81, 81,
+ 81, 81, 19, 20, 21, 22, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81,
+ 31, 32, 33, 81, 81, 81, 81, 81,
+ 38, 39, 40, 84, 81, 3, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86,
+ 86, 86, 86, 4, 86, 87, 81, 14,
+ 81, 81, 81, 81, 81, 81, 81, 88,
+ 81, 14, 81, 6, 86, 86, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86,
+ 86, 86, 86, 6, 86, 86, 86, 6,
+ 86, 9, 81, 81, 81, 9, 81, 81,
+ 81, 81, 81, 3, 6, 14, 81, 82,
+ 81, 81, 81, 81, 81, 81, 18, 19,
+ 20, 21, 22, 23, 24, 18, 25, 26,
+ 27, 28, 29, 30, 81, 31, 32, 33,
+ 81, 34, 35, 81, 37, 38, 39, 40,
+ 6, 81, 3, 6, 81, 81, 82, 81,
+ 81, 81, 81, 81, 81, 18, 19, 20,
+ 21, 22, 23, 24, 18, 25, 26, 27,
+ 28, 29, 30, 81, 31, 32, 33, 81,
+ 81, 81, 81, 37, 38, 39, 40, 6,
+ 81, 34, 35, 81, 35, 81, 78, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 78, 79, 80, 9, 86, 86,
+ 86, 9, 86, 0
};
static const char _use_syllable_machine_trans_targs[] = {
- 4, 8, 4, 38, 2, 4, 1, 5,
- 6, 4, 31, 34, 59, 60, 63, 64,
- 68, 40, 41, 42, 43, 44, 53, 54,
- 56, 65, 57, 50, 51, 52, 47, 48,
- 49, 66, 67, 69, 58, 45, 46, 4,
- 4, 4, 4, 7, 0, 30, 11, 12,
- 13, 14, 15, 24, 25, 27, 28, 21,
- 22, 23, 18, 19, 20, 29, 16, 17,
- 4, 10, 4, 9, 26, 4, 32, 33,
- 4, 35, 36, 37, 4, 4, 3, 39,
- 55, 4, 61, 62
+ 5, 9, 5, 41, 2, 5, 1, 53,
+ 6, 7, 5, 34, 37, 63, 64, 67,
+ 68, 72, 43, 44, 45, 46, 47, 57,
+ 58, 60, 69, 61, 54, 55, 56, 50,
+ 51, 52, 70, 71, 73, 62, 48, 49,
+ 5, 5, 5, 5, 8, 0, 33, 12,
+ 13, 14, 15, 16, 27, 28, 30, 31,
+ 24, 25, 26, 19, 20, 21, 32, 17,
+ 18, 5, 11, 5, 10, 22, 5, 23,
+ 29, 5, 35, 36, 5, 38, 39, 40,
+ 5, 5, 3, 42, 4, 59, 5, 65,
+ 66
};
static const char _use_syllable_machine_trans_actions[] = {
- 1, 0, 2, 3, 0, 4, 0, 0,
- 7, 8, 0, 7, 9, 0, 9, 3,
+ 1, 0, 2, 3, 0, 4, 0, 5,
+ 0, 5, 8, 0, 5, 9, 0, 9,
+ 3, 0, 5, 5, 0, 0, 0, 5,
+ 5, 5, 3, 3, 5, 5, 5, 5,
+ 5, 5, 0, 0, 0, 3, 0, 0,
+ 10, 11, 12, 13, 5, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3, 3, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0, 0, 10,
- 11, 12, 13, 7, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 0, 7, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 14, 7, 15, 0, 0, 16, 0, 0,
- 17, 7, 0, 0, 18, 19, 0, 3,
- 0, 20, 0, 0
+ 0, 14, 5, 15, 0, 0, 16, 0,
+ 0, 17, 0, 0, 18, 5, 0, 0,
+ 19, 20, 0, 3, 0, 5, 21, 0,
+ 0
};
static const char _use_syllable_machine_to_state_actions[] = {
- 0, 0, 0, 0, 5, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -314,11 +333,11 @@ static const char _use_syllable_machine_to_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
+ 0, 0
};
static const char _use_syllable_machine_from_state_actions[] = {
- 0, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0, 0, 7, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -326,33 +345,35 @@ static const char _use_syllable_machine_from_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0
};
static const short _use_syllable_machine_eof_trans[] = {
- 1, 3, 3, 6, 0, 41, 43, 43,
- 67, 67, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 67, 43, 70,
- 73, 70, 43, 43, 77, 77, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 82, 78, 78, 78, 82,
- 78, 78, 78, 78, 77, 82
+ 1, 3, 3, 6, 6, 0, 42, 44,
+ 44, 68, 68, 44, 44, 44, 44, 44,
+ 44, 44, 44, 44, 44, 44, 71, 44,
+ 44, 44, 44, 44, 44, 44, 44, 44,
+ 68, 44, 74, 77, 74, 44, 44, 81,
+ 81, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 87,
+ 82, 82, 82, 87, 82, 82, 82, 82,
+ 81, 87
};
-static const int use_syllable_machine_start = 4;
-static const int use_syllable_machine_first_final = 4;
+static const int use_syllable_machine_start = 5;
+static const int use_syllable_machine_first_final = 5;
static const int use_syllable_machine_error = -1;
-static const int use_syllable_machine_en_main = 4;
+static const int use_syllable_machine_en_main = 5;
#line 38 "hb-ot-shape-complex-use-machine.rl"
-#line 150 "hb-ot-shape-complex-use-machine.rl"
+#line 162 "hb-ot-shape-complex-use-machine.rl"
#define found_syllable(syllable_type) \
@@ -371,7 +392,7 @@ find_syllables (hb_buffer_t *buffer)
int cs;
hb_glyph_info_t *info = buffer->info;
-#line 375 "hb-ot-shape-complex-use-machine.hh"
+#line 396 "hb-ot-shape-complex-use-machine.hh"
{
cs = use_syllable_machine_start;
ts = 0;
@@ -379,7 +400,7 @@ find_syllables (hb_buffer_t *buffer)
act = 0;
}
-#line 170 "hb-ot-shape-complex-use-machine.rl"
+#line 182 "hb-ot-shape-complex-use-machine.rl"
p = 0;
@@ -387,7 +408,7 @@ find_syllables (hb_buffer_t *buffer)
unsigned int syllable_serial = 1;
-#line 391 "hb-ot-shape-complex-use-machine.hh"
+#line 412 "hb-ot-shape-complex-use-machine.hh"
{
int _slen;
int _trans;
@@ -397,11 +418,11 @@ find_syllables (hb_buffer_t *buffer)
goto _test_eof;
_resume:
switch ( _use_syllable_machine_from_state_actions[cs] ) {
- case 6:
+ case 7:
#line 1 "NONE"
{ts = p;}
break;
-#line 405 "hb-ot-shape-complex-use-machine.hh"
+#line 426 "hb-ot-shape-complex-use-machine.hh"
}
_keys = _use_syllable_machine_trans_keys + (cs<<1);
@@ -419,73 +440,77 @@ _eof_trans:
goto _again;
switch ( _use_syllable_machine_trans_actions[_trans] ) {
- case 7:
+ case 5:
#line 1 "NONE"
{te = p+1;}
break;
case 12:
-#line 139 "hb-ot-shape-complex-use-machine.rl"
+#line 150 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (independent_cluster); }}
break;
case 14:
-#line 141 "hb-ot-shape-complex-use-machine.rl"
+#line 153 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (standard_cluster); }}
break;
case 10:
-#line 145 "hb-ot-shape-complex-use-machine.rl"
+#line 157 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (broken_cluster); }}
break;
case 8:
-#line 146 "hb-ot-shape-complex-use-machine.rl"
+#line 158 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (non_cluster); }}
break;
case 11:
-#line 139 "hb-ot-shape-complex-use-machine.rl"
+#line 150 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (independent_cluster); }}
break;
case 15:
-#line 140 "hb-ot-shape-complex-use-machine.rl"
+#line 151 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (virama_terminated_cluster); }}
break;
+ case 16:
+#line 152 "hb-ot-shape-complex-use-machine.rl"
+ {te = p;p--;{ found_syllable (sakot_terminated_cluster); }}
+ break;
case 13:
-#line 141 "hb-ot-shape-complex-use-machine.rl"
+#line 153 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (standard_cluster); }}
break;
- case 17:
-#line 142 "hb-ot-shape-complex-use-machine.rl"
+ case 18:
+#line 154 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (number_joiner_terminated_cluster); }}
break;
- case 16:
-#line 143 "hb-ot-shape-complex-use-machine.rl"
+ case 17:
+#line 155 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (numeral_cluster); }}
break;
- case 18:
-#line 144 "hb-ot-shape-complex-use-machine.rl"
+ case 19:
+#line 156 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (symbol_cluster); }}
break;
- case 19:
-#line 145 "hb-ot-shape-complex-use-machine.rl"
+ case 20:
+#line 157 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (broken_cluster); }}
break;
- case 20:
-#line 146 "hb-ot-shape-complex-use-machine.rl"
+ case 21:
+#line 158 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (non_cluster); }}
break;
case 1:
-#line 141 "hb-ot-shape-complex-use-machine.rl"
+#line 153 "hb-ot-shape-complex-use-machine.rl"
{{p = ((te))-1;}{ found_syllable (standard_cluster); }}
break;
case 4:
-#line 145 "hb-ot-shape-complex-use-machine.rl"
+#line 157 "hb-ot-shape-complex-use-machine.rl"
{{p = ((te))-1;}{ found_syllable (broken_cluster); }}
break;
case 2:
#line 1 "NONE"
{ switch( act ) {
- case 7:
+ case 8:
{{p = ((te))-1;} found_syllable (broken_cluster); }
break;
- case 8:
+ case 9:
{{p = ((te))-1;} found_syllable (non_cluster); }
break;
}
@@ -494,25 +519,25 @@ _eof_trans:
case 3:
#line 1 "NONE"
{te = p+1;}
-#line 145 "hb-ot-shape-complex-use-machine.rl"
- {act = 7;}
+#line 157 "hb-ot-shape-complex-use-machine.rl"
+ {act = 8;}
break;
case 9:
#line 1 "NONE"
{te = p+1;}
-#line 146 "hb-ot-shape-complex-use-machine.rl"
- {act = 8;}
+#line 158 "hb-ot-shape-complex-use-machine.rl"
+ {act = 9;}
break;
-#line 507 "hb-ot-shape-complex-use-machine.hh"
+#line 532 "hb-ot-shape-complex-use-machine.hh"
}
_again:
switch ( _use_syllable_machine_to_state_actions[cs] ) {
- case 5:
+ case 6:
#line 1 "NONE"
{ts = 0;}
break;
-#line 516 "hb-ot-shape-complex-use-machine.hh"
+#line 541 "hb-ot-shape-complex-use-machine.hh"
}
if ( ++p != pe )
@@ -528,7 +553,7 @@ _again:
}
-#line 178 "hb-ot-shape-complex-use-machine.rl"
+#line 190 "hb-ot-shape-complex-use-machine.rl"
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.rl
index 2a1b90d8fc6..aca7ea68345 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.rl
@@ -68,6 +68,7 @@ VS = 21; # VARIATION_SELECTOR
#VM = 40; # VOWEL_MOD
CS = 43; # CONS_WITH_STACKER
HVM = 44; # HALANT_OR_VOWEL_MODIFIER
+Sk = 48; # SAKOT
FAbv = 24; # CONS_FINAL_ABOVE
FBlw = 25; # CONS_FINAL_BELOW
@@ -92,7 +93,7 @@ FMAbv = 45; # CONS_FINAL_MOD UIPC = Top
FMBlw = 46; # CONS_FINAL_MOD UIPC = Bottom
FMPst = 47; # CONS_FINAL_MOD UIPC = Not_Applicable
-h = H | HVM; # https://github.com/harfbuzz/harfbuzz/issues/1102
+h = H | HVM | Sk;
# Override: Adhoc ZWJ placement. https://github.com/harfbuzz/harfbuzz/issues/542#issuecomment-353169729
consonant_modifiers = CMAbv* CMBlw* ((ZWJ?.h.ZWJ? B | SUB) VS? CMAbv? CMBlw*)*;
@@ -103,11 +104,16 @@ vowel_modifiers = HVM? VMPre* VMAbv* VMBlw* VMPst*;
final_consonants = FAbv* FBlw* FPst*;
final_modifiers = FMAbv* FMBlw* | FMPst?;
-complex_syllable_tail =
+complex_syllable_start = (R | CS)? (B | GB) VS?;
+complex_syllable_middle =
consonant_modifiers
medial_consonants
dependent_vowels
vowel_modifiers
+ (Sk B)*
+;
+complex_syllable_tail =
+ complex_syllable_middle
final_consonants
final_modifiers
;
@@ -116,12 +122,17 @@ numeral_cluster_tail = (HN N VS?)+;
symbol_cluster_tail = SMAbv+ SMBlw* | SMBlw+;
virama_terminated_cluster =
- (R|CS)? (B | GB) VS?
+ complex_syllable_start
consonant_modifiers
ZWJ?.h.ZWJ?
;
+sakot_terminated_cluster =
+ complex_syllable_start
+ complex_syllable_middle
+ Sk
+;
standard_cluster =
- (R|CS)? (B | GB) VS?
+ complex_syllable_start
complex_syllable_tail
;
broken_cluster =
@@ -138,6 +149,7 @@ other = any;
main := |*
independent_cluster => { found_syllable (independent_cluster); };
virama_terminated_cluster => { found_syllable (virama_terminated_cluster); };
+ sakot_terminated_cluster => { found_syllable (sakot_terminated_cluster); };
standard_cluster => { found_syllable (standard_cluster); };
number_joiner_terminated_cluster => { found_syllable (number_joiner_terminated_cluster); };
numeral_cluster => { found_syllable (numeral_cluster); };
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-table.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-table.cc
index 93b81521715..024746989b7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-table.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-table.cc
@@ -33,6 +33,7 @@
#define Rsv USE_Rsv /* Reserved */
#define S USE_S /* SYM */
#define SUB USE_SUB /* CONS_SUB */
+#define Sk USE_Sk /* SAKOT */
#define VS USE_VS /* VARIATION_SELECTOR */
#define WJ USE_WJ /* Word_Joiner */
#define ZWJ USE_ZWJ /* ZWJ */
@@ -305,7 +306,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 1A30 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1A40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1A50 */ B, B, B, B, B, MPre, MBlw, SUB, FAbv, FAbv, MAbv, SUB, SUB, SUB, SUB, O,
- /* 1A60 */ H, VPst, VAbv, VPst, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VAbv, VBlw, VPst, VPre, VPre,
+ /* 1A60 */ Sk, VPst, VAbv, VPst, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VAbv, VBlw, VPst, VPre, VPre,
/* 1A70 */ VPre, VPre, VPre, VAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VAbv, FMAbv, FMAbv, O, O, FMBlw,
/* 1A80 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
/* 1A90 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
@@ -822,6 +823,7 @@ hb_use_get_category (hb_codepoint_t u)
#undef Rsv
#undef S
#undef SUB
+#undef Sk
#undef VS
#undef WJ
#undef ZWJ
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 cbaa519c4b5..2cc5ea27861 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
@@ -246,6 +246,7 @@ data_destroy_use (void *data)
enum syllable_type_t {
independent_cluster,
virama_terminated_cluster,
+ sakot_terminated_cluster,
standard_cluster,
number_joiner_terminated_cluster,
numeral_cluster,
@@ -337,6 +338,7 @@ setup_topographical_masks (const hb_ot_shape_plan_t *plan,
break;
case virama_terminated_cluster:
+ case sakot_terminated_cluster:
case standard_cluster:
case number_joiner_terminated_cluster:
case numeral_cluster:
@@ -443,6 +445,7 @@ reorder_syllable (hb_buffer_t *buffer, unsigned int start, unsigned int end)
/* Only a few syllable types need reordering. */
if (unlikely (!(FLAG_UNSAFE (syllable_type) &
(FLAG (virama_terminated_cluster) |
+ FLAG (sakot_terminated_cluster) |
FLAG (standard_cluster) |
FLAG (broken_cluster) |
0))))
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.hh
index b52b853cd9f..ce6645ecd31 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.hh
@@ -73,6 +73,8 @@ enum use_category_t {
/* https://github.com/harfbuzz/harfbuzz/issues/1102 */
USE_HVM = 44, /* HALANT_OR_VOWEL_MODIFIER */
+ USE_Sk = 48, /* SAKOT */
+
USE_FAbv = 24, /* CONS_FINAL_ABOVE */
USE_FBlw = 25, /* CONS_FINAL_BELOW */
USE_FPst = 26, /* CONS_FINAL_POST */
diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac
index 1c8c2203670..bb8c767ebc5 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], [2.5.0])
+m4_define([harfbuzz_version], [2.5.1])