summaryrefslogtreecommitdiff
path: root/Build/source/libs/harfbuzz
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/harfbuzz')
-rw-r--r--Build/source/libs/harfbuzz/ChangeLog5
-rw-r--r--Build/source/libs/harfbuzz/Makefile.am1
-rw-r--r--Build/source/libs/harfbuzz/Makefile.in9
-rw-r--r--Build/source/libs/harfbuzz/TLpatches/ChangeLog5
-rw-r--r--Build/source/libs/harfbuzz/TLpatches/TL-Changes4
-rwxr-xr-xBuild/source/libs/harfbuzz/configure24
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog1084
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am12
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/NEWS13
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md6
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/configure.ac15
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/meson.build163
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt16
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources8
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/gen-def.py5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc1
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh1
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-lcar-table.hh23
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.cc3
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-debug.hh4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-dispatch.hh5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh10
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh13
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cpal-table.hh9
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-face-table-list.hh5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hmtx-table.hh36
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh50
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh11
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh13
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh33
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh67
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc167
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.h23
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh17
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-meta.cc2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc3
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh73
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-fvar-table.hh89
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-sanitize.hh2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.cc149
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.h43
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc37
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.hh4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb.h1
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build71
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/write-tarball-revision.py13
-rw-r--r--Build/source/libs/harfbuzz/include/Makefile.am1
-rw-r--r--Build/source/libs/harfbuzz/include/Makefile.in15
-rw-r--r--Build/source/libs/harfbuzz/version.ac2
54 files changed, 1876 insertions, 506 deletions
diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog
index e88487849cb..2f9e4c5a346 100644
--- a/Build/source/libs/harfbuzz/ChangeLog
+++ b/Build/source/libs/harfbuzz/ChangeLog
@@ -1,3 +1,8 @@
+2020-06-23 Akira Kakuto <kakuto@w32tex.org>
+
+ Import harfbuzz-2.6.8.
+ * Makefile.am, include/Makefile.am, version.ac: Adjusted.
+
2020-06-04 Akira Kakuto <kakuto@w32tex.org>
Import harfbuzz-2.6.7.
diff --git a/Build/source/libs/harfbuzz/Makefile.am b/Build/source/libs/harfbuzz/Makefile.am
index e725e7f0d80..3e6df3ac335 100644
--- a/Build/source/libs/harfbuzz/Makefile.am
+++ b/Build/source/libs/harfbuzz/Makefile.am
@@ -117,6 +117,7 @@ libharfbuzz_a_SOURCES = \
@HARFBUZZ_TREE@/src/hb-shaper.cc \
@HARFBUZZ_TREE@/src/hb-static.cc \
@HARFBUZZ_TREE@/src/hb-string-array.hh \
+ @HARFBUZZ_TREE@/src/hb-style.cc \
@HARFBUZZ_TREE@/src/hb-subset-cff-common.cc \
@HARFBUZZ_TREE@/src/hb-subset-cff-common.hh \
@HARFBUZZ_TREE@/src/hb-subset-cff1.cc \
diff --git a/Build/source/libs/harfbuzz/Makefile.in b/Build/source/libs/harfbuzz/Makefile.in
index 02fc07cfc94..b6411c141ac 100644
--- a/Build/source/libs/harfbuzz/Makefile.in
+++ b/Build/source/libs/harfbuzz/Makefile.in
@@ -138,6 +138,7 @@ am_libharfbuzz_a_OBJECTS = @HARFBUZZ_TREE@/src/hb-blob.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-shape-plan.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-shaper.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-static.$(OBJEXT) \
+ @HARFBUZZ_TREE@/src/hb-style.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-subset-cff-common.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-subset-cff1.$(OBJEXT) \
@HARFBUZZ_TREE@/src/hb-subset-cff2.$(OBJEXT) \
@@ -240,6 +241,7 @@ am__depfiles_remade = ./$(DEPDIR)/hbtest-dummy.Po \
@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-shape.Po \
@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-shaper.Po \
@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-static.Po \
+ @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-style.Po \
@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-subset-cff-common.Po \
@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-subset-cff1.Po \
@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-subset-cff2.Po \
@@ -786,6 +788,7 @@ libharfbuzz_a_SOURCES = @HARFBUZZ_TREE@/src/hb-algs.hh \
@HARFBUZZ_TREE@/src/hb-shaper.cc \
@HARFBUZZ_TREE@/src/hb-static.cc \
@HARFBUZZ_TREE@/src/hb-string-array.hh \
+ @HARFBUZZ_TREE@/src/hb-style.cc \
@HARFBUZZ_TREE@/src/hb-subset-cff-common.cc \
@HARFBUZZ_TREE@/src/hb-subset-cff-common.hh \
@HARFBUZZ_TREE@/src/hb-subset-cff1.cc \
@@ -1026,6 +1029,9 @@ clean-noinstLIBRARIES:
@HARFBUZZ_TREE@/src/hb-static.$(OBJEXT): \
@HARFBUZZ_TREE@/src/$(am__dirstamp) \
@HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
+@HARFBUZZ_TREE@/src/hb-style.$(OBJEXT): \
+ @HARFBUZZ_TREE@/src/$(am__dirstamp) \
+ @HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
@HARFBUZZ_TREE@/src/hb-subset-cff-common.$(OBJEXT): \
@HARFBUZZ_TREE@/src/$(am__dirstamp) \
@HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
@@ -1187,6 +1193,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-shape.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-shaper.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-style.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-subset-cff-common.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-subset-cff1.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-subset-cff2.Po@am__quote@ # am--include-marker
@@ -1837,6 +1844,7 @@ distclean: distclean-recursive
-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-shape.Po
-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-shaper.Po
-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-static.Po
+ -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-style.Po
-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-subset-cff-common.Po
-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-subset-cff1.Po
-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-subset-cff2.Po
@@ -1937,6 +1945,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-shape.Po
-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-shaper.Po
-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-static.Po
+ -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-style.Po
-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-subset-cff-common.Po
-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-subset-cff1.Po
-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-subset-cff2.Po
diff --git a/Build/source/libs/harfbuzz/TLpatches/ChangeLog b/Build/source/libs/harfbuzz/TLpatches/ChangeLog
index 03746f3019f..387cb89a688 100644
--- a/Build/source/libs/harfbuzz/TLpatches/ChangeLog
+++ b/Build/source/libs/harfbuzz/TLpatches/ChangeLog
@@ -1,3 +1,8 @@
+2020-06-23 Akira Kakuto <kakuto@w32tex.org>
+
+ Imported harfbuzz-2.6.8 source tree from:
+ https://github.com/harfbuzz/harfbuzz/releases/download/2.6.8/
+
2020-06-04 Akira Kakuto <kakuto@w32tex.org>
Imported harfbuzz-2.6.7 source tree from:
diff --git a/Build/source/libs/harfbuzz/TLpatches/TL-Changes b/Build/source/libs/harfbuzz/TLpatches/TL-Changes
index c879cba962c..af3f92245a5 100644
--- a/Build/source/libs/harfbuzz/TLpatches/TL-Changes
+++ b/Build/source/libs/harfbuzz/TLpatches/TL-Changes
@@ -1,5 +1,5 @@
-Changes applied to the harfbuzz-2.6.7/ tree as obtained from:
- https://github.com/harfbuzz/harfbuzz/releases/download/2.6.7/
+Changes applied to the harfbuzz-2.6.8/ tree as obtained from:
+ https://github.com/harfbuzz/harfbuzz/releases/download/2.6.8/
Removed:
COPYING
diff --git a/Build/source/libs/harfbuzz/configure b/Build/source/libs/harfbuzz/configure
index 95151edc035..1bd74842900 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.6.7.
+# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 2.6.8.
#
# 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.6.7'
-PACKAGE_STRING='harfbuzz (TeX Live) 2.6.7'
+PACKAGE_VERSION='2.6.8'
+PACKAGE_STRING='harfbuzz (TeX Live) 2.6.8'
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.6.7 to adapt to many kinds of systems.
+\`configure' configures harfbuzz (TeX Live) 2.6.8 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.6.7:";;
+ short | recursive ) echo "Configuration of harfbuzz (TeX Live) 2.6.8:";;
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.6.7
+harfbuzz (TeX Live) configure 2.6.8
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.6.7, which was
+It was created by harfbuzz (TeX Live) $as_me 2.6.8, 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.6.7'
+ VERSION='2.6.8'
# Some tools Automake needs.
@@ -4241,8 +4241,8 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags
HB_VERSION_MAJOR=2
HB_VERSION_MINOR=6
-HB_VERSION_MICRO=7
-HB_VERSION=2.6.7
+HB_VERSION_MICRO=8
+HB_VERSION=2.6.8
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.6.7, which was
+This file was extended by harfbuzz (TeX Live) $as_me 2.6.8, 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.6.7
+harfbuzz (TeX Live) config.status 2.6.8
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt b/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt
index 71830b6f5a4..4a8e2a259ef 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 2.8.0)
project(harfbuzz)
-message("HarfBuzz has a Meson port also and tries to migrate all the other build systems to it, please consider using it.")
+message(WARN "HarfBuzz has a Meson port and tries to migrate all the other build systems to it, please consider using it as we might remove our cmake port soon.")
## Limit framework build to Xcode generator
if (BUILD_FRAMEWORK)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog
index 2817d073eaf..6b15e792076 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog
@@ -1,3 +1,1046 @@
+commit e4203c14699cc0903a2b4611167a7b99532cfdb0
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Mon Jun 22 05:03:27 2020 +0430
+
+ 2.6.8
+
+ NEWS | 13 +++++++++++++
+ configure.ac | 2 +-
+ meson.build | 2 +-
+ src/hb-ot-layout.cc | 2 +-
+ src/hb-version.h | 4 ++--
+ 5 files changed, 18 insertions(+), 5 deletions(-)
+
+commit 8c84fee2e568c7b0a1852a7dad26386bbf6a9d0b
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Mon Jun 22 04:04:40 2020 +0430
+
+ Update build systems status messages
+
+ CMakeLists.txt | 2 +-
+ configure.ac | 11 +++++++++++
+ meson.build | 2 +-
+ 3 files changed, 13 insertions(+), 2 deletions(-)
+
+commit e541fb474cc948659855dee9374946829de14581
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sun Jun 21 09:49:48 2020 +0430
+
+ minor, replace single hb_apply daggers with foreach
+
+ src/hb-map.hh | 10 ++++------
+ src/hb-ot-hmtx-table.hh | 36 +++++++++++++++++-------------------
+ src/hb-ot-math-table.hh | 15 ++++++---------
+ 3 files changed, 27 insertions(+), 34 deletions(-)
+
+commit 8bca9a420e1fcf460e2f3c115fbf7541c81abd9d
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sun Jun 21 09:18:12 2020 +0430
+
+ [fvar] minor
+
+ src/hb-ot-var-fvar-table.hh | 19 ++++++++-----------
+ 1 file changed, 8 insertions(+), 11 deletions(-)
+
+commit b5ae8eab44e92089a184d1901758aac6650eeab0
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sun Jun 21 08:51:46 2020 +0430
+
+ [ci] raise msan bot subset timeout
+
+ .circleci/config.yml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 82ec9ef2e9c1a2c148b0fc7f91a2ca2c2a064ef5
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sun Jun 21 01:36:16 2020 +0430
+
+ [fvar] minor simplification
+
+ src/hb-ot-var-fvar-table.hh | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+commit 4e37c48e375f3721157e919497a7114bdcb0d454
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat Jun 20 23:57:45 2020 +0430
+
+ [fvar] Remove get_axis_info and get_axis_deprecated
+
+ src/hb-ot-var-fvar-table.hh | 22 ++++++++--------------
+ 1 file changed, 8 insertions(+), 14 deletions(-)
+
+commit 61c240f39963064852a2e58fc42897351e37d8b5
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat Jun 20 13:24:32 2020 +0430
+
+ [fvar] Push _axis_info fill logic deeper
+
+ src/hb-ot-var-fvar-table.hh | 54 ++++++++++++++++++++++++---------------------
+ 1 file changed, 29 insertions(+), 25 deletions(-)
+
+commit 47a0fbec31c2e49a2b895f6f926bf755820cacab
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sun Jun 21 02:34:59 2020 +0430
+
+ [meson] Mark longer tests with slow
+
+ So one can skip them easily by `meson test -Cbuild --no-suite slow`
+
+ src/meson.build | 2 +-
+ test/fuzzing/meson.build | 4 ++--
+ test/subset/meson.build | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 47dedc7500843ac9c5a036621a7a65e1b1861a58
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sun Jun 21 01:54:57 2020 +0430
+
+ [ci] increase tsan and ubsan subset fuzzer timeout
+
+ as https://circleci.com/gh/harfbuzz/harfbuzz/144966 and https://circleci.com/gh/harfbuzz/harfbuzz/144970
+
+ .circleci/config.yml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit b2d0dba5ef2ea9530c9c0d2a8ed33849a59b56f8
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat Jun 20 12:07:42 2020 +0430
+
+ [cpal] Port to dagger
+
+ src/hb-ot-color-cpal-table.hh | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+commit 08816117788491a989888c30b9676bc8d7849f96
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat Jun 20 01:02:50 2020 +0430
+
+ [fuzzer] Make some use for test_font API calls
+
+ Making some use for result of some of the test_font calls to make
+ sure compilers in fuzzers aren't just optimizing the calls.
+
+ test/api/test-ot-face.c | 42 +++++++++++++++++++++++++----------------
+ test/fuzzing/hb-shape-fuzzer.cc | 8 ++++----
+ 2 files changed, 30 insertions(+), 20 deletions(-)
+
+commit b4f34539c26561e35eaa09160784e07cec6b1b9c
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat Jun 20 00:47:00 2020 +0430
+
+ [fuzzer] test more of ot-layout APIs
+
+ test/api/test-ot-face.c | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+commit a6bcc577a9062c875854305aeebe4e90a9abe5f7
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat Jun 20 14:19:12 2020 +0430
+
+ [meson] don't `add_dist_script` when we are subproject
+
+ Happens when harfbuzz is used as a meson subproject,
+ `ERROR: add_dist_script may not be used in a subproject.`
+
+ meson.build | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit 175d93bbdaaf4640eb41baed2698fe0e2ee78831
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat Jun 20 14:03:10 2020 +0430
+
+ [mesos/docs] fix gobject headers ignoring logic
+
+ fixes #2463
+
+ docs/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 25cf6874430afdb9bf93fcb7f92ae4c11f51be89
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat Jun 20 01:36:50 2020 +0430
+
+ Use dagger in OffsetTable::get_table_tags (#2477)
+
+ src/hb-open-file.hh | 13 ++++---------
+ 1 file changed, 4 insertions(+), 9 deletions(-)
+
+commit dce4353f86fe9c5e1b62194b89c844ba5da86143
+Merge: 89a2c46e d38eb49f
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat Jun 20 01:24:41 2020 +0430
+
+ Merge pull request #2476 from ebraminio/cv-get-chars
+
+ [layout] Use dagger in hb_ot_layout_feature_get_characters
+
+commit 89a2c46e6198f188393415151620f6fb5f160e11
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat Jun 20 00:31:46 2020 +0430
+
+ [math] Use dagger (#2478)
+
+ * [math] Use dagger
+
+ * [ot-math] Address Behdad's review
+
+ src/hb-ot-math-table.hh | 20 +++++++++-----------
+ 1 file changed, 9 insertions(+), 11 deletions(-)
+
+commit d38eb49f46a3381c7930568b4bfb35af4052c0f9
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 19 23:40:42 2020 +0430
+
+ Move the iteration logic to FeatureParamsCharacterVariants
+
+ Hopefully I can make members protected also.
+
+ src/hb-ot-layout-common.hh | 12 ++++++++++++
+ src/hb-ot-layout.cc | 15 ++++-----------
+ 2 files changed, 16 insertions(+), 11 deletions(-)
+
+commit 9b3d4f457ef0010a1bd3f0a8186f886f2499f688
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 19 23:33:07 2020 +0430
+
+ Use dagger in hb_ot_layout_feature_get_characters
+
+ The way it used to work was a bit nonidiomatic but the replacment
+ is idiomatic way of iterating used elsewhere.
+
+ The new code just doesn't check nullability of "characters", which isn't
+ what we do anywhere else.
+
+ src/hb-ot-layout.cc | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+commit 675854b2bac03612ef7f5bd406a7ff7207b89b59
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 19 23:27:39 2020 +0430
+
+ [test] Add one more test for hb_ot_layout_feature_get_characters
+
+ test/api/test-ot-name.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit 63422c4cbc4cb53a19f3986b3c20312c1085b29f
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 19 23:24:04 2020 +0430
+
+ [ot-layout] simplify
+
+ src/hb-ot-layout.cc | 11 +++--------
+ 1 file changed, 3 insertions(+), 8 deletions(-)
+
+commit 407bba3e0d591a5708955e76ae914aa67198044e
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 19 23:12:42 2020 +0430
+
+ minor
+
+ move FeatureParamsCharacterVariants::sanitize method right above members
+
+ src/hb-ot-layout-common.hh | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+commit f1488152bd47d4434532226d94f1be38c24ac735
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 19 23:07:28 2020 +0430
+
+ [doc] Remove the not needed comment
+
+ All the other similar iterating API are like this and don't have such
+ comment, written at the time I wasn't familiar enough with the way such
+ API are shaped.
+
+ src/hb-ot-layout.cc | 6 ------
+ 1 file changed, 6 deletions(-)
+
+commit 1535440b48a081cea04cffb7f12cd63c197ae9d4
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Jun 19 08:30:59 2020 -0700
+
+ [dispatch] Fix debug builds
+
+ src/hb-aat-layout-common.hh | 1 -
+ src/hb-aat-layout.cc | 3 +--
+ src/hb-dispatch.hh | 3 ++-
+ src/hb-ot-layout-common.hh | 2 --
+ src/hb-ot-layout-gsubgpos.hh | 6 +-----
+ src/hb-sanitize.hh | 2 --
+ src/hb-subset.hh | 4 +---
+ 7 files changed, 5 insertions(+), 16 deletions(-)
+
+commit bb9a40da653b5bab595f79de76a8feda18cb1b5c
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 19 19:22:47 2020 +0430
+
+ [lcar] Use dagger
+
+ src/hb-aat-layout-lcar-table.hh | 23 +++++++++++++----------
+ 1 file changed, 13 insertions(+), 10 deletions(-)
+
+commit 6fbb59aba6680225d13a6c3e0ba7d033096e6c55
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 15:12:37 2020 -0700
+
+ Use daggers in a few get_array functions
+
+ As I review https://github.com/harfbuzz/harfbuzz/pull/2471
+
+ src/hb-ot-layout-common.hh | 21 +++++++++++----------
+ src/hb-ot-layout-gdef-table.hh | 7 +++----
+ 2 files changed, 14 insertions(+), 14 deletions(-)
+
+commit a512ca8eae70710974e845062305d73bf4012466
+Merge: 03bd3efa 70d6696c
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 19 10:46:12 2020 +0430
+
+ Merge pull request #2473 from harfbuzz/gsub-alternate
+
+ fixes #673
+
+commit 03bd3efaa7072021b702ab3f4ce8abcd1ac47d46
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 19 10:32:46 2020 +0430
+
+ [meson] Write git revision to .tarball-revision on dist tarball
+
+ Makefile.am | 1 +
+ meson.build | 2 ++
+ write-tarball-revision.py | 13 +++++++++++++
+ 3 files changed, 16 insertions(+)
+
+commit 70d6696cc6c863673a580b3bfc79d16d3a5d393d
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 17:09:39 2020 -0700
+
+ [dispatch] Don't require debug_depth for untraced objects
+
+ src/hb-dispatch.hh | 1 +
+ src/hb-ot-layout-common.hh | 4 +---
+ src/hb-ot-layout-gsubgpos.hh | 20 ++++----------------
+ src/hb-ot-layout.cc | 4 +---
+ 4 files changed, 7 insertions(+), 22 deletions(-)
+
+commit 5bc4cedde67854ecda72305d839c7e7ad297e83e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 17:04:35 2020 -0700
+
+ Rename
+
+ src/hb-ot-layout.cc | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+commit dc492d7c8a49f0c0322848348d35ac8b818fce57
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 17:03:05 2020 -0700
+
+ [dispatch] Comment
+
+ src/hb-ot-layout-gsubgpos.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 25aec0265c1a1030c7d6453e85b2463589c8688a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 16:58:01 2020 -0700
+
+ [dispatch] Default return type to hb_empty_t
+
+ src/hb-dispatch.hh | 2 +-
+ src/hb-ot-layout-common.hh | 2 +-
+ src/hb-ot-layout-gsubgpos.hh | 8 ++++----
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 8d0a90ac1bd9f6485d3e0fead7c648caa735eb81
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 16:53:54 2020 -0700
+
+ [dispatch] Default debug level to 0
+
+ src/hb-dispatch.hh | 2 +-
+ src/hb-ot-layout-common.hh | 2 +-
+ src/hb-ot-layout-gsubgpos.hh | 14 +++++++-------
+ src/hb-ot-layout.cc | 2 +-
+ 4 files changed, 10 insertions(+), 10 deletions(-)
+
+commit d7d8604ec8526f96618b4f0f83ed9b3204e7b597
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 16:51:01 2020 -0700
+
+ Remove excessive trace routes
+
+ src/hb-debug.hh | 4 ----
+ src/hb-ot-layout-gsubgpos.hh | 6 ++----
+ 2 files changed, 2 insertions(+), 8 deletions(-)
+
+commit e47a2ab8f8a90d903653a1d0d970c220f0957158
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 16:48:07 2020 -0700
+
+ Remove unused dispatcher names
+
+ src/hb-dispatch.hh | 1 +
+ src/hb-ot-layout-common.hh | 1 -
+ src/hb-ot-layout-gsubgpos.hh | 5 -----
+ src/hb-ot-layout.cc | 1 -
+ 4 files changed, 1 insertion(+), 7 deletions(-)
+
+commit b2a1acccd9776beddb25fb4f9e24ca6e272958f4
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 16:41:31 2020 -0700
+
+ Simplify get_glyph_alternates() dispatcher
+
+ Trying to make it **very simple** to add a specialized dispatcher for
+ one API to be routed to just a few objects (one in this case).
+
+ src/hb-ot-layout-gsub-table.hh | 9 ++++++---
+ src/hb-ot-layout-gsubgpos.hh | 40 ----------------------------------------
+ src/hb-ot-layout.cc | 32 ++++++++++++++++++++++++++++++--
+ 3 files changed, 36 insertions(+), 45 deletions(-)
+
+commit ffe8d3f39d5a742e51f87b5af66a2a7e63c87037
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 16:31:39 2020 -0700
+
+ Use dispatch for get_glyph_alternates_t
+
+ First time we do this in a way that if target object doesn't have the matching
+ function we basically "ignore". Risky but I feel like is the right decision
+ for this case.
+
+ I'm going to put back the template varargs and use those, which would make
+ the dispatcher be just that: "dispatcher", and wouldn't need to carry the
+ call context. That would be a refreshing change I think.
+
+ src/hb-ot-layout-gsub-table.hh | 41 +++--------------------------------------
+ src/hb-ot-layout-gsubgpos.hh | 39 +++++++++++++++++++++++++++++++++++++++
+ src/hb-ot-layout.cc | 5 ++++-
+ 3 files changed, 46 insertions(+), 39 deletions(-)
+
+commit bedf4171218ef7c64386aa492b574356277fc21f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 15:49:01 2020 -0700
+
+ Push get_glyph_alternates() work all the way down
+
+ src/hb-ot-layout-gsub-table.hh | 36 ++++++++++++------------------------
+ 1 file changed, 12 insertions(+), 24 deletions(-)
+
+commit 5bede33885a5349c05e0724e8ee6948af8a25670
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 15:25:19 2020 -0700
+
+ Whitespace
+
+ src/hb-ot-layout.cc | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+commit e13aaaaa4566c8aa1a790402b38448713c6621ab
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 15:22:54 2020 -0700
+
+ Move API to right place in header
+
+ src/hb-ot-layout.h | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+commit 26514ad70e4e96b862ff6bd63fb2a03e136e7620
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 18 15:22:07 2020 -0700
+
+ Fix API comment
+
+ src/hb-ot-layout.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 1bac85828c134835ce0a3ecd517aefdcecf43d9a
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 18 22:56:07 2020 +0430
+
+ [layout] Rename _get_alternates to _get_glyph_alternates
+
+ docs/harfbuzz-sections.txt | 2 +-
+ src/hb-ot-layout-gsub-table.hh | 36 ++++++++++++++++++------------------
+ src/hb-ot-layout.cc | 16 ++++++++--------
+ src/hb-ot-layout.h | 12 ++++++------
+ test/api/test-ot-alternates.c | 6 +++---
+ 5 files changed, 36 insertions(+), 36 deletions(-)
+
+commit 9ef9ac3749abdc814088571108760144b0f6f812
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jun 17 17:41:15 2020 -0700
+
+ [gpos] Break cycle-of-2 when cursive attaching
+
+ Fix thinko this time around.
+
+ Fixes https://github.com/harfbuzz/harfbuzz/issues/2469
+
+ src/hb-ot-layout-gpos-table.hh | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit d3c169792ba4771b459c37a4430fab6f2dcbda5e
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 18 08:37:21 2020 +0430
+
+ [layout] move alternate buffer iteration logic to AlternateSet
+
+ src/hb-ot-layout-gsub-table.hh | 72 +++++++++++++++++++++++++++++++-----------
+ src/hb-ot-layout.cc | 13 ++------
+ 2 files changed, 57 insertions(+), 28 deletions(-)
+
+commit 1348a2c865d368a4f6e83add0edfa9945d84914f
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Tue Jun 16 21:05:16 2020 -0400
+
+ [layout] hb_ot_layout_lookup_get_alternates, a new API
+
+ An API to retrieve one-to-one alternates from a given GSUB lookup index.
+
+ docs/harfbuzz-sections.txt | 1 +
+ src/hb-ot-layout-gsub-table.hh | 30 ++++++++++++++++++++++++
+ src/hb-ot-layout.cc | 37 +++++++++++++++++++++++++++++
+ src/hb-ot-layout.h | 7 ++++++
+ test/api/Makefile.am | 1 +
+ test/api/meson.build | 1 +
+ test/api/test-ot-alternates.c | 53 ++++++++++++++++++++++++++++++++++++++++++
+ 7 files changed, 130 insertions(+)
+
+commit a4955e21fdd4069cad6f519900b9ce130408581b
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 18 08:59:49 2020 +0430
+
+ [ci] install gobject-instrospection on linux ci
+
+ .github/workflows/linux-ci.yml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3fe719571362e39e70eb12ea9d7be9dabb505c4c
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jun 17 17:51:08 2020 -0700
+
+ Revert "[gpos] Break cycle-of-2 when cursive attaching"
+
+ This reverts commit 7090707de67e660ae626ecf774f6af8a63a692ab.
+
+ src/hb-ot-layout-gpos-table.hh | 6 ------
+ 1 file changed, 6 deletions(-)
+
+commit 7090707de67e660ae626ecf774f6af8a63a692ab
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jun 17 17:41:15 2020 -0700
+
+ [gpos] Break cycle-of-2 when cursive attaching
+
+ Fixes https://github.com/harfbuzz/harfbuzz/issues/2469
+
+ src/hb-ot-layout-gpos-table.hh | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit 09dedb1b382d0f2f8725ead891c27b87359c072c
+Author: Khaled Hosny <khaledhosny@eglug.org>
+Date: Thu Jun 18 02:29:12 2020 +0200
+
+ [tests] I’m an idiot
+
+ test/shaping/data/in-house/Makefile.sources | 1 +
+ test/shaping/data/in-house/meson.build | 1 +
+ test/shaping/data/in-house/tests/reverse-sub.tests | 1 +
+ test/shaping/texts/in-house/shaper-default/script-latin/misc/misc.txt | 1 -
+ 4 files changed, 3 insertions(+), 1 deletion(-)
+
+commit 2598855454b77b69633220e7e912b2ac82f450f9
+Author: Khaled Hosny <khaledhosny@eglug.org>
+Date: Thu Jun 18 02:15:59 2020 +0200
+
+ [tests] Add test for ReverseChainSingleSubstFormat1 missing substitute
+
+ https://github.com/harfbuzz/harfbuzz/issues/2467
+
+ .../fonts/a706511c65fb278fda87eaf2180ca6684a80f423.ttf | Bin 0 -> 924 bytes
+ .../in-house/shaper-default/script-latin/misc/misc.txt | 1 +
+ 2 files changed, 1 insertion(+)
+
+commit e5de3918f7fbed754ff912c78bec8f9825b06d52
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jun 17 16:54:23 2020 -0700
+
+ [indic] Add comment
+
+ https://github.com/harfbuzz/harfbuzz/issues/2298#issuecomment-615318654
+
+ src/hb-ot-shape-complex-indic.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 41ef75f64afc36a8d7d6ab8382dd2093ad86fc49
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jun 17 16:29:09 2020 -0700
+
+ [gsub] Don't substitute in ReverseChainSingleSubstFormat1 if missing substitute
+
+ Fixes https://github.com/harfbuzz/harfbuzz/issues/2467
+
+ src/hb-ot-layout-gsub-table.hh | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit e7c79e16b8cb0983ee9cfed478d721c75949e757
+Merge: f31e3d42 fe926970
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jun 17 15:32:40 2020 -0700
+
+ Merge pull request #2287 from simoncozens/instrumentation
+
+ Add messages for GPOS/GSUB (take 2)
+
+commit fe926970bc16ee438fe74d8ee366393ed3576bd5
+Author: Simon Cozens <simon@simon-cozens.org>
+Date: Tue Jun 16 09:12:44 2020 +0100
+
+ Reformat messages again
+
+ Messages can be:
+
+ start/end table XXXX
+ start/end lookup NNNN
+ start/end subtable NNNN (for kerx/kern)
+ start/end chainsubtable NNNN (for morx)
+
+ src/hb-aat-layout-kerx-table.hh | 4 ++--
+ src/hb-aat-layout-morx-table.hh | 4 ++--
+ src/hb-ot-layout.cc | 4 ++--
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+commit f31e3d426dbbc096bca4892cbc2dc3f541a36d1d
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 12 17:33:11 2020 +0430
+
+ [ci] raise subset fuzzer timeout for asan and valgrind bots
+
+ .circleci/config.yml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit cccdaf45df8a0664bc20c54055064460080ccbb8
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 12 11:15:37 2020 +0430
+
+ [docs] minor
+
+ revealed now that we turned gobject/gir build to 'auto'
+
+ src/hb-ot-meta.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit be278acf44e862c5cf83a0ca118058e1cb61372d
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 12 01:46:23 2020 +0430
+
+ [ci] raise subset fuzzer cases runner timeout
+
+ the bots are either not optimized ones or sanitizer ones so not much value
+ on trying to optimize them further.
+
+ .circleci/config.yml | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit b86bfe52915f61c0b1c228d967c42b14627fed5d
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 12 01:42:27 2020 +0430
+
+ minor, fix lists sorting
+
+ test/shaping/data/in-house/meson.build | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 4e7cb7e2c4b182e8062c3c0c9a15059bcfd40700
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 12 01:38:16 2020 +0430
+
+ minor, fix lists sorting
+
+ src/Makefile.sources | 6 +++---
+ src/meson.build | 6 +++---
+ test/shaping/data/in-house/Makefile.sources | 6 +++---
+ test/subset/data/Makefile.sources | 18 +++++++++---------
+ 4 files changed, 18 insertions(+), 18 deletions(-)
+
+commit 973c47f6c9886cd2a50d29e09c978831b4e355f6
+Author: Qunxin Liu <qxliu@google.com>
+Date: Thu Jun 11 11:27:57 2020 -0700
+
+ [subset] Move 2 experimental public api methods to be private methods in GSUB/GPOS.
+
+ 2 methods are: hb_ot_layout_closure_lookups and hb_ot_layout_closure_features
+
+ docs/harfbuzz-sections.txt | 2 --
+ src/gen-def.py | 4 +--
+ src/hb-ot-layout-gpos-table.hh | 5 +++
+ src/hb-ot-layout-gsub-table.hh | 5 +++
+ src/hb-ot-layout-gsubgpos.hh | 15 +++++++++
+ src/hb-ot-layout.cc | 66 ---------------------------------------
+ src/hb-ot-layout.h | 14 ---------
+ src/hb-subset-plan.cc | 35 ++++++++-------------
+ test/api/test-ot-face.c | 6 ----
+ test/subset/data/Makefile.sources | 3 --
+ test/subset/meson.build | 5 ---
+ 11 files changed, 39 insertions(+), 121 deletions(-)
+
+commit 62de2f749c16ebbb3908dba09e5dfcd670765140
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 11 19:09:24 2020 +0430
+
+ [meson] Remove spaces before named parameter colons
+
+ meson documentations sometimes adds the space and sometimes don't and we
+ aren't adding it most of the times unconsciously so let's the cases and
+ be consistent.
+
+ meson.build | 18 +++++++++---------
+ meson_options.txt | 10 +++++-----
+ 2 files changed, 14 insertions(+), 14 deletions(-)
+
+commit 2d91662294ebe8d4856342464243f0a9fa734702
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 11 19:04:08 2020 +0430
+
+ [meson] move tests lists to their directories
+
+ We had to do so for text-rendering-tests list, let's apply the same for the rest also.
+
+ test/shaping/data/aots/Makefile.am | 1 +
+ test/shaping/data/aots/meson.build | 123 +++++++++++++++++++++
+ test/shaping/data/in-house/Makefile.am | 1 +
+ test/shaping/data/in-house/meson.build | 60 +++++++++++
+ test/shaping/meson.build | 189 +--------------------------------
+ 5 files changed, 188 insertions(+), 186 deletions(-)
+
+commit b8454c3d61808bb85996d8e734cdb87e5be059ae
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 11 18:32:13 2020 +0430
+
+ [meson] use if blocks to separate different dependencies
+
+ meson.build | 106 ++++++++++++++++++++++++++++++++----------------------------
+ 1 file changed, 56 insertions(+), 50 deletions(-)
+
+commit 8571b3551c6bbb032503c7c301c13d3d961923b5
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat Jun 6 20:16:50 2020 +0430
+
+ [releasing] Remove tar signing procedure
+
+ https://github.com/harfbuzz/harfbuzz/issues/2449#issuecomment-639898473
+
+ Makefile.am | 11 -----------
+ RELEASING.md | 6 ++----
+ 2 files changed, 2 insertions(+), 15 deletions(-)
+
+commit ebab4b8658ed415b06d3014fca78e0e1c0bba5df
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Wed Jun 10 16:52:32 2020 +0430
+
+ [meson] Implement disabled state for cairo/freetype/icu
+
+ 'disabled' wasn't implemented for some of the features so they were
+ getting found even with explicit -Dfeature=disabled, this implements it.
+
+ Run the following command to test this change and check whether 'disabled'
+ was actually effective,
+ meson build -Dglib=disabled -Dgobject=disabled -Dcairo=disabled -Dfontconfig=disabled -Dicu=disabled -Dfreetype=disabled -Dintrospection=disabled -Dgtk_doc=disabled
+
+ This is useful when one wants to integrate harfbuzz into another project via
+ meson's subproject mechanism.
+
+ meson.build | 28 ++++++++++++++++++----------
+ 1 file changed, 18 insertions(+), 10 deletions(-)
+
+commit b88f1096ad88c8ee3a88b6d483387c4e6eab6f61
+Author: Nirbheek Chauhan <nirbheek@centricular.com>
+Date: Tue Jun 9 20:06:50 2020 +0530
+
+ meson: Export symbols for a DLL when not building statically
+
+ `default_library` might be 'both', in which case we will fail to link
+ when building with MSVC.
+
+ src/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 5c8900efe43c0f408a8683bfd2be274cd0dac8c4
+Author: Khaled Hosny <khaledhosny@eglug.org>
+Date: Mon Jun 8 02:29:04 2020 +0200
+
+ [coretext] Properly check for macOS 10.10
+
+ Fixes https://github.com/harfbuzz/harfbuzz/issues/2452
+
+ src/hb-coretext.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 0151da23d605c7709d432ebfb17a337a5f662839
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat Jun 6 01:48:23 2020 +0430
+
+ [meson] Remove with_libstdcxx build option
+
+ This was done in #770 but no indication of anyone is using it,
+ let's remove it from our meson port and we can just don't care about
+ it in autotools port after the migration to meson.
+
+ meson_options.txt | 2 --
+ src/meson.build | 21 +++++----------------
+ 2 files changed, 5 insertions(+), 18 deletions(-)
+
+commit 56719474c208508220f24b78fd295d94564882fa
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Jun 5 12:57:23 2020 -0700
+
+ s/blacklist/blocklist/g
+
+ src/hb-ot-layout-gdef-table.hh | 4 ++--
+ src/hb-ot-layout-gpos-table.hh | 2 +-
+ src/hb-ot-layout-gsub-table.hh | 2 +-
+ src/hb-ot-layout-gsubgpos.hh | 2 +-
+ src/hb-ot-layout.cc | 8 ++++----
+ src/hb-ot-shape-complex-indic.cc | 2 +-
+ 6 files changed, 10 insertions(+), 10 deletions(-)
+
+commit 22048d55aa37acfe50a0f5ae7b361db8d323905e
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 5 04:09:07 2020 +0430
+
+ [meson] Add -Bsymbolic-functions
+
+ meson.build | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit e98aa0c89712d676f8db328a192cd19a009f28ce
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Tue Jun 2 16:25:22 2020 +0430
+
+ [meson] Make gobject and introspection features automatic
+
+ Meson doesn't have DISTCHECK_CONFIGURE_FLAGS like concept IIUC
+ and enabling them is the main thing we are doing with
+ distcheck flags anyway so lets turn them to auto.
+
+ meson_options.txt | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 65462c4b0bf4b1656bacc5377d248f53e9966fd0
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 5 01:08:08 2020 +0430
+
+ minor, improve the need for graphite comment
+
+ configure.ac | 2 +-
+ meson.build | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 03bd6ead445b78560083caa22ce144058dcf4385
+Author: Christoph Reiter <reiter.christoph@gmail.com>
+Date: Wed Jun 3 23:52:10 2020 +0200
+
+ [meson] Only pass required dependencies to everything
+
+ Instead of passing dependencies as required we used one giant shared
+ dependency list containing all dependencies for every library/executable.
+ While this kinda works, the specified deps are also used for generating
+ the pkg-config files and this leads to lots of Requires.private and Libs.private
+ entries which aren't really needed.
+
+ This removes the "deps" array and replaces it with a few smaller ones and
+ makes sure the public libraries only get passed the dependencies actually
+ needed.
+
+ Fixes #2441
+
+ meson.build | 29 ++++++++++-------------------
+ src/meson.build | 24 ++++++++++++++++--------
+ test/api/meson.build | 2 +-
+ test/fuzzing/meson.build | 1 -
+ util/meson.build | 10 ++++++----
+ 5 files changed, 33 insertions(+), 33 deletions(-)
+
+commit 759df46575db49dd7d15da6e6df441d622e65470
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 4 15:49:54 2020 +0430
+
+ [style] Hide behind HB_EXPERIMENTAL_API compile flag
+
+ docs/harfbuzz-sections.txt | 6 ------
+ src/gen-def.py | 1 +
+ src/hb-style.cc | 40 ++++++++++++++++++++++++++++++++++++++--
+ src/hb-style.h | 38 +++-----------------------------------
+ test/api/test-ot-face.c | 2 ++
+ test/api/test-style.c | 10 ++++++++++
+ 6 files changed, 54 insertions(+), 43 deletions(-)
+
+commit d54de56870d136e59b6239b9d1db023fe8f002ab
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Tue Apr 21 16:33:50 2020 +0430
+
+ [style] Adopt with meson
+
+ src/meson.build | 2 ++
+ test/api/meson.build | 1 +
+ 2 files changed, 3 insertions(+)
+
+commit de0ec5f4fef8730d10ca049c43991ede7ae42f6d
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sat Feb 8 14:09:09 2020 +0330
+
+ [style] give ptem value when asked for opsz
+
+ ptem, used for AAT's tracking/`trak` table is equivalent to opsz of variable fonts.
+
+ For variable AAT fonts, such as SFNS, ideally variable axis of the hb_font_t
+ should be set and equivalent to ptem, https://crbug.com/1005969#c37
+
+ src/hb-style.cc | 3 +++
+ test/api/test-style.c | 3 +++
+ 2 files changed, 6 insertions(+)
+
+commit 22037499b42d9fce100ee771a229b961b5e1cb2d
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Sun Aug 4 11:31:31 2019 +0430
+
+ [style] New experimental API, hb_style_get_value
+
+ Searches variation axes of a hb_font_t object for a specific axis first,
+ if not set, then tries to get default style values from different
+ tables of the font.
+
+ docs/harfbuzz-sections.txt | 6 ++
+ src/Makefile.sources | 2 +
+ src/harfbuzz.cc | 1 +
+ src/hb-config.hh | 2 +-
+ src/hb-ot-face-table-list.hh | 5 +-
+ src/hb-ot-stat-table.hh | 73 ++++++++++++++++++
+ src/hb-style.cc | 110 +++++++++++++++++++++++++++
+ src/hb-style.h | 75 ++++++++++++++++++
+ src/hb-subset-plan.cc | 2 +-
+ src/hb.h | 1 +
+ test/api/Makefile.am | 1 +
+ test/api/fonts/aat-fdsc.ttf | Bin 0 -> 556 bytes
+ test/api/test-ot-face.c | 6 ++
+ test/api/test-style.c | 177 +++++++++++++++++++++++++++++++++++++++++++
+ 14 files changed, 457 insertions(+), 4 deletions(-)
+
+commit d67553d12fc72c4a89fcb75400829b62d53ca064
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 4 12:31:57 2020 +0430
+
+ [meson] fix with_libstdcxx effect
+
+ oops
+
+ src/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6f7048b917e7c81d276a7dc4a832a4cf042ffffe
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 4 10:18:35 2020 +0430
+
+ [meson] Update subset tests list from autotools
+
+ test/subset/meson.build | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 7e74aa6a7811ddb0999be5f33581d7933af6ba1c
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 4 09:32:20 2020 +0430
+
+ [ci] fix meson-gcc-mingw bot
+
+ keep build folder for dist testing
+
+ .circleci/config.yml | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+commit b35764334e1ddf11c9aa4d0b1d0f9b7467d79106
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 4 04:10:11 2020 +0430
+
+ [ci] check workability of meson based dist
+
+ .circleci/config.yml | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 6bf5e8e7e62620501b068230f398db1e9219f1b8
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 4 04:03:14 2020 +0430
+
+ [ci] Deploy only when there is something to push
+
+ Apparently the previous version of gtk-doc was doing weird changes like https://github.com/harfbuzz/harfbuzz.github.io/commit/1b40da99bbd1985d060d273ef37f1ccad16913c4 and https://github.com/harfbuzz/harfbuzz.github.io/commit/d1d9bff14c805d1bcbd2446a4c22e633e8d365cf
+ in order to make every to have something for pushing and
+ now that we don't have such changes it will fail.
+
+ Alternatively we can go for `git commit --allow-empty`, guess better to
+ pollute history of https://github.com/harfbuzz/harfbuzz.github.io however.
+
+ .ci/deploy-docs.sh | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+commit 029ecf326e75071a84609a7510a8d4e58182f3e9
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 4 03:31:15 2020 +0430
+
+ [meson] Fix gen-hb-version.py run
+
+ It gets complicated apparently when executed in the dist process, let's use raw
+ names now that we are operating in the script folder anyway.
+
+ src/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 870304df766f0518898a09cd191c1fb6d94240f7
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 4 03:19:53 2020 +0430
+
+ [meson] Remove amalgam build option
+
+ Fixes #2444
+
+ .circleci/config.yml | 6 ++----
+ meson_options.txt | 2 --
+ src/meson.build | 9 +--------
+ 3 files changed, 3 insertions(+), 14 deletions(-)
+
+commit 5293fdba239846e677ba4ef6139ee6593e60b4f0
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 4 02:38:27 2020 +0430
+
+ [ci] Move docs deployment from autotools to meson
+
+ .ci/deploy-docs.sh | 9 ++-------
+ .github/workflows/linux-ci.yml | 10 ++++++++++
+ .travis.yml | 1 -
+ 3 files changed, 12 insertions(+), 8 deletions(-)
+
+commit b8320340cebace11cd3781fc029afbd50e82ad97
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Wed Jun 3 23:40:57 2020 +0430
+
+ [meson] fix gen script input
+
+ matters more when harfbuzz is a subproject
+
+ src/meson.build | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+commit 50d3f531ee96ffa862bc05429814ba104dddd4a2
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Wed Jun 3 17:59:41 2020 +0430
+
+ Use output names in update-unicode-tables.make
+
+ src/update-unicode-tables.make | 51 +++++++++++++++++++-----------------------
+ 1 file changed, 23 insertions(+), 28 deletions(-)
+
commit fb46a32ed0322d3f617dbfc7b982ff26f47d789c
Author: Ebrahim Byagowi <ebrahim@gnu.org>
Date: Wed Jun 3 12:54:26 2020 +0430
@@ -2591,6 +3634,47 @@ Date: Tue Mar 31 17:46:19 2020 -0700
...ase-minimized-hb-subset-fuzzer-5719588814979072 | Bin 0 -> 1048576 bytes
2 files changed, 18 insertions(+), 7 deletions(-)
+commit bdda2ff6092a3ddce2fe236dfe8cf3176330589b
+Author: Simon Cozens <simon@simon-cozens.org>
+Date: Mon Mar 30 16:40:29 2020 +0100
+
+ More strictly follow noun/verb/identifier format for GPOS/GSUB lookups
+
+ Less generic than the previous commit, but more descriptive and more consistent.
+
+ src/hb-ot-layout.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit bef7ef81da8030628ca99c27a3eb52ab642e6a85
+Author: Simon Cozens <simon@simon-cozens.org>
+Date: Mon Mar 30 16:39:43 2020 +0100
+
+ Reformat kerx/morx instrumentation to 'verb noun identifier'
+
+ src/hb-aat-layout-kerx-table.hh | 4 ++--
+ src/hb-aat-layout-morx-table.hh | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 42aac64030c54e514c4c031b49f646ece2b878fa
+Author: Simon Cozens <simon@simon-cozens.org>
+Date: Mon Mar 30 16:06:30 2020 +0100
+
+ Add table index to lookup messages
+
+ We could say GSUB/GPOS explicitly, but using the index is more general, in case future tables (such as JSTF, Silf) become supported.
+
+ src/hb-ot-layout.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 2cea796b75702d4fd433da2f4733810cf3dd3cfa
+Author: Simon Cozens <simon@simon-cozens.org>
+Date: Mon Mar 30 16:04:17 2020 +0100
+
+ Instrument entering GSUB/GPOS tables
+
+ src/hb-ot-layout.cc | 4 ++++
+ 1 file changed, 4 insertions(+)
+
commit 1b64b73080994ac577a6d936a0109b3c6f5d21de
Author: Khaled Hosny <khaledhosny@eglug.org>
Date: Mon Mar 30 16:49:23 2020 +0200
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am
index 4a2a8c8ebfb..62ce6902667 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am
@@ -28,6 +28,7 @@ EXTRA_DIST = \
subprojects/zlib.wrap \
meson-cc-tests/intel-atomic-primitives-test.c \
meson-cc-tests/solaris-atomic-operations.c \
+ write-tarball-revision.py \
$(NULL)
MAINTAINERCLEANFILES = \
@@ -81,15 +82,4 @@ 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
-$(sha256_file): $(tar_file)
- sha256sum $^ > $@
-$(gpg_file): $(sha256_file)
- @echo "Please enter your GPG password to sign the checksum."
- gpg --armor --sign $^
-
-release-files: $(tar_file) $(sha256_file) $(gpg_file)
-
-include $(top_srcdir)/git.mk
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
index 04fbe13643b..90b2ce72477 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
@@ -1,3 +1,16 @@
+Overview of changes leading to 2.6.8
+Monday, June 22, 2020
+====================================
+- New API to fetch glyph alternates from GSUB table.
+- hb-coretext build fix for macOS < 10.10.
+- Meson build fixes, cmake port removal is postponed but please prepare for
+ it and give us feedback.
+ Autotools is still our main build system however please consider
+ experimenting with meson also for packaging the library.
+- New API:
++hb_ot_layout_lookup_get_glyph_alternates()
+
+
Overview of changes leading to 2.6.7
Wednesday, June 3, 2020
====================================
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md b/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md
index a26350b3609..e28d5d195fd 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md
@@ -37,12 +37,10 @@ HarfBuzz release walk-through checklist:
as well as any REPLACEME changes you made. The commit message is simply the
release number. Eg. "1.4.7"
-8. "make dist" again to get a tarball with your new commit in the ChangeLog. Then
- "make release-files". Enter your GPG password. This creates a sha256 hash
- and signs it. Check the size of the three resulting files.
+8. "make dist" again to get a tarball with your new commit in the ChangeLog.
9. Tag the release and sign it: Eg. "git tag -s 1.4.7 -m 1.4.7". Enter your
- GPG password again.
+ GPG password.
10. Build win32 bundle. See [README.mingw.md](README.mingw.md).
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac
index 3af266b5f9f..df51f6f7466 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.6.7],
+ [2.6.8],
[https://github.com/harfbuzz/harfbuzz/issues/new],
[harfbuzz],
[http://harfbuzz.org/])
@@ -512,6 +512,17 @@ echo
AC_MSG_NOTICE([
+Autotools still is our main and recommended build system for
+building *nix package out of the library yet we encourage
+packagers to experiment with our brand new meson port and
+give us feedback as our effort to migrate and unify all
+the other build systems we have tools to meson.
+
+])
+
+
+AC_MSG_NOTICE([
+
Build configuration:
Unicode callbacks (you want at least one):
@@ -526,7 +537,7 @@ Tools used for command-line utilities:
Cairo: ${have_cairo}
Fontconfig: ${have_fontconfig}
-Additional shapers (the more the merrier):
+Additional shapers:
Graphite2: ${have_graphite2}
Platform shapers (not normally needed):
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/meson.build b/Build/source/libs/harfbuzz/harfbuzz-src/meson.build
index 65d31924236..cd573a69c32 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/meson.build
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/meson.build
@@ -1,9 +1,9 @@
project('harfbuzz', 'c', 'cpp',
meson_version: '>= 0.53.0',
- default_options : ['cpp_std=c++11'],
- version: '2.6.7')
+ default_options: ['cpp_std=c++11'],
+ version: '2.6.8')
-warning('Meson is not our main build system yet, don\'t use it for packaging HarfBuzz for *nix distros for now')
+warning('Meson is not our main build system for building *nix packages yet we encourage packagers to test it and give us feedback about it.')
hb_version_arr = meson.project_version().split('.')
hb_version_major = hb_version_arr[0].to_int()
@@ -36,21 +36,25 @@ if cpp.get_id() == 'msvc'
'/wd4305', # truncating type conversion (e.g. double -> float)
cpp.get_supported_arguments(['/utf-8']), # set the input encoding to utf-8
]
- add_project_arguments(msvc_args, language : ['c', 'cpp'])
+ add_project_arguments(msvc_args, language: ['c', 'cpp'])
# Disable SAFESEH with MSVC for libs that use external deps that are built with MinGW
# noseh_link_args = ['/SAFESEH:NO']
endif
+add_project_link_arguments(cpp.get_supported_link_arguments([
+ '-Bsymbolic-functions'
+]), language: 'c')
+
add_project_arguments(cpp.get_supported_arguments([
'-fno-rtti',
'-fno-exceptions',
'-fno-threadsafe-statics',
'-fvisibility-inlines-hidden', # maybe shouldn't be applied for mingw
-]), language : 'cpp')
+]), language: 'cpp')
if host_machine.cpu_family() == 'arm' and cpp.alignment('struct { char c; }') != 1
if cpp.has_argument('-mstructure-size-boundary=8')
- add_project_arguments('-mstructure-size-boundary=8', language : 'cpp')
+ add_project_arguments('-mstructure-size-boundary=8', language: 'cpp')
endif
endif
@@ -70,82 +74,94 @@ check_funcs = [
['roundf'],
]
-freetype_dep = dependency('freetype2', required: false)
+m_dep = cpp.find_library('m', required: false)
+
+if not get_option('freetype').disabled()
+ freetype_dep = dependency('freetype2', required: false)
-if not freetype_dep.found() and cpp.get_id() == 'msvc'
- if cpp.has_header('ft2build.h')
- freetype_dep = cpp.find_library('freetype', required: false)
+ if not freetype_dep.found() and cpp.get_id() == 'msvc'
+ if cpp.has_header('ft2build.h')
+ freetype_dep = cpp.find_library('freetype', required: false)
+ endif
endif
-endif
-if not freetype_dep.found() and get_option('freetype').enabled()
- freetype_dep = dependency('freetype2', fallback: ['freetype2', 'freetype_dep'])
+ if not freetype_dep.found() and get_option('freetype').enabled()
+ freetype_dep = dependency('freetype2', fallback: ['freetype2', 'freetype_dep'])
+ endif
+else
+ freetype_dep = dependency('', required: false)
endif
glib_dep = dependency('glib-2.0', required: get_option('glib'),
fallback: ['glib', 'libglib_dep'])
gobject_dep = dependency('gobject-2.0', required: get_option('gobject'),
fallback: ['glib', 'libgobject_dep'])
-cairo_dep = dependency('cairo', required: false)
fontconfig_dep = dependency('fontconfig', required: get_option('fontconfig'),
fallback: ['fontconfig', 'fontconfig_dep'])
graphite2_dep = dependency('graphite2', required: get_option('graphite'))
-icu_dep = dependency('icu-uc', required: false)
-m_dep = cpp.find_library('m', required: false)
-if not icu_dep.found() and get_option('icu').enabled()
- icu_dep = dependency('icu-uc', required: cpp.get_id() != 'msvc')
-endif
+if not get_option('icu').disabled()
+ icu_dep = dependency('icu-uc', required: false)
+
+ if not icu_dep.found() and get_option('icu').enabled()
+ icu_dep = dependency('icu-uc', required: cpp.get_id() != 'msvc')
+ endif
-if not icu_dep.found() and cpp.get_id() == 'msvc'
- if cpp.has_header('unicode/uchar.h') and \
- cpp.has_header('unicode/unorm2.h') and \
- cpp.has_header('unicode/ustring.h') and \
- cpp.has_header('unicode/utf16.h') and \
- cpp.has_header('unicode/uversion.h') and \
- cpp.has_header('unicode/uscript.h')
- if get_option('buildtype') == 'debug'
- icu_dep = cpp.find_library('icuucd', required: get_option('icu'))
+ if not icu_dep.found() and cpp.get_id() == 'msvc'
+ if cpp.has_header('unicode/uchar.h') and \
+ cpp.has_header('unicode/unorm2.h') and \
+ cpp.has_header('unicode/ustring.h') and \
+ cpp.has_header('unicode/utf16.h') and \
+ cpp.has_header('unicode/uversion.h') and \
+ cpp.has_header('unicode/uscript.h')
+ if get_option('buildtype') == 'debug'
+ icu_dep = cpp.find_library('icuucd', required: get_option('icu'))
+ else
+ icu_dep = cpp.find_library('icuuc', required: get_option('icu'))
+ endif
else
- icu_dep = cpp.find_library('icuuc', required: get_option('icu'))
- endif
- else
- if get_option('icu').enabled()
- error('ICU headers and libraries must be present to build ICU support')
+ if get_option('icu').enabled()
+ error('ICU headers and libraries must be present to build ICU support')
+ endif
endif
endif
+else
+ icu_dep = dependency('', required: false)
endif
-if not cairo_dep.found() and cpp.get_id() == 'msvc'
- if cpp.has_header('cairo.h')
- cairo_dep = cpp.find_library('cairo')
+if not get_option('cairo').disabled()
+ cairo_dep = dependency('cairo', required: false)
+
+ if not cairo_dep.found() and cpp.get_id() == 'msvc'
+ if cpp.has_header('cairo.h')
+ cairo_dep = cpp.find_library('cairo')
+ endif
endif
-endif
-if not cairo_dep.found() and get_option('cairo').enabled()
- cairo_dep = dependency('cairo', fallback: ['cairo', 'libcairo_dep'])
-endif
+ if not cairo_dep.found() and get_option('cairo').enabled()
+ cairo_dep = dependency('cairo', fallback: ['cairo', 'libcairo_dep'])
+ endif
-# Ensure that cairo-ft is fetched from the same library as cairo itself
-if cairo_dep.found()
- if cairo_dep.type_name() == 'pkgconfig'
- cairo_ft_dep = dependency('cairo-ft', required: get_option('cairo'))
- else
- if cpp.has_header('cairo-ft.h') and \
- cpp.has_function('cairo_ft_font_face_create_for_ft_face', dependencies: cairo_dep)
- cairo_ft_dep = cairo_dep
+ # Ensure that cairo-ft is fetched from the same library as cairo itself
+ if cairo_dep.found()
+ if cairo_dep.type_name() == 'pkgconfig'
+ cairo_ft_dep = dependency('cairo-ft', required: get_option('cairo'))
else
- # Not-found dependency
- cairo_ft_dep = dependency('', required: false)
+ if cpp.has_header('cairo-ft.h') and \
+ cpp.has_function('cairo_ft_font_face_create_for_ft_face', dependencies: cairo_dep)
+ cairo_ft_dep = cairo_dep
+ else
+ cairo_ft_dep = dependency('', required: false)
+ endif
endif
+ else
+ cairo_ft_dep = dependency('', required: false)
endif
else
- # Not-found dependency
+ cairo_dep = dependency('', required: false)
cairo_ft_dep = dependency('', required: false)
endif
-deps = []
-
conf = configuration_data()
incconfig = include_directories('.')
@@ -157,33 +173,24 @@ warn_cflags = [
cpp_args = cpp.get_supported_arguments(warn_cflags)
-if m_dep.found()
- deps += [m_dep]
-endif
-
if glib_dep.found()
conf.set('HAVE_GLIB', 1)
- deps += [glib_dep]
endif
if gobject_dep.found()
conf.set('HAVE_GOBJECT', 1)
- deps += [gobject_dep]
endif
if cairo_dep.found()
conf.set('HAVE_CAIRO', 1)
- deps += [cairo_dep]
endif
if cairo_ft_dep.found()
conf.set('HAVE_CAIRO_FT', 1)
- deps += [cairo_ft_dep]
endif
if graphite2_dep.found()
conf.set('HAVE_GRAPHITE2', 1)
- deps += [graphite2_dep]
endif
if icu_dep.found()
@@ -200,7 +207,6 @@ endif
if freetype_dep.found()
conf.set('HAVE_FREETYPE', 1)
- deps += [freetype_dep]
check_freetype_funcs = [
['FT_Get_Var_Blend_Coordinates', {'deps': freetype_dep}],
['FT_Set_Var_Blend_Coordinates', {'deps': freetype_dep}],
@@ -219,15 +225,15 @@ endif
if fontconfig_dep.found()
conf.set('HAVE_FONTCONFIG', 1)
- deps += [fontconfig_dep]
endif
+gdi_uniscribe_deps = []
# GDI (uniscribe) (windows)
if host_machine.system() == 'windows' and not get_option('gdi').disabled()
# TODO: make nicer once we have https://github.com/mesonbuild/meson/issues/3940
if cpp.has_header('usp10.h') and cpp.has_header('windows.h')
foreach usplib : ['usp10', 'gdi32', 'rpcrt4']
- deps += [cpp.find_library(usplib, required: true)]
+ gdi_uniscribe_deps += cpp.find_library(usplib, required: true)
endforeach
conf.set('HAVE_UNISCRIBE', 1)
conf.set('HAVE_GDI', 1)
@@ -237,9 +243,10 @@ if host_machine.system() == 'windows' and not get_option('gdi').disabled()
endif
# DirectWrite (windows)
+directwrite_dep = dependency('', required: false)
if host_machine.system() == 'windows' and not get_option('directwrite').disabled()
if cpp.has_header('dwrite_1.h')
- deps += [cpp.find_library('dwrite', required: true)]
+ directwrite_dep = cpp.find_library('dwrite', required: true)
conf.set('HAVE_DIRECTWRITE', 1)
elif get_option('directwrite').enabled()
error('DirectWrite was enabled explicitly, but required header is missing.')
@@ -247,19 +254,20 @@ if host_machine.system() == 'windows' and not get_option('directwrite').disabled
endif
# CoreText (macOS) - FIXME: untested
+coretext_deps = []
if host_machine.system() == 'darwin' and not get_option('coretext').disabled()
- app_services_dep = dependency('appleframeworks', modules : ['ApplicationServices'], required: false)
+ app_services_dep = dependency('appleframeworks', modules: ['ApplicationServices'], required: false)
if cpp.has_type('CTFontRef', prefix: '#include <ApplicationServices/ApplicationServices.h>', dependencies: app_services_dep)
- deps += [app_services_dep]
+ coretext_deps += [app_services_dep]
conf.set('HAVE_CORETEXT', 1)
# On iOS CoreText and CoreGraphics are stand-alone frameworks
# Check for a different symbol to avoid getting cached result
else
- coretext_dep = dependency('appleframeworks', modules : ['CoreText'], required: false)
- coregraphics_dep = dependency('appleframeworks', modules : ['CoreGraphics'], required: false)
- corefoundation_dep = dependency('appleframeworks', modules : ['CoreFoundation'], required: false)
+ coretext_dep = dependency('appleframeworks', modules: ['CoreText'], required: false)
+ coregraphics_dep = dependency('appleframeworks', modules: ['CoreGraphics'], required: false)
+ corefoundation_dep = dependency('appleframeworks', modules: ['CoreFoundation'], required: false)
if cpp.has_type('CTRunRef', prefix: '#include <CoreText/CoreText.h>', dependencies: [coretext_dep, coregraphics_dep, corefoundation_dep])
- deps += [coretext_dep, coregraphics_dep, corefoundation_dep]
+ coretext_deps += [coretext_dep, coregraphics_dep, corefoundation_dep]
conf.set('HAVE_CORETEXT', 1)
elif get_option('coretext').enabled()
error('CoreText was enabled explicitly, but required headers or frameworks are missing.')
@@ -268,12 +276,12 @@ if host_machine.system() == 'darwin' and not get_option('coretext').disabled()
endif
# threads
+thread_dep = dependency('', required: false)
if host_machine.system() != 'windows'
thread_dep = dependency('threads', required: false)
if thread_dep.found()
conf.set('HAVE_PTHREAD', 1)
- deps += [thread_dep]
else
check_headers += ['sched.h']
check_funcs += ['sched_yield', {'link_with': 'rt'}]
@@ -293,6 +301,7 @@ foreach check : check_headers
endif
endforeach
+harfbuzz_extra_deps = []
foreach check : check_funcs
name = check[0]
opts = check.get(1, {})
@@ -323,7 +332,7 @@ foreach check : check_funcs
endif
if found
- deps += extra_deps
+ harfbuzz_extra_deps += extra_deps
conf.set('HAVE_@0@'.format(name.to_upper()), 1)
endif
endforeach
@@ -347,6 +356,10 @@ if not get_option('gtk_doc').disabled()
subdir('docs')
endif
+if not meson.is_subproject()
+ meson.add_dist_script('write-tarball-revision.py')
+endif
+
configure_file(output: 'config.h', configuration: conf)
summary({'prefix': get_option('prefix'),
@@ -365,7 +378,7 @@ summary({'Cairo': conf.get('HAVE_CAIRO', 0) == 1,
'Fontconfig': conf.get('HAVE_FONTCONFIG', 0) == 1,
}, bool_yn: true, section: 'Tools used for command-line utilities')
summary({'Graphite2': conf.get('HAVE_GRAPHITE2', 0) == 1,
- }, bool_yn: true, section: 'Additional shapers (the more the merrier)')
+ }, bool_yn: true, section: 'Additional shapers')
summary({'CoreText': conf.get('HAVE_CORETEXT', 0) == 1,
'DirectWrite': conf.get('HAVE_DIRECTWRITE', 0) == 1,
'GDI': conf.get('HAVE_GDI', 0) == 1,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt b/Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt
index cbd5c5020d4..b9102a80df5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt
@@ -1,7 +1,7 @@
# HarfBuzz feature options
option('glib', type: 'feature', value: 'auto',
description: 'Enable GLib unicode functions')
-option('gobject', type: 'feature', value: 'disabled',
+option('gobject', type: 'feature', value: 'auto',
description: 'Enable GObject bindings')
option('cairo', type: 'feature', value: 'auto',
description: 'Use Cairo graphics library')
@@ -21,18 +21,14 @@ option('coretext', type: 'feature', value: 'disabled',
description: 'Enable CoreText shaper backend on macOS')
# Common feature options
-option('tests', type : 'feature', value : 'enabled', yield : true,
+option('tests', type: 'feature', value: 'enabled', yield: true,
description: 'Enable or disable unit tests')
-option('introspection', type : 'feature', value : 'disabled', yield : true,
- description : 'Generate gobject-introspection bindings (.gir/.typelib files)')
-option('gtk_doc', type : 'feature', value : 'auto', yield : true,
- description : 'Generate documentation with gtk-doc')
+option('introspection', type: 'feature', value: 'auto', yield: true,
+ description: 'Generate gobject-introspection bindings (.gir/.typelib files)')
+option('gtk_doc', type: 'feature', value: 'auto', yield: true,
+ description: 'Generate documentation with gtk-doc')
option('icu_builtin', type: 'boolean', value: false,
description: 'Don\'t separate ICU support as harfbuzz-icu module')
-option('with_libstdcxx', type: 'boolean', value: false,
- description: 'Allow linking with libstdc++')
option('experimental_api', type: 'boolean', value: false,
description: 'Enable experimental APIs')
-option('amalgam', type: 'boolean', value: false,
- description : 'Enable amalgam builds')
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources b/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources
index 81b5cde7a49..b3d580db85b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources
@@ -20,6 +20,7 @@ HB_BASE_sources = \
hb-algs.hh \
hb-array.hh \
hb-atomic.hh \
+ hb-bimap.hh \
hb-blob.cc \
hb-blob.hh \
hb-buffer-serialize.cc \
@@ -47,7 +48,6 @@ HB_BASE_sources = \
hb-machinery.hh \
hb-map.cc \
hb-map.hh \
- hb-bimap.hh \
hb-meta.hh \
hb-mutex.hh \
hb-null.hh \
@@ -57,9 +57,9 @@ HB_BASE_sources = \
hb-open-file.hh \
hb-open-type.hh \
hb-ot-cff-common.hh \
+ hb-ot-cff1-std-str.hh \
hb-ot-cff1-table.cc \
hb-ot-cff1-table.hh \
- hb-ot-cff1-std-str.hh \
hb-ot-cff2-table.cc \
hb-ot-cff2-table.hh \
hb-ot-cmap-table.hh \
@@ -69,9 +69,9 @@ HB_BASE_sources = \
hb-ot-color-sbix-table.hh \
hb-ot-color-svg-table.hh \
hb-ot-color.cc \
+ hb-ot-face-table-list.hh \
hb-ot-face.cc \
hb-ot-face.hh \
- hb-ot-face-table-list.hh \
hb-ot-font.cc \
hb-ot-gasp-table.hh \
hb-ot-glyf-table.hh \
@@ -159,6 +159,7 @@ HB_BASE_sources = \
hb-shaper.hh \
hb-static.cc \
hb-string-array.hh \
+ hb-style.cc \
hb-ucd-table.hh \
hb-ucd.cc \
hb-unicode-emoji-table.hh \
@@ -213,6 +214,7 @@ HB_BASE_headers = \
hb-set.h \
hb-shape-plan.h \
hb-shape.h \
+ hb-style.h \
hb-unicode.h \
hb-version.h \
hb.h \
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-def.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-def.py
index b6b8b20c597..822a9448d2a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-def.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-def.py
@@ -36,9 +36,8 @@ hb_draw_funcs_set_cubic_to_func
hb_draw_funcs_set_line_to_func
hb_draw_funcs_set_move_to_func
hb_draw_funcs_set_quadratic_to_func
-hb_font_get_var_coords_design
-hb_ot_layout_closure_lookups
-hb_ot_layout_closure_features""".splitlines ()
+hb_style_get_value
+hb_font_get_var_coords_design""".splitlines ()
symbols = [x for x in symbols if x not in experimental_symbols]
symbols = "\n".join (symbols)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc
index 6a07a9e0db2..226d013d2d5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc
@@ -43,6 +43,7 @@
#include "hb-shape.cc"
#include "hb-shaper.cc"
#include "hb-static.cc"
+#include "hb-style.cc"
#include "hb-ucd.cc"
#include "hb-unicode.cc"
#include "hb-glib.cc"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh
index f186917fc62..75d523f5fcd 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh
@@ -820,7 +820,6 @@ struct hb_aat_apply_context_t :
/* Unused. For debug tracing only. */
unsigned int lookup_index;
- unsigned int debug_depth;
HB_INTERNAL hb_aat_apply_context_t (const hb_ot_shape_plan_t *plan_,
hb_font_t *font_,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh
index 6ad32b30002..fa91874c726 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh
@@ -887,7 +887,7 @@ struct KerxTable
reverse = bool (st->u.header.coverage & st->u.header.Backwards) !=
HB_DIRECTION_IS_BACKWARD (c->buffer->props.direction);
- if (!c->buffer->message (c->font, "start %c%c%c%c subtable %d", HB_UNTAG (thiz()->tableTag), c->lookup_index))
+ if (!c->buffer->message (c->font, "start subtable %d", c->lookup_index))
goto skip;
if (!seenCrossStream &&
@@ -919,7 +919,7 @@ struct KerxTable
if (reverse)
c->buffer->reverse ();
- (void) c->buffer->message (c->font, "end %c%c%c%c subtable %d", HB_UNTAG (thiz()->tableTag), c->lookup_index);
+ (void) c->buffer->message (c->font, "end subtable %d", c->lookup_index);
skip:
st = &StructAfter<SubTable> (*st);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-lcar-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-lcar-table.hh
index 90cfd929201..25458a1a044 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-lcar-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-lcar-table.hh
@@ -53,9 +53,10 @@ struct lcarFormat0
const LigCaretClassEntry& array = entry_offset ? base+*entry_offset : Null (LigCaretClassEntry);
if (caret_count)
{
- hb_array_t<const HBINT16> arr = array.sub_array (start_offset, caret_count);
- for (unsigned int i = 0; i < arr.length; ++i)
- caret_array[i] = font->em_scale_dir (arr[i], direction);
+ + array.sub_array (start_offset, caret_count)
+ | hb_map ([&] (int v) { return font->em_scale_dir (v, direction); })
+ | hb_sink (hb_array (caret_array, *caret_count))
+ ;
}
return array.len;
}
@@ -88,13 +89,15 @@ struct lcarFormat1
const LigCaretClassEntry& array = entry_offset ? base+*entry_offset : Null (LigCaretClassEntry);
if (caret_count)
{
- hb_array_t<const HBINT16> arr = array.sub_array (start_offset, caret_count);
- for (unsigned int i = 0; i < arr.length; ++i)
- {
- hb_position_t x = 0, y = 0;
- font->get_glyph_contour_point_for_origin (glyph, arr[i], direction, &x, &y);
- caret_array[i] = HB_DIRECTION_IS_HORIZONTAL (direction) ? x : y;
- }
+ + array.sub_array (start_offset, caret_count)
+ | hb_map ([&] (unsigned int point_index)
+ {
+ hb_position_t x = 0, y = 0;
+ font->get_glyph_contour_point_for_origin (glyph, point_index, direction, &x, &y);
+ return HB_DIRECTION_IS_HORIZONTAL (direction) ? x : y;
+ })
+ | hb_sink (hb_array (caret_array, *caret_count))
+ ;
}
return array.len;
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh
index 9d04c7102ef..2342f61d827 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh
@@ -1017,7 +1017,7 @@ struct Chain
bool (subtable->get_coverage () & ChainSubtable<Types>::Backwards) !=
HB_DIRECTION_IS_BACKWARD (c->buffer->props.direction);
- if (!c->buffer->message (c->font, "start chain subtable %d", c->lookup_index))
+ if (!c->buffer->message (c->font, "start chainsubtable %d", c->lookup_index))
goto skip;
if (reverse)
@@ -1028,7 +1028,7 @@ struct Chain
if (reverse)
c->buffer->reverse ();
- (void) c->buffer->message (c->font, "end chain subtable %d", c->lookup_index);
+ (void) c->buffer->message (c->font, "end chainsubtable %d", c->lookup_index);
if (unlikely (!c->buffer->successful)) return;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.cc
index 49c908fd16f..aa753cb861a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.cc
@@ -56,8 +56,7 @@ AAT::hb_aat_apply_context_t::hb_aat_apply_context_t (const hb_ot_shape_plan_t *p
buffer (buffer_),
sanitizer (),
ankr_table (&Null (AAT::ankr)),
- lookup_index (0),
- debug_depth (0)
+ lookup_index (0)
{
sanitizer.init (blob);
sanitizer.set_num_glyphs (face->get_num_glyphs ());
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh
index 07659fad153..fc8d424bfb0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh
@@ -76,7 +76,7 @@
#define HB_NO_SETLOCALE
#define HB_NO_OT_FONT_GLYPH_NAMES
#define HB_NO_OT_SHAPE_FRACTIONS
-#define HB_NO_STAT
+#define HB_NO_STYLE
#define HB_NO_SUBSET_LAYOUT
#define HB_NO_VAR
#endif
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
index 76e00fd5ce3..7b6b2bd5ef8 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
@@ -514,7 +514,7 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan,
{
active_feature_t feature;
-#if MAC_OS_X_VERSION_MIN_REQUIRED < 1010
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 101000
const hb_aat_feature_mapping_t * mapping = hb_aat_layout_find_feature_mapping (features[i].tag);
if (!mapping)
continue;
@@ -573,7 +573,7 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan,
/* active_features.qsort (); */
for (unsigned int j = 0; j < active_features.length; j++)
{
-#if MAC_OS_X_VERSION_MIN_REQUIRED < 1010
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 101000
CFStringRef keys[] = {
kCTFontFeatureTypeIdentifierKey,
kCTFontFeatureSelectorIdentifierKey
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-debug.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-debug.hh
index 5c13e5d1aab..ec3a1ff2111 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-debug.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-debug.hh
@@ -373,10 +373,6 @@ struct hb_no_trace_t {
#define HB_DEBUG_FT (HB_DEBUG+0)
#endif
-#ifndef HB_DEBUG_GET_COVERAGE
-#define HB_DEBUG_GET_COVERAGE (HB_DEBUG+0)
-#endif
-
#ifndef HB_DEBUG_OBJECT
#define HB_DEBUG_OBJECT (HB_DEBUG+0)
#endif
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-dispatch.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-dispatch.hh
index 1ce3fac9364..7eace86e546 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-dispatch.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-dispatch.hh
@@ -35,14 +35,16 @@
* Dispatch
*/
-template <typename Context, typename Return, unsigned int MaxDebugDepth>
+template <typename Context, typename Return=hb_empty_t, unsigned int MaxDebugDepth=0>
struct hb_dispatch_context_t
{
+ hb_dispatch_context_t () : debug_depth (0) {}
private:
/* https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern */
const Context* thiz () const { return static_cast<const Context *> (this); }
Context* thiz () { return static_cast< Context *> (this); }
public:
+ const char *get_name () { return "UNKNOWN"; }
static constexpr unsigned max_debug_depth = MaxDebugDepth;
typedef Return return_t;
template <typename T, typename F>
@@ -52,6 +54,7 @@ struct hb_dispatch_context_t
{ return obj.dispatch (thiz (), hb_forward<Ts> (ds)...); }
static return_t no_dispatch_return_value () { return Context::default_return_value (); }
static bool stop_sublookup_iteration (const return_t r HB_UNUSED) { return false; }
+ unsigned debug_depth;
};
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh
index b7bf7fe59d1..1635b4a6257 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh
@@ -117,9 +117,8 @@ struct hb_hashmap_t
successful = false;
return false;
}
- + hb_iter (new_items, new_size)
- | hb_apply (&item_t::clear)
- ;
+ for (auto &_ : hb_iter (new_items, new_size))
+ _.clear ();
unsigned int old_size = mask + 1;
item_t *old_items = items;
@@ -175,9 +174,8 @@ struct hb_hashmap_t
if (unlikely (hb_object_is_immutable (this)))
return;
if (items)
- + hb_iter (items, mask + 1)
- | hb_apply (&item_t::clear)
- ;
+ for (auto &_ : hb_iter (items, mask + 1))
+ _.clear ();
population = occupancy = 0;
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh
index 2f01ce91e98..ac13dd23c38 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh
@@ -91,15 +91,10 @@ typedef struct OffsetTable
{
if (table_count)
{
- if (start_offset >= tables.len)
- *table_count = 0;
- else
- *table_count = hb_min (*table_count, tables.len - start_offset);
-
- const TableRecord *sub_tables = tables.arrayZ + start_offset;
- unsigned int count = *table_count;
- for (unsigned int i = 0; i < count; i++)
- table_tags[i] = sub_tables[i].tag;
+ + tables.sub_array (start_offset, table_count)
+ | hb_map (&TableRecord::tag)
+ | hb_sink (hb_array (table_tags, *table_count))
+ ;
}
return tables.len;
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cpal-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cpal-table.hh
index ce9f76e45e9..fa7d3207be6 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cpal-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cpal-table.hh
@@ -142,12 +142,9 @@ struct CPAL
numColors);
if (color_count)
{
- hb_array_t<const BGRAColor> segment_colors = palette_colors.sub_array (start_offset, *color_count);
- /* Always return numColors colors per palette even if it has out-of-bounds start index. */
- unsigned int count = hb_min ((unsigned) hb_max ((int) (numColors - start_offset), 0), *color_count);
- *color_count = count;
- for (unsigned int i = 0; i < count; i++)
- colors[i] = segment_colors[i]; /* Bound-checked read. */
+ + palette_colors.sub_array (start_offset, color_count)
+ | hb_sink (hb_array (colors, *color_count))
+ ;
}
return numColors;
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-face-table-list.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-face-table-list.hh
index 6fa9baf1356..5519d4fdf87 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-face-table-list.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-face-table-list.hh
@@ -53,13 +53,14 @@ HB_OT_ACCELERATOR (OT, cmap)
HB_OT_TABLE (OT, hhea)
HB_OT_ACCELERATOR (OT, hmtx)
HB_OT_TABLE (OT, OS2)
-#if !defined(HB_NO_OT_FONT_GLYPH_NAMES) || !defined(HB_NO_METRICS)
+#if !defined(HB_NO_OT_FONT_GLYPH_NAMES) || !defined(HB_NO_METRICS) || !defined(HB_NO_STYLE)
HB_OT_ACCELERATOR (OT, post)
#endif
#ifndef HB_NO_NAME
HB_OT_ACCELERATOR (OT, name)
#endif
-#ifndef HB_NO_STAT
+#ifndef HB_NO_STYLE
+HB_OT_TABLE (AAT, fdsc)
HB_OT_TABLE (OT, STAT)
#endif
#ifndef HB_NO_META
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hmtx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hmtx-table.hh
index 413774284f1..d06c0fa4a46 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hmtx-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hmtx-table.hh
@@ -101,25 +101,23 @@ struct hmtxvmtx
unsigned num_advances)
{
unsigned idx = 0;
- + it
- | hb_apply ([c, &idx, num_advances] (const hb_item_type<Iterator>& _)
- {
- if (idx < num_advances)
- {
- LongMetric lm;
- lm.advance = _.first;
- lm.sb = _.second;
- if (unlikely (!c->embed<LongMetric> (&lm))) return;
- }
- else
- {
- FWORD *sb = c->allocate_size<FWORD> (FWORD::static_size);
- if (unlikely (!sb)) return;
- *sb = _.second;
- }
- idx++;
- })
- ;
+ for (auto _ : it)
+ {
+ if (idx < num_advances)
+ {
+ LongMetric lm;
+ lm.advance = _.first;
+ lm.sb = _.second;
+ if (unlikely (!c->embed<LongMetric> (&lm))) return;
+ }
+ else
+ {
+ FWORD *sb = c->allocate_size<FWORD> (FWORD::static_size);
+ if (unlikely (!sb)) return;
+ *sb = _.second;
+ }
+ idx++;
+ }
}
bool subset (hb_subset_context_t *c) const
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 fdd1f31c77f..30571fb8084 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
@@ -126,7 +126,6 @@ struct hb_subset_layout_context_t :
const hb_tag_t table_tag;
const hb_map_t *lookup_index_map;
const hb_map_t *feature_index_map;
- unsigned debug_depth;
hb_subset_layout_context_t (hb_subset_context_t *c_,
hb_tag_t tag_,
@@ -136,7 +135,6 @@ struct hb_subset_layout_context_t :
table_tag (tag_),
lookup_index_map (lookup_map_),
feature_index_map (feature_map_),
- debug_depth (0),
script_count (0),
langsys_count (0),
feature_index_count (0),
@@ -151,9 +149,8 @@ struct hb_subset_layout_context_t :
};
struct hb_collect_variation_indices_context_t :
- hb_dispatch_context_t<hb_collect_variation_indices_context_t, hb_empty_t, 0>
+ hb_dispatch_context_t<hb_collect_variation_indices_context_t>
{
- const char *get_name () { return "CLOSURE_LAYOUT_VARIATION_IDXES"; }
template <typename T>
return_t dispatch (const T &obj) { obj.collect_variation_indices (this); return hb_empty_t (); }
static return_t default_return_value () { return hb_empty_t (); }
@@ -161,15 +158,13 @@ struct hb_collect_variation_indices_context_t :
hb_set_t *layout_variation_indices;
const hb_set_t *glyph_set;
const hb_map_t *gpos_lookups;
- unsigned int debug_depth;
hb_collect_variation_indices_context_t (hb_set_t *layout_variation_indices_,
const hb_set_t *glyph_set_,
const hb_map_t *gpos_lookups_) :
layout_variation_indices (layout_variation_indices_),
glyph_set (glyph_set_),
- gpos_lookups (gpos_lookups_),
- debug_depth (0) {}
+ gpos_lookups (gpos_lookups_) {}
};
template<typename OutputArray>
@@ -350,11 +345,12 @@ struct RecordArrayOf : SortedArrayOf<Record<Type>>
unsigned int *record_count /* IN/OUT */,
hb_tag_t *record_tags /* OUT */) const
{
- if (record_count) {
- const Record<Type> *arr = this->sub_array (start_offset, record_count);
- unsigned int count = *record_count;
- for (unsigned int i = 0; i < count; i++)
- record_tags[i] = arr[i].tag;
+ if (record_count)
+ {
+ + this->sub_array (start_offset, record_count)
+ | hb_map (&Record<Type>::tag)
+ | hb_sink (hb_array (record_tags, *record_count))
+ ;
}
return this->len;
}
@@ -467,11 +463,11 @@ struct IndexArray : ArrayOf<Index>
unsigned int *_count /* IN/OUT */,
unsigned int *_indexes /* OUT */) const
{
- if (_count) {
- const HBUINT16 *arr = this->sub_array (start_offset, _count);
- unsigned int count = *_count;
- for (unsigned int i = 0; i < count; i++)
- _indexes[i] = arr[i];
+ if (_count)
+ {
+ + this->sub_array (start_offset, _count)
+ | hb_sink (hb_array (_indexes, *_count))
+ ;
}
return this->len;
}
@@ -809,11 +805,16 @@ struct FeatureParamsStylisticSet
/* https://docs.microsoft.com/en-us/typography/opentype/spec/features_ae#cv01-cv99 */
struct FeatureParamsCharacterVariants
{
- bool sanitize (hb_sanitize_context_t *c) const
+ unsigned
+ get_characters (unsigned start_offset, unsigned *char_count, hb_codepoint_t *chars) const
{
- TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) &&
- characters.sanitize (c));
+ if (char_count)
+ {
+ + characters.sub_array (start_offset, char_count)
+ | hb_sink (hb_array (chars, *char_count))
+ ;
+ }
+ return characters.len;
}
unsigned get_size () const
@@ -825,6 +826,13 @@ struct FeatureParamsCharacterVariants
return_trace ((bool) c->serializer->embed (*this));
}
+ bool sanitize (hb_sanitize_context_t *c) const
+ {
+ TRACE_SANITIZE (this);
+ return_trace (c->check_struct (this) &&
+ characters.sanitize (c));
+ }
+
HBUINT16 format; /* Format number is set to 0. */
NameID featUILableNameID; /* The ‘name’ table name ID that
* specifies a string (or strings,
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 02f4ab0206d..e76ecf9a829 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
@@ -73,10 +73,9 @@ struct AttachList
if (point_count)
{
- hb_array_t<const HBUINT16> array = points.sub_array (start_offset, point_count);
- unsigned int count = array.length;
- for (unsigned int i = 0; i < count; i++)
- point_array[i] = array[i];
+ + points.sub_array (start_offset, point_count)
+ | hb_sink (hb_array (point_array, *point_count))
+ ;
}
return points.len;
@@ -583,7 +582,7 @@ struct GDEF
}
}
- HB_INTERNAL bool is_blacklisted (hb_blob_t *blob,
+ HB_INTERNAL bool is_blocklisted (hb_blob_t *blob,
hb_face_t *face) const;
struct accelerator_t
@@ -591,7 +590,7 @@ struct GDEF
void init (hb_face_t *face)
{
this->table = hb_sanitize_context_t ().reference_table<GDEF> (face);
- if (unlikely (this->table->is_blacklisted (this->table.get_blob (), face)))
+ if (unlikely (this->table->is_blocklisted (this->table.get_blob (), face)))
{
hb_blob_destroy (this->table.get_blob ());
this->table = hb_blob_get_empty ();
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh
index fef88af3989..3dd09995652 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh
@@ -1692,6 +1692,12 @@ struct CursivePosFormat1
else
pos[child].x_offset = x_offset;
+ /* If parent was attached to child, break them free.
+ * https://github.com/harfbuzz/harfbuzz/issues/2469
+ */
+ if (unlikely (pos[parent].attach_chain() == -pos[child].attach_chain()))
+ pos[parent].attach_chain() = 0;
+
buffer->idx++;
return_trace (true);
}
@@ -2559,7 +2565,7 @@ struct GPOS : GSUBGPOS
bool sanitize (hb_sanitize_context_t *c) const
{ return GSUBGPOS::sanitize<PosLookup> (c); }
- HB_INTERNAL bool is_blacklisted (hb_blob_t *blob,
+ HB_INTERNAL bool is_blocklisted (hb_blob_t *blob,
hb_face_t *face) const;
void collect_variation_indices (hb_collect_variation_indices_context_t *c) const
@@ -2572,6 +2578,11 @@ struct GPOS : GSUBGPOS
}
}
+ void closure_lookups (hb_face_t *face,
+ const hb_set_t *glyphs,
+ hb_set_t *lookup_indexes /* IN/OUT */) const
+ { GSUBGPOS::closure_lookups<PosLookup> (face, glyphs, lookup_indexes); }
+
typedef GSUBGPOS::accelerator_t<GPOS> accelerator_t;
};
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 01a5af125e4..4a9d38a5b28 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
@@ -556,6 +556,20 @@ struct AlternateSet
return_trace (true);
}
+ unsigned
+ get_alternates (unsigned start_offset,
+ unsigned *alternate_count /* IN/OUT. May be NULL. */,
+ hb_codepoint_t *alternate_glyphs /* OUT. May be NULL. */) const
+ {
+ if (alternates.len && alternate_count)
+ {
+ + alternates.sub_array (start_offset, alternate_count)
+ | hb_sink (hb_array (alternate_glyphs, *alternate_count))
+ ;
+ }
+ return alternates.len;
+ }
+
template <typename Iterator,
hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
bool serialize (hb_serialize_context_t *c,
@@ -628,6 +642,14 @@ struct AlternateSubstFormat1
bool would_apply (hb_would_apply_context_t *c) const
{ return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
+ unsigned
+ get_glyph_alternates (hb_codepoint_t gid,
+ unsigned start_offset,
+ unsigned *alternate_count /* IN/OUT. May be NULL. */,
+ hb_codepoint_t *alternate_glyphs /* OUT. May be NULL. */) const
+ { return (this+alternateSet[(this+coverage).get_coverage (gid)])
+ .get_alternates (start_offset, alternate_count, alternate_glyphs); }
+
bool apply (hb_ot_apply_context_t *c) const
{
TRACE_APPLY (this);
@@ -1205,7 +1227,9 @@ struct ReverseChainSingleSubstFormat1
const OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage>> (backtrack);
const ArrayOf<HBGlyphID> &substitute = StructAfter<ArrayOf<HBGlyphID>> (lookahead);
- unsigned int start_index = 0, end_index = 0;
+ if (unlikely (index >= substitute.len)) return_trace (false);
+
+ unsigned int start_index = 0, end_index = 0;
if (match_backtrack (c,
backtrack.len, (HBUINT16 *) backtrack.arrayZ,
match_coverage, this,
@@ -1547,9 +1571,14 @@ struct GSUB : GSUBGPOS
bool sanitize (hb_sanitize_context_t *c) const
{ return GSUBGPOS::sanitize<SubstLookup> (c); }
- HB_INTERNAL bool is_blacklisted (hb_blob_t *blob,
+ HB_INTERNAL bool is_blocklisted (hb_blob_t *blob,
hb_face_t *face) const;
+ void closure_lookups (hb_face_t *face,
+ const hb_set_t *glyphs,
+ hb_set_t *lookup_indexes /* IN/OUT */) const
+ { GSUBGPOS::closure_lookups<SubstLookup> (face, glyphs, lookup_indexes); }
+
typedef GSUBGPOS::accelerator_t<GSUB> accelerator_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 2c063120647..8b0e4323cec 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
@@ -42,26 +42,22 @@ namespace OT {
struct hb_intersects_context_t :
- hb_dispatch_context_t<hb_intersects_context_t, bool, 0>
+ hb_dispatch_context_t<hb_intersects_context_t, bool>
{
- const char *get_name () { return "INTERSECTS"; }
template <typename T>
return_t dispatch (const T &obj) { return obj.intersects (this->glyphs); }
static return_t default_return_value () { return false; }
bool stop_sublookup_iteration (return_t r) const { return r; }
const hb_set_t *glyphs;
- unsigned int debug_depth;
hb_intersects_context_t (const hb_set_t *glyphs_) :
- glyphs (glyphs_),
- debug_depth (0) {}
+ glyphs (glyphs_) {}
};
struct hb_closure_context_t :
- hb_dispatch_context_t<hb_closure_context_t, hb_empty_t, 0>
+ hb_dispatch_context_t<hb_closure_context_t>
{
- const char *get_name () { return "CLOSURE"; }
typedef return_t (*recurse_func_t) (hb_closure_context_t *c, unsigned int lookup_index);
template <typename T>
return_t dispatch (const T &obj) { obj.closure (this); return hb_empty_t (); }
@@ -102,7 +98,6 @@ struct hb_closure_context_t :
hb_set_t output[1];
recurse_func_t recurse_func;
unsigned int nesting_level_left;
- unsigned int debug_depth;
hb_closure_context_t (hb_face_t *face_,
hb_set_t *glyphs_,
@@ -112,7 +107,6 @@ struct hb_closure_context_t :
glyphs (glyphs_),
recurse_func (nullptr),
nesting_level_left (nesting_level_left_),
- debug_depth (0),
done_lookups (done_lookups_),
lookup_count (0)
{}
@@ -134,9 +128,8 @@ struct hb_closure_context_t :
};
struct hb_closure_lookups_context_t :
- hb_dispatch_context_t<hb_closure_lookups_context_t, hb_empty_t, 0>
+ hb_dispatch_context_t<hb_closure_lookups_context_t>
{
- const char *get_name () { return "CLOSURE_LOOKUPS"; }
typedef return_t (*recurse_func_t) (hb_closure_lookups_context_t *c, unsigned lookup_index);
template <typename T>
return_t dispatch (const T &obj) { obj.closure_lookups (this); return hb_empty_t (); }
@@ -177,7 +170,6 @@ struct hb_closure_lookups_context_t :
const hb_set_t *glyphs;
recurse_func_t recurse_func;
unsigned int nesting_level_left;
- unsigned int debug_depth;
hb_closure_lookups_context_t (hb_face_t *face_,
const hb_set_t *glyphs_,
@@ -188,7 +180,6 @@ struct hb_closure_lookups_context_t :
glyphs (glyphs_),
recurse_func (nullptr),
nesting_level_left (nesting_level_left_),
- debug_depth (0),
visited_lookups (visited_lookups_),
inactive_lookups (inactive_lookups_),
lookup_count (0) {}
@@ -202,9 +193,8 @@ struct hb_closure_lookups_context_t :
};
struct hb_would_apply_context_t :
- hb_dispatch_context_t<hb_would_apply_context_t, bool, 0>
+ hb_dispatch_context_t<hb_would_apply_context_t, bool>
{
- const char *get_name () { return "WOULD_APPLY"; }
template <typename T>
return_t dispatch (const T &obj) { return obj.would_apply (this); }
static return_t default_return_value () { return false; }
@@ -214,7 +204,6 @@ struct hb_would_apply_context_t :
const hb_codepoint_t *glyphs;
unsigned int len;
bool zero_context;
- unsigned int debug_depth;
hb_would_apply_context_t (hb_face_t *face_,
const hb_codepoint_t *glyphs_,
@@ -223,15 +212,12 @@ struct hb_would_apply_context_t :
face (face_),
glyphs (glyphs_),
len (len_),
- zero_context (zero_context_),
- debug_depth (0) {}
+ zero_context (zero_context_) {}
};
-
struct hb_collect_glyphs_context_t :
- hb_dispatch_context_t<hb_collect_glyphs_context_t, hb_empty_t, 0>
+ hb_dispatch_context_t<hb_collect_glyphs_context_t>
{
- const char *get_name () { return "COLLECT_GLYPHS"; }
typedef return_t (*recurse_func_t) (hb_collect_glyphs_context_t *c, unsigned int lookup_index);
template <typename T>
return_t dispatch (const T &obj) { obj.collect_glyphs (this); return hb_empty_t (); }
@@ -282,7 +268,6 @@ struct hb_collect_glyphs_context_t :
recurse_func_t recurse_func;
hb_set_t *recursed_lookups;
unsigned int nesting_level_left;
- unsigned int debug_depth;
hb_collect_glyphs_context_t (hb_face_t *face_,
hb_set_t *glyphs_before, /* OUT. May be NULL */
@@ -297,8 +282,7 @@ struct hb_collect_glyphs_context_t :
output (glyphs_output ? glyphs_output : hb_set_get_empty ()),
recurse_func (nullptr),
recursed_lookups (hb_set_create ()),
- nesting_level_left (nesting_level_left_),
- debug_depth (0) {}
+ nesting_level_left (nesting_level_left_) {}
~hb_collect_glyphs_context_t () { hb_set_destroy (recursed_lookups); }
void set_recurse_func (recurse_func_t func) { recurse_func = func; }
@@ -308,10 +292,9 @@ struct hb_collect_glyphs_context_t :
template <typename set_t>
struct hb_collect_coverage_context_t :
- hb_dispatch_context_t<hb_collect_coverage_context_t<set_t>, const Coverage &, HB_DEBUG_GET_COVERAGE>
+ hb_dispatch_context_t<hb_collect_coverage_context_t<set_t>, const Coverage &>
{
- const char *get_name () { return "GET_COVERAGE"; }
- typedef const Coverage &return_t;
+ typedef const Coverage &return_t; // Stoopid that we have to dupe this here.
template <typename T>
return_t dispatch (const T &obj) { return obj.get_coverage (); }
static return_t default_return_value () { return Null (Coverage); }
@@ -322,11 +305,9 @@ struct hb_collect_coverage_context_t :
}
hb_collect_coverage_context_t (set_t *set_) :
- set (set_),
- debug_depth (0) {}
+ set (set_) {}
set_t *set;
- unsigned int debug_depth;
};
@@ -549,7 +530,6 @@ struct hb_ot_apply_context_t :
unsigned int lookup_index;
unsigned int lookup_props;
unsigned int nesting_level_left;
- unsigned int debug_depth;
bool has_glyph_classes;
bool auto_zwnj;
@@ -579,7 +559,6 @@ struct hb_ot_apply_context_t :
lookup_index ((unsigned int) -1),
lookup_props (0),
nesting_level_left (HB_MAX_NESTING_LEVEL),
- debug_depth (0),
has_glyph_classes (gdef.has_glyph_classes ()),
auto_zwnj (true),
auto_zwj (true),
@@ -701,7 +680,7 @@ struct hb_ot_apply_context_t :
struct hb_get_subtables_context_t :
- hb_dispatch_context_t<hb_get_subtables_context_t, hb_empty_t, HB_DEBUG_APPLY>
+ hb_dispatch_context_t<hb_get_subtables_context_t>
{
template <typename Type>
static inline bool apply_to (const void *obj, OT::hb_ot_apply_context_t *c)
@@ -737,7 +716,6 @@ struct hb_get_subtables_context_t :
typedef hb_vector_t<hb_applicable_t> array_t;
/* Dispatch interface. */
- const char *get_name () { return "GET_SUBTABLES"; }
template <typename T>
return_t dispatch (const T &obj)
{
@@ -748,11 +726,9 @@ struct hb_get_subtables_context_t :
static return_t default_return_value () { return hb_empty_t (); }
hb_get_subtables_context_t (array_t &array_) :
- array (array_),
- debug_depth (0) {}
+ array (array_) {}
array_t &array;
- unsigned int debug_depth;
};
@@ -3277,6 +3253,21 @@ struct GSUBGPOS
}
template <typename TLookup>
+ void closure_lookups (hb_face_t *face,
+ const hb_set_t *glyphs,
+ hb_set_t *lookup_indexes /* IN/OUT */) const
+ {
+ hb_set_t visited_lookups, inactive_lookups;
+ OT::hb_closure_lookups_context_t c (face, glyphs, &visited_lookups, &inactive_lookups);
+
+ for (unsigned lookup_index : + hb_iter (lookup_indexes))
+ reinterpret_cast<const TLookup &> (get_lookup (lookup_index)).closure_lookups (&c, lookup_index);
+
+ hb_set_union (lookup_indexes, &visited_lookups);
+ hb_set_subtract (lookup_indexes, &inactive_lookups);
+ }
+
+ template <typename TLookup>
bool subset (hb_subset_layout_context_t *c) const
{
TRACE_SUBSET (this);
@@ -3364,7 +3355,7 @@ struct GSUBGPOS
void init (hb_face_t *face)
{
this->table = hb_sanitize_context_t ().reference_table<T> (face);
- if (unlikely (this->table->is_blacklisted (this->table.get_blob (), face)))
+ if (unlikely (this->table->is_blocklisted (this->table.get_blob (), face)))
{
hb_blob_destroy (this->table.get_blob ());
this->table = hb_blob_get_empty ();
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc
index bf736fef137..905261976cf 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc
@@ -143,13 +143,13 @@ hb_ot_layout_kern (const hb_ot_shape_plan_t *plan,
*/
bool
-OT::GDEF::is_blacklisted (hb_blob_t *blob,
+OT::GDEF::is_blocklisted (hb_blob_t *blob,
hb_face_t *face) const
{
#ifdef HB_NO_OT_LAYOUT_BLACKLIST
return false;
#endif
- /* The ugly business of blacklisting individual fonts' tables happen here!
+ /* The ugly business of blocklisting individual fonts' tables happen here!
* See this thread for why we finally had to bend in and do this:
* https://lists.freedesktop.org/archives/harfbuzz/2016-February/005489.html
*
@@ -392,7 +392,7 @@ hb_ot_layout_get_ligature_carets (hb_font_t *font,
*/
bool
-OT::GSUB::is_blacklisted (hb_blob_t *blob HB_UNUSED,
+OT::GSUB::is_blocklisted (hb_blob_t *blob HB_UNUSED,
hb_face_t *face) const
{
#ifdef HB_NO_OT_LAYOUT_BLACKLIST
@@ -402,7 +402,7 @@ OT::GSUB::is_blacklisted (hb_blob_t *blob HB_UNUSED,
}
bool
-OT::GPOS::is_blacklisted (hb_blob_t *blob HB_UNUSED,
+OT::GPOS::is_blocklisted (hb_blob_t *blob HB_UNUSED,
hb_face_t *face HB_UNUSED) const
{
#ifdef HB_NO_OT_LAYOUT_BLACKLIST
@@ -1202,72 +1202,6 @@ hb_ot_layout_collect_lookups (hb_face_t *face,
g.feature_variation_collect_lookups (&feature_indexes, lookup_indexes);
}
-#ifdef HB_EXPERIMENTAL_API
-/**
- * hb_ot_layout_closure_lookups:
- * @face: #hb_face_t to work upon
- * @table_tag: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
- * @lookup_indexes: (inout): lookup_indices collected from feature
- * list
- *
- * Returns all inactive lookups reachable from lookup_indices
- *
- * Since: EXPERIMENTAL
- **/
-void
-hb_ot_layout_closure_lookups (hb_face_t *face,
- hb_tag_t table_tag,
- const hb_set_t *glyphs,
- hb_set_t *lookup_indexes /* IN/OUT */)
-{
- hb_set_t visited_lookups, inactive_lookups;
- OT::hb_closure_lookups_context_t c (face, glyphs, &visited_lookups, &inactive_lookups);
-
- for (unsigned lookup_index : + hb_iter (lookup_indexes))
- {
- switch (table_tag)
- {
- case HB_OT_TAG_GSUB:
- {
- const OT::SubstLookup& l = face->table.GSUB->table->get_lookup (lookup_index);
- l.closure_lookups (&c, lookup_index);
- break;
- }
- case HB_OT_TAG_GPOS:
- {
- const OT::PosLookup& l = face->table.GPOS->table->get_lookup (lookup_index);
- l.closure_lookups (&c, lookup_index);
- break;
- }
- }
- }
-
- hb_set_union (lookup_indexes, &visited_lookups);
- hb_set_subtract (lookup_indexes, &inactive_lookups);
-}
-
-/**
- * hb_ot_layout_closure_features:
- * @face: #hb_face_t to work upon
- * @table_tag: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
- * @lookup_indexes: (in): collected active lookup_indices
- * @feature_indexes: (out): all active feature indexes collected
- *
- * Returns all active feature indexes
- *
- * Since: EXPERIMENTAL
- **/
-void
-hb_ot_layout_closure_features (hb_face_t *face,
- hb_tag_t table_tag,
- const hb_map_t *lookup_indexes, /* IN */
- hb_set_t *feature_indexes /* OUT */)
-{
- const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
- g.closure_features (lookup_indexes, feature_indexes);
-}
-#endif
-
#ifndef HB_NO_LAYOUT_COLLECT_GLYPHS
/**
@@ -1428,7 +1362,6 @@ hb_ot_layout_lookup_would_substitute (hb_face_t *face,
OT::hb_would_apply_context_t c (face, glyphs, glyphs_length, (bool) zero_context);
const OT::SubstLookup& l = face->table.GSUB->table->get_lookup (lookup_index);
-
return l.would_apply (&c, &face->table.GSUB->accels[lookup_index]);
}
@@ -1446,7 +1379,7 @@ void
hb_ot_layout_substitute_start (hb_font_t *font,
hb_buffer_t *buffer)
{
-_hb_ot_layout_set_glyph_props (font, buffer);
+ _hb_ot_layout_set_glyph_props (font, buffer);
}
void
@@ -1777,12 +1710,6 @@ hb_ot_layout_feature_get_name_ids (hb_face_t *face,
* Fetches a list of the characters defined as having a variant under the specified
* "Character Variant" ("cvXX") feature tag.
*
- * <note>Note: If the char_count output value is equal to its input value, then there
- * is a chance there were more characters defined under the feature tag than were
- * returned. This function can be called with incrementally larger start_offset
- * until the char_count output value is lower than its input value, or the size
- * of the characters array can be increased.</note>
- *
* Return value: Number of total sample characters in the cvXX feature.
*
* Since: 2.0.0
@@ -1796,24 +1723,10 @@ hb_ot_layout_feature_get_characters (hb_face_t *face,
hb_codepoint_t *characters /* OUT. May be NULL */)
{
const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
-
- hb_tag_t feature_tag = g.get_feature_tag (feature_index);
- const OT::Feature &f = g.get_feature (feature_index);
-
- const OT::FeatureParams &feature_params = f.get_feature_params ();
-
- const OT::FeatureParamsCharacterVariants& cv_params =
- feature_params.get_character_variants_params(feature_tag);
-
- unsigned int len = 0;
- if (char_count && characters && start_offset < cv_params.characters.len)
- {
- len = hb_min (cv_params.characters.len - start_offset, *char_count);
- for (unsigned int i = 0; i < len; ++i)
- characters[i] = cv_params.characters[start_offset + i];
- }
- if (char_count) *char_count = len;
- return cv_params.characters.len;
+ return g.get_feature (feature_index)
+ .get_feature_params ()
+ .get_character_variants_params(g.get_feature_tag (feature_index))
+ .get_characters (start_offset, char_count, characters);
}
#endif
@@ -1982,13 +1895,17 @@ inline void hb_ot_map_t::apply (const Proxy &proxy,
void hb_ot_map_t::substitute (const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer) const
{
GSUBProxy proxy (font->face);
+ if (!buffer->message (font, "start table GSUB")) return;
apply (proxy, plan, font, buffer);
+ (void)buffer->message (font, "end table GSUB");
}
void hb_ot_map_t::position (const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer) const
{
GPOSProxy proxy (font->face);
+ if (!buffer->message (font, "start table GPOS")) return;
apply (proxy, plan, font, buffer);
+ (void)buffer->message (font, "end table GPOS");
}
void
@@ -2031,4 +1948,62 @@ hb_ot_layout_get_baseline (hb_font_t *font,
return result;
}
#endif
+
+
+struct hb_get_glyph_alternates_dispatch_t :
+ hb_dispatch_context_t<hb_get_glyph_alternates_dispatch_t, unsigned>
+{
+ static return_t default_return_value () { return 0; }
+ bool stop_sublookup_iteration (return_t r) const { return r; }
+
+ hb_face_t *face;
+
+ hb_get_glyph_alternates_dispatch_t (hb_face_t *face) :
+ face (face) {}
+
+ private:
+ template <typename T, typename ...Ts> auto
+ _dispatch (const T &obj, hb_priority<1>, Ts&&... ds) HB_AUTO_RETURN
+ ( obj.get_glyph_alternates (hb_forward<Ts> (ds)...) )
+ template <typename T, typename ...Ts> auto
+ _dispatch (const T &obj, hb_priority<0>, Ts&&... ds) HB_AUTO_RETURN
+ ( default_return_value () )
+ public:
+ template <typename T, typename ...Ts> auto
+ dispatch (const T &obj, Ts&&... ds) HB_AUTO_RETURN
+ ( _dispatch (obj, hb_prioritize, hb_forward<Ts> (ds)...) )
+};
+
+/**
+ * hb_ot_layout_lookup_get_glyph_alternates:
+ * @face: a face.
+ * @lookup_index: index of the feature lookup to query.
+ * @glyph: a glyph id.
+ * @start_offset: starting offset.
+ * @alternate_count: (inout) (allow-none): Input = the maximum number of alternate glyphs to return;
+ * Output = the actual number of alternate glyphs returned (may be zero).
+ * @alternate_glyphs: (out caller-allocates) (array length=alternate_count): A glyphs buffer.
+ * Alternate glyphs associated with the glyph id.
+ *
+ * Fetches alternates of a glyph from a given GSUB lookup index.
+ *
+ * Return value: total number of alternates found in the specific lookup index for the given glyph id.
+ *
+ * Since: 2.6.8
+ **/
+HB_EXTERN unsigned
+hb_ot_layout_lookup_get_glyph_alternates (hb_face_t *face,
+ unsigned lookup_index,
+ hb_codepoint_t glyph,
+ unsigned start_offset,
+ unsigned *alternate_count /* IN/OUT. May be NULL. */,
+ hb_codepoint_t *alternate_glyphs /* OUT. May be NULL. */)
+{
+ hb_get_glyph_alternates_dispatch_t c (face);
+ const OT::SubstLookup &lookup = face->table.GSUB->table->get_lookup (lookup_index);
+ auto ret = lookup.dispatch (&c, glyph, start_offset, alternate_count, alternate_glyphs);
+ if (!ret && alternate_count) *alternate_count = 0;
+ return ret;
+}
+
#endif
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.h
index 6255a9173ea..545d5f7fc4e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.h
@@ -262,20 +262,6 @@ hb_ot_layout_collect_lookups (hb_face_t *face,
const hb_tag_t *features,
hb_set_t *lookup_indexes /* OUT */);
-#ifdef HB_EXPERIMENTAL_API
-HB_EXTERN void
-hb_ot_layout_closure_lookups (hb_face_t *face,
- hb_tag_t table_tag,
- const hb_set_t *glyphs,
- hb_set_t *lookup_indexes /* IN/OUT */);
-
-HB_EXTERN void
-hb_ot_layout_closure_features (hb_face_t *face,
- hb_tag_t table_tag,
- const hb_map_t *lookup_indexes, /* IN */
- hb_set_t *feature_indexes /* OUT */);
-#endif
-
HB_EXTERN void
hb_ot_layout_lookup_collect_glyphs (hb_face_t *face,
hb_tag_t table_tag,
@@ -337,6 +323,14 @@ hb_ot_layout_feature_with_variations_get_lookups (hb_face_t *face,
HB_EXTERN hb_bool_t
hb_ot_layout_has_substitution (hb_face_t *face);
+HB_EXTERN unsigned
+hb_ot_layout_lookup_get_glyph_alternates (hb_face_t *face,
+ unsigned lookup_index,
+ hb_codepoint_t glyph,
+ unsigned start_offset,
+ unsigned *alternate_count /* IN/OUT */,
+ hb_codepoint_t *alternate_glyphs /* OUT */);
+
HB_EXTERN hb_bool_t
hb_ot_layout_lookup_would_substitute (hb_face_t *face,
unsigned int lookup_index,
@@ -463,7 +457,6 @@ hb_ot_layout_get_baseline (hb_font_t *font,
hb_tag_t language_tag,
hb_position_t *coord /* OUT. May be NULL. */);
-
HB_END_DECLS
#endif /* HB_OT_LAYOUT_H */
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 0033f4cc6e7..ea4824394fe 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
@@ -515,10 +515,9 @@ struct MathGlyphAssembly
if (parts_count)
{
int64_t mult = font->dir_mult (direction);
- hb_array_t<const MathGlyphPartRecord> arr = partRecords.sub_array (start_offset, parts_count);
- unsigned int count = arr.length;
- for (unsigned int i = 0; i < count; i++)
- arr[i].extract (parts[i], mult, font);
+ for (auto _ : hb_zip (partRecords.sub_array (start_offset, parts_count),
+ hb_array (parts, *parts_count)))
+ _.first.extract (_.second, mult, font);
}
if (italics_correction)
@@ -563,13 +562,9 @@ struct MathGlyphConstruction
if (variants_count)
{
int64_t mult = font->dir_mult (direction);
- hb_array_t<const MathGlyphVariantRecord> arr = mathGlyphVariantRecord.sub_array (start_offset, variants_count);
- unsigned int count = arr.length;
- for (unsigned int i = 0; i < count; i++)
- {
- variants[i].glyph = arr[i].variantGlyph;
- variants[i].advance = font->em_mult (arr[i].advanceMeasurement, mult);
- }
+ for (auto _ : hb_zip (mathGlyphVariantRecord.sub_array (start_offset, variants_count),
+ hb_array (variants, *variants_count)))
+ _.second = {_.first.variantGlyph, font->em_mult (_.first.advanceMeasurement, mult)};
}
return mathGlyphVariantRecord.len;
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-meta.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-meta.cc
index a1e081b2452..54a0e10f9be 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-meta.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-meta.cc
@@ -38,7 +38,7 @@
**/
/**
- * hb_ot_meta_reference_entry:
+ * hb_ot_meta_get_entry_tags:
* @face: a face object
* @start_offset: iteration's start offset
* @entries_count:(inout) (allow-none): buffer size as input, filled size as output
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc
index 3dab3aa11c9..34972f81e26 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc
@@ -650,7 +650,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
* is *not* a Halant after last consonant already. We know that is the
* case for Kannada, while it reorders unconditionally in other scripts,
* eg. Malayalam, Bengali, and Devanagari. We don't currently know about
- * other scripts, so we blacklist Kannada.
+ * other scripts, so we block Kannada.
*
* Kannada test case:
* U+0C9A,U+0CCD,U+0C9A,U+0CCD
@@ -1333,6 +1333,7 @@ final_reordering_syllable_indic (const hb_ot_shape_plan_t *plan,
goto reph_move;
}
}
+ /* See https://github.com/harfbuzz/harfbuzz/issues/2298#issuecomment-615318654 */
/* 6. Otherwise, reorder reph to the end of the syllable.
*/
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh
index 88135234db5..655064bdf70 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh
@@ -59,6 +59,9 @@ enum
struct AxisValueFormat1
{
+ unsigned int get_axis_index () const { return axisIndex; }
+ float get_value () const { return value.to_float (); }
+
hb_ot_name_id_t get_value_name_id () const { return valueNameID; }
bool sanitize (hb_sanitize_context_t *c) const
@@ -84,6 +87,9 @@ struct AxisValueFormat1
struct AxisValueFormat2
{
+ unsigned int get_axis_index () const { return axisIndex; }
+ float get_value () const { return nominalValue.to_float (); }
+
hb_ot_name_id_t get_value_name_id () const { return valueNameID; }
bool sanitize (hb_sanitize_context_t *c) const
@@ -113,6 +119,9 @@ struct AxisValueFormat2
struct AxisValueFormat3
{
+ unsigned int get_axis_index () const { return axisIndex; }
+ float get_value () const { return value.to_float (); }
+
hb_ot_name_id_t get_value_name_id () const { return valueNameID; }
bool sanitize (hb_sanitize_context_t *c) const
@@ -140,6 +149,9 @@ struct AxisValueFormat3
struct AxisValueRecord
{
+ unsigned int get_axis_index () const { return axisIndex; }
+ float get_value () const { return value.to_float (); }
+
bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
@@ -157,6 +169,9 @@ struct AxisValueRecord
struct AxisValueFormat4
{
+ const AxisValueRecord &get_axis_record (unsigned int axis_index) const
+ { return axisValues.as_array (axisCount)[axis_index]; }
+
hb_ot_name_id_t get_value_name_id () const { return valueNameID; }
bool sanitize (hb_sanitize_context_t *c) const
@@ -183,6 +198,30 @@ struct AxisValueFormat4
struct AxisValue
{
+ bool get_value (unsigned int axis_index) const
+ {
+ switch (u.format)
+ {
+ case 1: return u.format1.get_value ();
+ case 2: return u.format2.get_value ();
+ case 3: return u.format3.get_value ();
+ case 4: return u.format4.get_axis_record (axis_index).get_value ();
+ default:return 0;
+ }
+ }
+
+ unsigned int get_axis_index () const
+ {
+ switch (u.format)
+ {
+ case 1: return u.format1.get_axis_index ();
+ case 2: return u.format2.get_axis_index ();
+ case 3: return u.format3.get_axis_index ();
+ /* case 4: Makes more sense for variable fonts which are handled by fvar in hb-style */
+ default:return -1;
+ }
+ }
+
hb_ot_name_id_t get_value_name_id () const
{
switch (u.format)
@@ -226,6 +265,8 @@ struct AxisValue
struct StatAxisRecord
{
+ int cmp (hb_tag_t key) const { return tag.cmp (key); }
+
hb_ot_name_id_t get_name_id () const { return nameID; }
bool sanitize (hb_sanitize_context_t *c) const
@@ -251,6 +292,38 @@ struct STAT
bool has_data () const { return version.to_int (); }
+ bool find_axis_index (hb_tag_t tag, unsigned int *axis_index) const
+ {
+ hb_array_t<const StatAxisRecord> axes = get_design_axes ();
+ /* TODO: add lfind in hb_array_t and use it in here and fvar's find_axis_info */
+ for (unsigned int i = 0; i < axes.length; i++)
+ if (!axes[i].cmp (tag))
+ {
+ *axis_index = i;
+ return true;
+ }
+ return false;
+ }
+
+ bool get_value (hb_tag_t tag, float *value) const
+ {
+ unsigned int axis_index;
+ if (!find_axis_index (tag, &axis_index)) return false;
+
+ hb_array_t<const OffsetTo<AxisValue>> axis_values = get_axis_value_offsets ();
+ for (unsigned int i = 0; i < axis_values.length; i++)
+ {
+ const AxisValue& axis_value = (this + axis_values[i]);
+ if (axis_value.get_axis_index () == axis_index)
+ {
+ if (value)
+ *value = axis_value.get_value (axis_index);
+ return true;
+ }
+ }
+ return false;
+ }
+
unsigned get_design_axis_count () const { return designAxisCount; }
hb_ot_name_id_t get_axis_record_name_id (unsigned axis_record_index) const
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-fvar-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-fvar-table.hh
index af22f706e54..9185f755c53 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-fvar-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-fvar-table.hh
@@ -75,6 +75,31 @@ struct AxisRecord
AXIS_FLAG_HIDDEN = 0x0001,
};
+#ifndef HB_DISABLE_DEPRECATED
+ void get_axis_deprecated (hb_ot_var_axis_t *info) const
+ {
+ info->tag = axisTag;
+ info->name_id = axisNameID;
+ info->default_value = defaultValue / 65536.f;
+ /* Ensure order, to simplify client math. */
+ info->min_value = hb_min (info->default_value, minValue / 65536.f);
+ info->max_value = hb_max (info->default_value, maxValue / 65536.f);
+ }
+#endif
+
+ void get_axis_info (unsigned axis_index, hb_ot_var_axis_info_t *info) const
+ {
+ info->axis_index = axis_index;
+ info->tag = axisTag;
+ info->name_id = axisNameID;
+ info->flags = (hb_ot_var_axis_flags_t) (unsigned int) flags;
+ info->default_value = defaultValue / 65536.f;
+ /* Ensure order, to simplify client math. */
+ info->min_value = hb_min (info->default_value, minValue / 65536.f);
+ info->max_value = hb_max (info->default_value, maxValue / 65536.f);
+ info->reserved = 0;
+ }
+
bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
@@ -115,44 +140,15 @@ struct fvar
unsigned int get_axis_count () const { return axisCount; }
#ifndef HB_DISABLE_DEPRECATED
- void get_axis_deprecated (unsigned int axis_index,
- hb_ot_var_axis_t *info) const
- {
- const AxisRecord &axis = get_axes ()[axis_index];
- info->tag = axis.axisTag;
- info->name_id = axis.axisNameID;
- info->default_value = axis.defaultValue / 65536.f;
- /* Ensure order, to simplify client math. */
- info->min_value = hb_min (info->default_value, axis.minValue / 65536.f);
- info->max_value = hb_max (info->default_value, axis.maxValue / 65536.f);
- }
-#endif
-
- void get_axis_info (unsigned int axis_index,
- hb_ot_var_axis_info_t *info) const
- {
- const AxisRecord &axis = get_axes ()[axis_index];
- info->axis_index = axis_index;
- info->tag = axis.axisTag;
- info->name_id = axis.axisNameID;
- info->flags = (hb_ot_var_axis_flags_t) (unsigned int) axis.flags;
- info->default_value = axis.defaultValue / 65536.f;
- /* Ensure order, to simplify client math. */
- info->min_value = hb_min (info->default_value, axis.minValue / 65536.f);
- info->max_value = hb_max (info->default_value, axis.maxValue / 65536.f);
- info->reserved = 0;
- }
-
-#ifndef HB_DISABLE_DEPRECATED
unsigned int get_axes_deprecated (unsigned int start_offset,
unsigned int *axes_count /* IN/OUT */,
hb_ot_var_axis_t *axes_array /* OUT */) const
{
if (axes_count)
{
- hb_array_t<const AxisRecord> arr = hb_array (&(this+firstAxis), axisCount).sub_array (start_offset, axes_count);
+ hb_array_t<const AxisRecord> arr = get_axes ().sub_array (start_offset, axes_count);
for (unsigned i = 0; i < arr.length; ++i)
- get_axis_deprecated (start_offset + i, axes_array + i);
+ arr[i].get_axis_deprecated (&axes_array[i]);
}
return axisCount;
}
@@ -164,26 +160,24 @@ struct fvar
{
if (axes_count)
{
- hb_array_t<const AxisRecord> arr = hb_array (&(this+firstAxis), axisCount).sub_array (start_offset, axes_count);
+ hb_array_t<const AxisRecord> arr = get_axes ().sub_array (start_offset, axes_count);
for (unsigned i = 0; i < arr.length; ++i)
- get_axis_info (start_offset + i, axes_array + i);
+ arr[i].get_axis_info (start_offset + i, &axes_array[i]);
}
return axisCount;
}
#ifndef HB_DISABLE_DEPRECATED
- bool find_axis_deprecated (hb_tag_t tag,
- unsigned int *axis_index,
- hb_ot_var_axis_t *info) const
+ bool
+ find_axis_deprecated (hb_tag_t tag, unsigned *axis_index, hb_ot_var_axis_t *info) const
{
- const AxisRecord *axes = get_axes ();
- unsigned int count = get_axis_count ();
- for (unsigned int i = 0; i < count; i++)
+ hb_array_t<const AxisRecord> axes = get_axes ();
+ for (unsigned i = 0; i < axes.length; i++)
if (axes[i].axisTag == tag)
{
if (axis_index)
*axis_index = i;
- get_axis_deprecated (i, info);
+ axes[i].get_axis_deprecated (info);
return true;
}
if (axis_index)
@@ -192,15 +186,14 @@ struct fvar
}
#endif
- bool find_axis_info (hb_tag_t tag,
- hb_ot_var_axis_info_t *info) const
+ bool
+ find_axis_info (hb_tag_t tag, hb_ot_var_axis_info_t *info) const
{
- const AxisRecord *axes = get_axes ();
- unsigned int count = get_axis_count ();
- for (unsigned int i = 0; i < count; i++)
+ hb_array_t<const AxisRecord> axes = get_axes ();
+ for (unsigned i = 0; i < axes.length; i++)
if (axes[i].axisTag == tag)
{
- get_axis_info (i, info);
+ axes[i].get_axis_info (i, info);
return true;
}
return false;
@@ -209,7 +202,7 @@ struct fvar
int normalize_axis_value (unsigned int axis_index, float v) const
{
hb_ot_var_axis_info_t axis;
- get_axis_info (axis_index, &axis);
+ get_axes ()[axis_index].get_axis_info (axis_index, &axis);
v = hb_clamp (v, axis.min_value, axis.max_value);
@@ -225,7 +218,7 @@ struct fvar
float unnormalize_axis_value (unsigned int axis_index, float v) const
{
hb_ot_var_axis_info_t axis;
- get_axis_info (axis_index, &axis);
+ get_axes ()[axis_index].get_axis_info (axis_index, &axis);
if (v == 0)
return axis.default_value;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-sanitize.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-sanitize.hh
index 091b3010f0a..024b4d1c99f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-sanitize.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-sanitize.hh
@@ -121,7 +121,6 @@ struct hb_sanitize_context_t :
hb_dispatch_context_t<hb_sanitize_context_t, bool, HB_DEBUG_SANITIZE>
{
hb_sanitize_context_t () :
- debug_depth (0),
start (nullptr), end (nullptr),
max_ops (0), max_subtables (0),
writable (false), edit_count (0),
@@ -387,7 +386,6 @@ struct hb_sanitize_context_t :
return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
}
- mutable unsigned int debug_depth;
const char *start, *end;
mutable int max_ops, max_subtables;
private:
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.cc
new file mode 100644
index 00000000000..69f5beeb20c
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.cc
@@ -0,0 +1,149 @@
+/*
+ * Copyright © 2019 Ebrahim Byagowi
+ *
+ * This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ */
+
+#include "hb.hh"
+
+#ifndef HB_NO_STYLE
+#ifdef HB_EXPERIMENTAL_API
+
+#include "hb-aat-fdsc-table.hh"
+#include "hb-ot-var-avar-table.hh"
+#include "hb-ot-var-fvar-table.hh"
+#include "hb-ot-stat-table.hh"
+#include "hb-ot-os2-table.hh"
+#include "hb-ot-head-table.hh"
+#include "hb-ot-post-table.hh"
+#include "hb-ot-face.hh"
+
+/**
+ * hb_style_tag_t:
+ * @HB_STYLE_TAG_ITALIC: Used to vary between non-italic and italic.
+ * A value of 0 can be interpreted as "Roman" (non-italic); a value of 1 can
+ * be interpreted as (fully) italic.
+ * @HB_STYLE_TAG_OPTICAL_SIZE: Used to vary design to suit different text sizes.
+ * Non-zero. Values can be interpreted as text size, in points.
+ * @HB_STYLE_TAG_SLANT: Used to vary between upright and slanted text. Values
+ * must be greater than -90 and less than +90. Values can be interpreted as
+ * the angle, in counter-clockwise degrees, of oblique slant from whatever the
+ * designer considers to be upright for that font design.
+ * @HB_STYLE_TAG_WIDTH: Used to vary width of text from narrower to wider.
+ * Non-zero. Values can be interpreted as a percentage of whatever the font
+ * designer considers “normal width” for that font design.
+ * @HB_STYLE_TAG_WEIGHT: Used to vary stroke thicknesses or other design details
+ * to give variation from lighter to blacker. Values can be interpreted in direct
+ * comparison to values for usWeightClass in the OS/2 table,
+ * or the CSS font-weight property.
+ *
+ * Defined by https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg
+ *
+ * Since: EXPERIMENTAL
+ **/
+typedef enum {
+ HB_STYLE_TAG_ITALIC = HB_TAG ('i','t','a','l'),
+ HB_STYLE_TAG_OPTICAL_SIZE = HB_TAG ('o','p','s','z'),
+ HB_STYLE_TAG_SLANT = HB_TAG ('s','l','n','t'),
+ HB_STYLE_TAG_WIDTH = HB_TAG ('w','d','t','h'),
+ HB_STYLE_TAG_WEIGHT = HB_TAG ('w','g','h','t'),
+
+ _HB_STYLE_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/
+} hb_style_tag_t;
+
+/**
+ * hb_style_get_value:
+ * @font: a #hb_font_t object.
+ * @style_tag: a style tag.
+ *
+ * Searches variation axes of a hb_font_t object for a specific axis first,
+ * if not set, then tries to get default style values from different
+ * tables of the font.
+ *
+ * Returns: Corresponding axis or default value to a style tag.
+ *
+ * Since: EXPERIMENTAL
+ **/
+float
+hb_style_get_value (hb_font_t *font, hb_tag_t tag)
+{
+ hb_style_tag_t style_tag = (hb_style_tag_t) tag;
+ hb_face_t *face = font->face;
+
+#ifndef HB_NO_VAR
+ hb_ot_var_axis_info_t axis;
+ if (hb_ot_var_find_axis_info (face, style_tag, &axis))
+ {
+ if (axis.axis_index < font->num_coords) return font->design_coords[axis.axis_index];
+ /* If a face is variable, fvar's default_value is better than STAT records */
+ return axis.default_value;
+ }
+#endif
+
+ if (style_tag == HB_STYLE_TAG_OPTICAL_SIZE && font->ptem)
+ return font->ptem;
+
+ /* STAT */
+ float value;
+ if (face->table.STAT->get_value (style_tag, &value))
+ return value;
+
+ /* Check Apple's fdsc as OS2 table is optional in AAT */
+ const AAT::FontDescriptor &descriptor = face->table.fdsc->get_descriptor (style_tag);
+ if (descriptor.has_data ())
+ {
+ float value = descriptor.get_value ();
+ /* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6fdsc.html */
+ /* Percent weight relative to regular weight. */
+ if (style_tag == HB_STYLE_TAG_WEIGHT) value *= 400.f;
+ /* Percent width relative to regular width. */
+ if (style_tag == HB_STYLE_TAG_WIDTH) value *= 100.f;
+ return value;
+ }
+
+ switch ((unsigned) style_tag)
+ {
+ case HB_STYLE_TAG_ITALIC:
+ return face->table.OS2->is_italic () || face->table.head->is_italic () ? 1 : 0;
+ case HB_STYLE_TAG_OPTICAL_SIZE:
+ {
+ unsigned int lower, upper;
+ return face->table.OS2->v5 ().get_optical_size (&lower, &upper)
+ ? (float) (lower + upper) / 2.f
+ : 12.f;
+ }
+ case HB_STYLE_TAG_SLANT:
+ return face->table.post->table->italicAngle.to_float ();
+ case HB_STYLE_TAG_WIDTH:
+ return face->table.OS2->has_data ()
+ ? face->table.OS2->get_width ()
+ : (face->table.head->is_condensed () ? 75 : 100);
+ case HB_STYLE_TAG_WEIGHT:
+ return face->table.OS2->has_data ()
+ ? face->table.OS2->usWeightClass
+ : (face->table.head->is_bold () ? 700 : 400);
+ default:
+ return 0;
+ }
+}
+
+#endif
+#endif
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.h
new file mode 100644
index 00000000000..1209c79e945
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright © 2019 Ebrahim Byagowi
+ *
+ * This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ */
+
+#ifndef HB_H_IN
+#error "Include <hb.h> instead."
+#endif
+
+#ifndef HB_STYLE_H
+#define HB_STYLE_H
+
+#include "hb.h"
+
+HB_BEGIN_DECLS
+
+#ifdef HB_EXPERIMENTAL_API
+HB_EXTERN float
+hb_style_get_value (hb_font_t *font, hb_tag_t style_tag);
+#endif
+
+HB_END_DECLS
+
+#endif /* HB_STYLE_H */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc
index 232131c5958..b16f5077cc9 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc
@@ -32,6 +32,7 @@
#include "hb-ot-glyf-table.hh"
#include "hb-ot-layout-gdef-table.hh"
#include "hb-ot-layout-gpos-table.hh"
+#include "hb-ot-layout-gsub-table.hh"
#include "hb-ot-cff1-table.hh"
#include "hb-ot-color-colr-table.hh"
#include "hb-ot-var-fvar-table.hh"
@@ -54,7 +55,6 @@ _add_cff_seac_components (const OT::cff1::accelerator_t &cff,
#endif
#ifndef HB_NO_SUBSET_LAYOUT
-#ifdef HB_EXPERIMENTAL_API
static void
_remap_indexes (const hb_set_t *indexes,
hb_map_t *mapping /* OUT */)
@@ -65,7 +65,6 @@ _remap_indexes (const hb_set_t *indexes,
mapping->set (_.first, _.second);
}
-#endif
static inline void
_gsub_closure_glyphs_lookups_features (hb_face_t *face,
@@ -83,21 +82,17 @@ _gsub_closure_glyphs_lookups_features (hb_face_t *face,
hb_ot_layout_lookups_substitute_closure (face,
&lookup_indices,
gids_to_retain);
-#ifdef HB_EXPERIMENTAL_API
- hb_ot_layout_closure_lookups (face,
- HB_OT_TAG_GSUB,
- gids_to_retain,
- &lookup_indices);
+ hb_blob_ptr_t<OT::GSUB> gsub = hb_sanitize_context_t ().reference_table<OT::GSUB> (face);
+ gsub->closure_lookups (face,
+ gids_to_retain,
+ &lookup_indices);
_remap_indexes (&lookup_indices, gsub_lookups);
//closure features
hb_set_t feature_indices;
- hb_ot_layout_closure_features (face,
- HB_OT_TAG_GSUB,
- gsub_lookups,
- &feature_indices);
+ gsub->closure_features (gsub_lookups, &feature_indices);
_remap_indexes (&feature_indices, gsub_features);
-#endif
+ gsub.destroy ();
}
static inline void
@@ -113,21 +108,17 @@ _gpos_closure_lookups_features (hb_face_t *face,
nullptr,
nullptr,
&lookup_indices);
-#ifdef HB_EXPERIMENTAL_API
- hb_ot_layout_closure_lookups (face,
- HB_OT_TAG_GPOS,
- gids_to_retain,
- &lookup_indices);
+ hb_blob_ptr_t<OT::GPOS> gpos = hb_sanitize_context_t ().reference_table<OT::GPOS> (face);
+ gpos->closure_lookups (face,
+ gids_to_retain,
+ &lookup_indices);
_remap_indexes (&lookup_indices, gpos_lookups);
//closure features
hb_set_t feature_indices;
- hb_ot_layout_closure_features (face,
- HB_OT_TAG_GPOS,
- gpos_lookups,
- &feature_indices);
+ gpos->closure_features (gpos_lookups, &feature_indices);
_remap_indexes (&feature_indices, gpos_features);
-#endif
+ gpos.destroy ();
}
#endif
@@ -301,7 +292,7 @@ static void
_nameid_closure (hb_face_t *face,
hb_set_t *nameids)
{
-#ifndef HB_NO_STAT
+#ifndef HB_NO_STYLE
face->table.STAT->collect_name_ids (nameids);
#endif
#ifndef HB_NO_VAR
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.hh
index dc86f150c6a..c9b01c67f3d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.hh
@@ -58,7 +58,6 @@ struct hb_subset_context_t :
hb_subset_plan_t *plan;
hb_serialize_context_t *serializer;
hb_tag_t table_tag;
- unsigned int debug_depth;
hb_subset_context_t (hb_blob_t *source_blob_,
hb_subset_plan_t *plan_,
@@ -67,8 +66,7 @@ struct hb_subset_context_t :
source_blob (source_blob_),
plan (plan_),
serializer (serializer_),
- table_tag (table_tag_),
- debug_depth (0) {}
+ table_tag (table_tag_) {}
};
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.h
index b0cc06c9ef9..360686ca687 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.h
@@ -39,6 +39,7 @@
#include "hb-set.h"
#include "hb-shape.h"
#include "hb-shape-plan.h"
+#include "hb-style.h"
#include "hb-unicode.h"
#include "hb-version.h"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build b/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build
index a156e105cb4..a9757a4bcf8 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build
@@ -19,6 +19,7 @@ hb_base_sources = [
'hb-algs.hh',
'hb-array.hh',
'hb-atomic.hh',
+ 'hb-bimap.hh',
'hb-blob.cc',
'hb-blob.hh',
'hb-buffer-serialize.cc',
@@ -46,7 +47,6 @@ hb_base_sources = [
'hb-machinery.hh',
'hb-map.cc',
'hb-map.hh',
- 'hb-bimap.hh',
'hb-meta.hh',
'hb-mutex.hh',
'hb-null.hh',
@@ -56,9 +56,9 @@ hb_base_sources = [
'hb-open-file.hh',
'hb-open-type.hh',
'hb-ot-cff-common.hh',
+ 'hb-ot-cff1-std-str.hh',
'hb-ot-cff1-table.cc',
'hb-ot-cff1-table.hh',
- 'hb-ot-cff1-std-str.hh',
'hb-ot-cff2-table.cc',
'hb-ot-cff2-table.hh',
'hb-ot-cmap-table.hh',
@@ -68,9 +68,9 @@ hb_base_sources = [
'hb-ot-color-sbix-table.hh',
'hb-ot-color-svg-table.hh',
'hb-ot-color.cc',
+ 'hb-ot-face-table-list.hh',
'hb-ot-face.cc',
'hb-ot-face.hh',
- 'hb-ot-face-table-list.hh',
'hb-ot-font.cc',
'hb-ot-gasp-table.hh',
'hb-ot-glyf-table.hh',
@@ -158,6 +158,7 @@ hb_base_sources = [
'hb-shaper.hh',
'hb-static.cc',
'hb-string-array.hh',
+ 'hb-style.cc',
'hb-ucd-table.hh',
'hb-ucd.cc',
'hb-unicode-emoji-table.hh',
@@ -212,6 +213,7 @@ hb_base_headers = [
'hb-set.h',
'hb-shape-plan.h',
'hb-shape.h',
+ 'hb-style.h',
'hb-unicode.h',
'hb-version.h',
'hb.h',
@@ -285,7 +287,7 @@ custom_target('hb-version.h',
input: 'hb-version.h.in',
output: 'hb-version.h',
command: [find_program('gen-hb-version.py'), meson.project_version(),
- '@INPUT@', meson.current_source_dir() / 'hb-version.h'])
+ 'hb-version.h.in', 'hb-version.h'])
ragel = find_program('ragel', required: false)
if not ragel.found()
@@ -301,8 +303,7 @@ endif
custom_target('harfbuzz.cc',
build_by_default: true,
output: 'harfbuzz.cc',
- command: [find_program('gen-harfbuzzcc.py'),
- meson.source_root() / '@OUTPUT@'] +
+ command: [find_program('gen-harfbuzzcc.py'), 'harfbuzz.cc'] +
hb_base_sources + hb_glib_sources + hb_ft_sources +
hb_graphite2_sources + hb_uniscribe_sources + hb_gdi_sources +
hb_directwrite_sources + hb_coretext_sources)
@@ -312,24 +313,30 @@ incsrc = include_directories('.')
hb_sources = hb_base_sources + hb_base_ragel_generated_sources
hb_headers = hb_base_headers
+harfbuzz_deps = [thread_dep, m_dep] + harfbuzz_extra_deps
+
if conf.get('HAVE_FREETYPE', 0) == 1
hb_sources += hb_ft_sources
hb_headers += hb_ft_headers
+ harfbuzz_deps += [freetype_dep]
endif
if conf.get('HAVE_GDI', 0) == 1
hb_sources += hb_gdi_sources
hb_headers += hb_gdi_headers
+ harfbuzz_deps += gdi_uniscribe_deps
endif
if conf.get('HAVE_GRAPHITE2', 0) == 1
hb_sources += hb_graphite2_sources
hb_headers += hb_graphite2_headers
+ harfbuzz_deps += [graphite2_dep]
endif
if conf.get('HAVE_GLIB', 0) == 1
hb_sources += hb_glib_sources
hb_headers += hb_glib_headers
+ harfbuzz_deps += [glib_dep]
endif
if conf.get('HAVE_UNISCRIBE', 0) == 1
@@ -340,16 +347,13 @@ endif
if conf.get('HAVE_DIRECTWRITE', 0) == 1
hb_sources += hb_directwrite_sources
hb_headers += hb_directwrite_headers
+ harfbuzz_deps += directwrite_dep
endif
if conf.get('HAVE_CORETEXT', 0) == 1
hb_sources += hb_coretext_sources
hb_headers += hb_coretext_headers
-endif
-
-if get_option('amalgam')
- # replace the array if is amalgam build
- hb_sources = ['harfbuzz.cc']
+ harfbuzz_deps += coretext_deps
endif
have_icu = conf.get('HAVE_ICU', 0) == 1
@@ -358,14 +362,7 @@ have_icu_builtin = conf.get('HAVE_ICU_BUILTIN', 0) == 1
if have_icu and have_icu_builtin
hb_sources += hb_icu_sources
hb_headers += hb_icu_headers
- deps += [icu_dep]
-endif
-
-if not get_option('with_libstdcxx')
- chosen_linker = 'cpp'
-else
- # Use a C linker, not C++; Don't link to libstdc++
- chosen_linker = 'c'
+ harfbuzz_deps += [icu_dep]
endif
# harfbuzz
@@ -386,7 +383,7 @@ version = '0.' + '0'.join(meson.project_version().split('.')) + '.0'
extra_hb_cpp_args = []
if cpp.get_id() == 'msvc'
- if get_option('default_library') == 'shared'
+ if get_option('default_library') != 'static'
extra_hb_cpp_args += '-DHB_DLL_EXPORT'
endif
hb_so_version = ''
@@ -396,18 +393,18 @@ endif
libharfbuzz = library('harfbuzz', hb_sources,
include_directories: incconfig,
- dependencies: deps,
+ dependencies: harfbuzz_deps,
cpp_args: cpp_args + extra_hb_cpp_args,
soversion: hb_so_version,
version: version,
install: true,
- link_language: chosen_linker,
+ link_language: 'c',
)
libharfbuzz_dep = declare_dependency(
link_with: libharfbuzz,
include_directories: incsrc,
- dependencies: deps)
+ dependencies: harfbuzz_deps)
# harfbuzz-subset
harfbuzz_subset_def = custom_target('harfbuzz-subset.def',
@@ -418,19 +415,19 @@ defs_list += [harfbuzz_subset_def]
libharfbuzz_subset = library('harfbuzz-subset', hb_subset_sources,
include_directories: incconfig,
- dependencies: deps,
+ dependencies: [m_dep],
link_with: [libharfbuzz],
cpp_args: cpp_args + extra_hb_cpp_args,
soversion: hb_so_version,
version: version,
install: true,
- link_language: chosen_linker,
+ link_language: 'c',
)
libharfbuzz_subset_dep = declare_dependency(
link_with: libharfbuzz_subset,
include_directories: incsrc,
- dependencies: deps)
+ dependencies: [m_dep])
if get_option('tests').enabled()
# TODO: MSVC gives the following,
@@ -524,13 +521,13 @@ if have_icu and not have_icu_builtin
version: version,
install: true,
# ICU links to stdc++ anyway so the default linker is good
- # link_language: chosen_linker,
+ # link_language: 'c',
)
libharfbuzz_icu_dep = declare_dependency(
link_with: libharfbuzz_icu,
include_directories: incsrc,
- dependencies: deps)
+ dependencies: icu_dep)
pkgmod.generate(libharfbuzz_icu,
description: 'HarfBuzz text shaping library ICU integration',
@@ -602,13 +599,13 @@ if have_gobject
libharfbuzz_gobject = library('harfbuzz-gobject', [hb_gobject_sources, enum_c, enum_h],
include_directories: incconfig,
- dependencies: deps,
+ dependencies: [glib_dep, gobject_dep],
link_with: [libharfbuzz],
cpp_args: cpp_args + extra_hb_cpp_args,
soversion: hb_so_version,
version: version,
install: true,
- link_language: chosen_linker,
+ link_language: 'c',
)
gir = find_program('g-ir-scanner', required: get_option('introspection'))
@@ -643,7 +640,7 @@ if have_gobject
link_with: libharfbuzz_gobject,
include_directories: incsrc,
sources: build_gir ? hb_gen_files_gir : hb_gobject_sources,
- dependencies: deps)
+ dependencies: [glib_dep, gobject_dep])
pkgmod.generate(libharfbuzz_gobject,
description: 'HarfBuzz text shaping library GObject integration',
@@ -672,24 +669,18 @@ if get_option('tests').enabled()
env.set('srcdir', meson.current_source_dir())
env.set('builddir', meson.current_build_dir())
env.set('libs', meson.current_build_dir()) # TODO: Merge this with builddir after autotools removal
- if not get_option('amalgam')
- env.set('HBSOURCES', ' '.join(hb_sources))
- endif
+ env.set('HBSOURCES', ' '.join(hb_sources))
env.set('HBHEADERS', ' '.join(hb_headers))
if cpp.get_id() != 'msvc' and not meson.is_cross_build() # ensure the local tools are usable
- # See https://github.com/mesonbuild/meson/pull/6838
- if meson.version().version_compare('>=0.54.999') and not get_option('with_libstdcxx')
- dist_check_script += 'check-libstdc++'
- endif
- dist_check_script += ['check-static-inits', 'check-symbols']
+ dist_check_script += ['check-libstdc++', 'check-static-inits', 'check-symbols']
endif
foreach name : dist_check_script
test(name, find_program(name + '.py'),
env: env,
depends: name == 'check-symbols' ? defs_list : [],
- suite: ['src'],
+ suite: ['src'] + (name == 'check-static-inits' ? ['slow'] : []),
)
endforeach
endif
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/write-tarball-revision.py b/Build/source/libs/harfbuzz/harfbuzz-src/write-tarball-revision.py
new file mode 100644
index 00000000000..0b3ffee6dfd
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/write-tarball-revision.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python3
+
+import os, subprocess
+from pathlib import Path
+
+outfile = Path(
+ os.getenv('MESON_DIST_ROOT')
+ or os.getenv('MESON_SOURCE_ROOT')
+ or Path(__file__).parent
+) / '.tarball-revision'
+
+with open(outfile, 'wb') as f:
+ f.write(subprocess.check_output(['git', 'log', '--no-color', '--no-decorate', 'HEAD~..HEAD']))
diff --git a/Build/source/libs/harfbuzz/include/Makefile.am b/Build/source/libs/harfbuzz/include/Makefile.am
index d9f2d71511a..4a12b9347a3 100644
--- a/Build/source/libs/harfbuzz/include/Makefile.am
+++ b/Build/source/libs/harfbuzz/include/Makefile.am
@@ -28,6 +28,7 @@ hdr_links = \
$(HARFBUZZ_SRC)/hb-set.h \
$(HARFBUZZ_SRC)/hb-shape.h \
$(HARFBUZZ_SRC)/hb-shape-plan.h \
+ $(HARFBUZZ_SRC)/hb-style.h \
$(HARFBUZZ_SRC)/hb-unicode.h \
$(HARFBUZZ_BLD)/hb-version.h
diff --git a/Build/source/libs/harfbuzz/include/Makefile.in b/Build/source/libs/harfbuzz/include/Makefile.in
index 10f64864f92..de726659b6f 100644
--- a/Build/source/libs/harfbuzz/include/Makefile.in
+++ b/Build/source/libs/harfbuzz/include/Makefile.in
@@ -252,13 +252,14 @@ hdr_links = $(HARFBUZZ_SRC)/hb.h $(HARFBUZZ_SRC)/hb-aat-layout.h \
$(HARFBUZZ_SRC)/hb-face.h $(HARFBUZZ_SRC)/hb-font.h \
$(HARFBUZZ_SRC)/hb-map.h $(HARFBUZZ_SRC)/hb-ot-deprecated.h \
$(HARFBUZZ_SRC)/hb-set.h $(HARFBUZZ_SRC)/hb-shape.h \
- $(HARFBUZZ_SRC)/hb-shape-plan.h $(HARFBUZZ_SRC)/hb-unicode.h \
- $(HARFBUZZ_BLD)/hb-version.h $(HARFBUZZ_SRC)/hb-ot.h \
- $(HARFBUZZ_SRC)/hb-ot-color.h $(HARFBUZZ_SRC)/hb-ot-font.h \
- $(HARFBUZZ_SRC)/hb-ot-layout.h $(HARFBUZZ_SRC)/hb-ot-math.h \
- $(HARFBUZZ_SRC)/hb-ot-meta.h $(HARFBUZZ_SRC)/hb-ot-metrics.h \
- $(HARFBUZZ_SRC)/hb-ot-name.h $(HARFBUZZ_SRC)/hb-ot-shape.h \
- $(HARFBUZZ_SRC)/hb-ot-var.h $(HARFBUZZ_SRC)/hb-graphite2.h
+ $(HARFBUZZ_SRC)/hb-shape-plan.h $(HARFBUZZ_SRC)/hb-style.h \
+ $(HARFBUZZ_SRC)/hb-unicode.h $(HARFBUZZ_BLD)/hb-version.h \
+ $(HARFBUZZ_SRC)/hb-ot.h $(HARFBUZZ_SRC)/hb-ot-color.h \
+ $(HARFBUZZ_SRC)/hb-ot-font.h $(HARFBUZZ_SRC)/hb-ot-layout.h \
+ $(HARFBUZZ_SRC)/hb-ot-math.h $(HARFBUZZ_SRC)/hb-ot-meta.h \
+ $(HARFBUZZ_SRC)/hb-ot-metrics.h $(HARFBUZZ_SRC)/hb-ot-name.h \
+ $(HARFBUZZ_SRC)/hb-ot-shape.h $(HARFBUZZ_SRC)/hb-ot-var.h \
+ $(HARFBUZZ_SRC)/hb-graphite2.h
all: all-am
.SUFFIXES:
diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac
index 5fa668be3a4..7ee66ac1e72 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.6.7])
+m4_define([harfbuzz_version], [2.6.8])