From 9d59b98407e3748382ca111c76a7fe066d8816e7 Mon Sep 17 00:00:00 2001 From: Akira Kakuto Date: Mon, 22 Jun 2020 22:26:59 +0000 Subject: harfbuzz-2.6.8 git-svn-id: svn://tug.org/texlive/trunk@55630 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/libs/README | 4 +- Build/source/libs/harfbuzz/ChangeLog | 5 + Build/source/libs/harfbuzz/Makefile.am | 1 + Build/source/libs/harfbuzz/Makefile.in | 9 + Build/source/libs/harfbuzz/TLpatches/ChangeLog | 5 + Build/source/libs/harfbuzz/TLpatches/TL-Changes | 4 +- Build/source/libs/harfbuzz/configure | 24 +- .../libs/harfbuzz/harfbuzz-src/CMakeLists.txt | 2 +- Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog | 1084 ++++++++++++++++++++ .../source/libs/harfbuzz/harfbuzz-src/Makefile.am | 12 +- Build/source/libs/harfbuzz/harfbuzz-src/NEWS | 13 + .../source/libs/harfbuzz/harfbuzz-src/RELEASING.md | 6 +- .../source/libs/harfbuzz/harfbuzz-src/configure.ac | 15 +- .../source/libs/harfbuzz/harfbuzz-src/meson.build | 163 +-- .../libs/harfbuzz/harfbuzz-src/meson_options.txt | 16 +- .../harfbuzz/harfbuzz-src/src/Makefile.sources | 8 +- .../libs/harfbuzz/harfbuzz-src/src/gen-def.py | 5 +- .../libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc | 1 + .../harfbuzz-src/src/hb-aat-layout-common.hh | 1 - .../harfbuzz-src/src/hb-aat-layout-kerx-table.hh | 4 +- .../harfbuzz-src/src/hb-aat-layout-lcar-table.hh | 23 +- .../harfbuzz-src/src/hb-aat-layout-morx-table.hh | 4 +- .../harfbuzz/harfbuzz-src/src/hb-aat-layout.cc | 3 +- .../libs/harfbuzz/harfbuzz-src/src/hb-config.hh | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc | 4 +- .../libs/harfbuzz/harfbuzz-src/src/hb-debug.hh | 4 - .../libs/harfbuzz/harfbuzz-src/src/hb-dispatch.hh | 5 +- .../libs/harfbuzz/harfbuzz-src/src/hb-map.hh | 10 +- .../libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh | 13 +- .../harfbuzz-src/src/hb-ot-color-cpal-table.hh | 9 +- .../harfbuzz-src/src/hb-ot-face-table-list.hh | 5 +- .../harfbuzz/harfbuzz-src/src/hb-ot-hmtx-table.hh | 36 +- .../harfbuzz-src/src/hb-ot-layout-common.hh | 50 +- .../harfbuzz-src/src/hb-ot-layout-gdef-table.hh | 11 +- .../harfbuzz-src/src/hb-ot-layout-gpos-table.hh | 13 +- .../harfbuzz-src/src/hb-ot-layout-gsub-table.hh | 33 +- .../harfbuzz-src/src/hb-ot-layout-gsubgpos.hh | 67 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc | 167 ++- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.h | 23 +- .../harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh | 17 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-meta.cc | 2 +- .../harfbuzz-src/src/hb-ot-shape-complex-indic.cc | 3 +- .../harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh | 73 ++ .../harfbuzz-src/src/hb-ot-var-fvar-table.hh | 89 +- .../libs/harfbuzz/harfbuzz-src/src/hb-sanitize.hh | 2 - .../libs/harfbuzz/harfbuzz-src/src/hb-style.cc | 149 +++ .../libs/harfbuzz/harfbuzz-src/src/hb-style.h | 43 + .../harfbuzz/harfbuzz-src/src/hb-subset-plan.cc | 37 +- .../libs/harfbuzz/harfbuzz-src/src/hb-subset.hh | 4 +- Build/source/libs/harfbuzz/harfbuzz-src/src/hb.h | 1 + .../libs/harfbuzz/harfbuzz-src/src/meson.build | 71 +- .../harfbuzz-src/write-tarball-revision.py | 13 + Build/source/libs/harfbuzz/include/Makefile.am | 1 + Build/source/libs/harfbuzz/include/Makefile.in | 15 +- Build/source/libs/harfbuzz/version.ac | 2 +- 55 files changed, 1878 insertions(+), 508 deletions(-) create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.cc create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.h create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/write-tarball-revision.py (limited to 'Build/source/libs') diff --git a/Build/source/libs/README b/Build/source/libs/README index 05404628e63..a292ea43ad0 100644 --- a/Build/source/libs/README +++ b/Build/source/libs/README @@ -25,8 +25,8 @@ graphite2 1.3.14 - checked 10apr20 http://sourceforge.net/projects/silgraphite/files/graphite2/ (requires C++11) -harfbuzz 2.6.7 - checked 04jun20 - https://github.com/harfbuzz/harfbuzz/releases/download/2.6.7/ +harfbuzz 2.6.8 - checked 23jun20 + https://github.com/harfbuzz/harfbuzz/releases/download/2.6.8/ icu 63.1 - checked 8jan19 http://download.icu-project.org/files/icu4c/ 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 + + Import harfbuzz-2.6.8. + * Makefile.am, include/Makefile.am, version.ac: Adjusted. + 2020-06-04 Akira Kakuto 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 + + Imported harfbuzz-2.6.8 source tree from: + https://github.com/harfbuzz/harfbuzz/releases/download/2.6.8/ + 2020-06-04 Akira Kakuto 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 . # @@ -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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +Date: Fri Jun 19 10:46:12 2020 +0430 + + Merge pull request #2473 from harfbuzz/gsub-alternate + + fixes #673 + +commit 03bd3efaa7072021b702ab3f4ce8abcd1ac47d46 +Author: Ebrahim Byagowi +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 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 +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 +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 +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 +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 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/]) @@ -510,6 +510,17 @@ echo "C++ compiler version:" $CXX --version 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: @@ -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 ', 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 ', 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 (*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 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 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::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 +template 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 (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 @@ -52,6 +54,7 @@ struct hb_dispatch_context_t { return obj.dispatch (thiz (), hb_forward (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 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& _) - { - if (idx < num_advances) - { - LongMetric lm; - lm.advance = _.first; - lm.sb = _.second; - if (unlikely (!c->embed (&lm))) return; - } - else - { - FWORD *sb = c->allocate_size (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 (&lm))) return; + } + else + { + FWORD *sb = c->allocate_size (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_dispatch_context_t { - const char *get_name () { return "CLOSURE_LAYOUT_VARIATION_IDXES"; } template 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 @@ -350,11 +345,12 @@ struct RecordArrayOf : SortedArrayOf> unsigned int *record_count /* IN/OUT */, hb_tag_t *record_tags /* OUT */) const { - if (record_count) { - const Record *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::tag) + | hb_sink (hb_array (record_tags, *record_count)) + ; } return this->len; } @@ -467,11 +463,11 @@ struct IndexArray : ArrayOf 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 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 (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 (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 (face, glyphs, lookup_indexes); } + typedef GSUBGPOS::accelerator_t 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 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 &lookahead = StructAfter> (backtrack); const ArrayOf &substitute = StructAfter> (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 (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 (face, glyphs, lookup_indexes); } + typedef GSUBGPOS::accelerator_t 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_dispatch_context_t { - const char *get_name () { return "INTERSECTS"; } template 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_dispatch_context_t { - const char *get_name () { return "CLOSURE"; } typedef return_t (*recurse_func_t) (hb_closure_context_t *c, unsigned int lookup_index); template 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_dispatch_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 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_dispatch_context_t { - const char *get_name () { return "WOULD_APPLY"; } template 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_dispatch_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 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 struct hb_collect_coverage_context_t : - hb_dispatch_context_t, const Coverage &, HB_DEBUG_GET_COVERAGE> + hb_dispatch_context_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 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_dispatch_context_t { template 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 array_t; /* Dispatch interface. */ - const char *get_name () { return "GET_SUBTABLES"; } template 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; }; @@ -3276,6 +3252,21 @@ struct GSUBGPOS #endif } + template + 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 (get_lookup (lookup_index)).closure_lookups (&c, lookup_index); + + hb_set_union (lookup_indexes, &visited_lookups); + hb_set_subtract (lookup_indexes, &inactive_lookups); + } + template bool subset (hb_subset_layout_context_t *c) const { @@ -3364,7 +3355,7 @@ struct GSUBGPOS void init (hb_face_t *face) { this->table = hb_sanitize_context_t ().reference_table (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: 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. - * * 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 +{ + 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 auto + _dispatch (const T &obj, hb_priority<1>, Ts&&... ds) HB_AUTO_RETURN + ( obj.get_glyph_alternates (hb_forward (ds)...) ) + template auto + _dispatch (const T &obj, hb_priority<0>, Ts&&... ds) HB_AUTO_RETURN + ( default_return_value () ) + public: + template auto + dispatch (const T &obj, Ts&&... ds) HB_AUTO_RETURN + ( _dispatch (obj, hb_prioritize, hb_forward (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 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 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 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> 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); @@ -114,35 +139,6 @@ 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 */, @@ -150,9 +146,9 @@ struct fvar { if (axes_count) { - hb_array_t arr = hb_array (&(this+firstAxis), axisCount).sub_array (start_offset, axes_count); + hb_array_t 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 arr = hb_array (&(this+firstAxis), axisCount).sub_array (start_offset, axes_count); + hb_array_t 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 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 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 () : - 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 (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 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 gsub = hb_sanitize_context_t ().reference_table (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 gpos = hb_sanitize_context_t ().reference_table (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]) -- cgit v1.2.3