texlive[51949] Build/source/libs: harfbuzz 2.6.1

commits+kakuto at tug.org commits+kakuto at tug.org
Sat Aug 24 15:13:59 CEST 2019


Revision: 51949
          http://tug.org/svn/texlive?view=revision&revision=51949
Author:   kakuto
Date:     2019-08-24 15:13:59 +0200 (Sat, 24 Aug 2019)
Log Message:
-----------
harfbuzz 2.6.1

Modified Paths:
--------------
    trunk/Build/source/libs/README
    trunk/Build/source/libs/harfbuzz/ChangeLog
    trunk/Build/source/libs/harfbuzz/TLpatches/ChangeLog
    trunk/Build/source/libs/harfbuzz/TLpatches/TL-Changes
    trunk/Build/source/libs/harfbuzz/configure
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/README
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/README.md
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-lcar-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-trak-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.h
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.h
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-khmer.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-avar-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-fvar-table.hh
    trunk/Build/source/libs/harfbuzz/version.ac

Modified: trunk/Build/source/libs/README
===================================================================
--- trunk/Build/source/libs/README	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/README	2019-08-24 13:13:59 UTC (rev 51949)
@@ -25,7 +25,7 @@
   http://sourceforge.net/projects/silgraphite/files/graphite2/
   (requires C++11)
 
-harfbuzz 2.6.0 - checked 15aug19
+harfbuzz 2.6.1 - checked 24aug19
   http://www.freedesktop.org/software/harfbuzz/release/
 
 icu 63.1 - checked 8jan19

Modified: trunk/Build/source/libs/harfbuzz/ChangeLog
===================================================================
--- trunk/Build/source/libs/harfbuzz/ChangeLog	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/ChangeLog	2019-08-24 13:13:59 UTC (rev 51949)
@@ -1,3 +1,8 @@
+2019-08-24  Akira Kakuto  <kakuto at w32tex.org>
+
+	Import harfbuzz-2.6.1.
+	* version.ac: Adjusted.
+
 2019-08-15  Akira Kakuto  <kakuto at w32tex.org>
 
 	Import harfbuzz-2.6.0.

Modified: trunk/Build/source/libs/harfbuzz/TLpatches/ChangeLog
===================================================================
--- trunk/Build/source/libs/harfbuzz/TLpatches/ChangeLog	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/TLpatches/ChangeLog	2019-08-24 13:13:59 UTC (rev 51949)
@@ -1,3 +1,8 @@
+2019-08-24  Akira Kakuto  <kakuto at w32tex.org>
+
+	Imported harfbuzz-2.6.1 source tree from:
+	  http://www.freedesktop.org/software/harfbuzz/release/
+
 2019-08-15  Akira Kakuto  <kakuto at w32tex.org>
 
 	Imported harfbuzz-2.6.0 source tree from:

Modified: trunk/Build/source/libs/harfbuzz/TLpatches/TL-Changes
===================================================================
--- trunk/Build/source/libs/harfbuzz/TLpatches/TL-Changes	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/TLpatches/TL-Changes	2019-08-24 13:13:59 UTC (rev 51949)
@@ -1,4 +1,4 @@
-Changes applied to the harfbuzz-2.6.0/ tree as obtained from:
+Changes applied to the harfbuzz-2.6.1/ tree as obtained from:
 	http://www.freedesktop.org/software/harfbuzz/release/
 
 Removed:

Modified: trunk/Build/source/libs/harfbuzz/configure
===================================================================
--- trunk/Build/source/libs/harfbuzz/configure	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/configure	2019-08-24 13:13:59 UTC (rev 51949)
@@ -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.0.
+# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 2.6.1.
 #
 # Report bugs to <tex-k at tug.org>.
 #
@@ -580,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='harfbuzz (TeX Live)'
 PACKAGE_TARNAME='harfbuzz--tex-live-'
-PACKAGE_VERSION='2.6.0'
-PACKAGE_STRING='harfbuzz (TeX Live) 2.6.0'
+PACKAGE_VERSION='2.6.1'
+PACKAGE_STRING='harfbuzz (TeX Live) 2.6.1'
 PACKAGE_BUGREPORT='tex-k at tug.org'
 PACKAGE_URL=''
 
@@ -1311,7 +1311,7 @@
   # 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.0 to adapt to many kinds of systems.
+\`configure' configures harfbuzz (TeX Live) 2.6.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1382,7 +1382,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of harfbuzz (TeX Live) 2.6.0:";;
+     short | recursive ) echo "Configuration of harfbuzz (TeX Live) 2.6.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1487,7 +1487,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-harfbuzz (TeX Live) configure 2.6.0
+harfbuzz (TeX Live) configure 2.6.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2123,7 +2123,7 @@
 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.0, which was
+It was created by harfbuzz (TeX Live) $as_me 2.6.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -4047,7 +4047,7 @@
 
 # Define the identity of the package.
  PACKAGE='harfbuzz--tex-live-'
- VERSION='2.6.0'
+ VERSION='2.6.1'
 
 
 # Some tools Automake needs.
@@ -4241,8 +4241,8 @@
 
 HB_VERSION_MAJOR=2
 HB_VERSION_MINOR=6
-HB_VERSION_MICRO=0
-HB_VERSION=2.6.0
+HB_VERSION_MICRO=1
+HB_VERSION=2.6.1
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -7919,7 +7919,7 @@
 # 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.0, which was
+This file was extended by harfbuzz (TeX Live) $as_me 2.6.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -7985,7 +7985,7 @@
 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.0
+harfbuzz (TeX Live) config.status 2.6.1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog	2019-08-24 13:13:59 UTC (rev 51949)
@@ -1,3 +1,279 @@
+commit be97e9d678017d4ec66625fa2b17ef3485552cad
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 22 15:52:24 2019 -0700
+
+    2.6.1
+
+ NEWS             | 11 +++++++++++
+ configure.ac     |  2 +-
+ src/hb-version.h |  4 ++--
+ 3 files changed, 14 insertions(+), 3 deletions(-)
+
+commit d304d60e4d49df14ed85d6646680085f27bafbf2
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 21 12:30:22 2019 -0700
+
+    [ot-font] Prefer symbol cmap subtable if found
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/1918
+    
+    Hopefully doesn't break anyone...
+
+ src/hb-ot-cmap-table.hh | 16 +++++++++-------
+ 1 file changed, 9 insertions(+), 7 deletions(-)
+
+commit 2a3d4987a75fb2cd51ccf4c1d08baba383ceda7b
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Wed Aug 21 03:02:01 2019 +0430
+
+    Remove hb_directwrite_shape_experimental_width public API
+    
+    I had specially exposed the API as I didn't know how to embed harfbuzz
+    easily elsewhere but now with harfbuzz.cc it has become very easy
+    and I don't like to see its use anywhere as it has a bad naming and
+    its Kashida adding is bogus and only useful to check where it should
+    be added, not visually useful however.
+
+ src/hb-directwrite.cc | 29 ++++++-----------------------
+ src/hb-directwrite.h  |  5 -----
+ 2 files changed, 6 insertions(+), 28 deletions(-)
+
+commit 163a66dc737645852d7515381304d69706688e16
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Aug 20 14:22:57 2019 -0700
+
+    [test] Add test for aaa85931f3542639cd9d0dfb92fd6baab5b0298d
+
+ test/api/test-shape.c | 48 ++++++++++++++++++++++++++++++------------------
+ 1 file changed, 30 insertions(+), 18 deletions(-)
+
+commit aaa85931f3542639cd9d0dfb92fd6baab5b0298d
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Aug 20 13:06:10 2019 -0700
+
+    [font] Update multipliers when creating sub_font
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/1910
+
+ src/hb-font.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit bbad1b8298125d78c159ed7fdd7bde6a3f3fff56
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Tue Aug 20 14:46:48 2019 +0430
+
+    [trak] minor, use roundf instead round to normalize the use
+    
+    The change to `round` wasn't intended
+
+ src/hb-aat-layout-trak-table.hh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit e67cb500e9c5f6717d0d1cd152de84d88ec7370e
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Tue Aug 20 13:30:34 2019 +0430
+
+    [readme] add oss-fuzz badge
+    
+    Related:
+    https://github.com/google/oss-fuzz/pull/2513
+    https://github.com/systemd/systemd/commit/ce2098b7e9443cd6f31fb70af7f72308cd2962a3
+
+ README.md | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit d59d89b28128cf644d76098c709b9309b834eb09
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Tue Aug 20 13:07:17 2019 +0430
+
+    [test] Rebase 10.14 trak related test
+
+ test/shaping/data/in-house/tests/macos.tests | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 20b1a27c8a319d43a582c3efa8233b9f2c3cc73e
+Merge: 5ee1e451 37de38ad
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Tue Aug 20 13:04:51 2019 +0430
+
+    Merge remove-coretext-96dpi-assumption, @drott
+    
+    Remove assumption about Core Text working in 96 DPI
+
+commit 37de38adeae48e1855c2431a39639db873a74554
+Merge: f401f85a 5ee1e451
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Tue Aug 20 12:59:33 2019 +0430
+
+    Merge branch 'master' into remove-coretext-96dpi-assumption
+
+commit 5ee1e451cfc75dc6ddbc3ae300ba7394a0cd560e
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Aug 19 14:23:17 2019 -0700
+
+    Minor touch-up for recent change
+
+ src/hb-ot-var-avar-table.hh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 33489928444b94bdd2cc523dac14707eb29d667e
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Wed Aug 7 20:07:58 2019 +0430
+
+    [avar] Implement inverse map, unmap
+
+ src/hb-ot-var-avar-table.hh | 30 ++++++++++++++++++++++++------
+ 1 file changed, 24 insertions(+), 6 deletions(-)
+
+commit 981f5a54c3cbc1de45ba941fdf5315c62d86b6f3
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Wed Aug 7 18:45:39 2019 +0430
+
+    [fvar] Implement inverse normalize, unnormalize
+
+ src/hb-ot-var-fvar-table.hh | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+commit dcb4cd400fb44172872a20ba54baa011d748b61d
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Aug 19 11:35:37 2019 -0700
+
+    Minor
+
+ src/hb-font.cc | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+commit ca54440324745afc388edac40ad1047e92567fdb
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Sun Aug 18 11:58:04 2019 +0430
+
+    Remove continuous development helper script
+    
+    Not have used it personally for a long time, lets remove it
+
+ src/dev-run.sh | 99 ----------------------------------------------------------
+ 1 file changed, 99 deletions(-)
+
+commit 40aef1b473f63701ab901880d764e33682f13414
+Author: Khaled Hosny <khaledhosny at eglug.org>
+Date:   Fri Aug 16 01:00:30 2019 +0200
+
+    [ot-shape] Keep horizontal_features array sorted
+
+ src/hb-ot-shape.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit da5118da77898ae4778af1ace4af52334b210dd6
+Author: Khaled Hosny <khaledhosny at eglug.org>
+Date:   Fri Aug 16 00:48:26 2019 +0200
+
+    [ot-shape] Enable abvm/blwm features by default
+    
+    Core Text seems to apply them to Latin text, but Uniscribe doesn’t.
+    
+    See https://github.com/harfbuzz/harfbuzz/pull/1908#issuecomment-521819343
+
+ src/hb-ot-shape-complex-indic.cc                   |   9 ---------
+ src/hb-ot-shape-complex-khmer.cc                   |   9 ---------
+ src/hb-ot-shape-complex-myanmar.cc                 |  21 ---------------------
+ src/hb-ot-shape-complex-use.cc                     |  14 --------------
+ src/hb-ot-shape.cc                                 |   2 ++
+ test/shaping/data/in-house/Makefile.sources        |   2 +-
+ .../ea3f63620511b2097200d23774ffef197e829e69.ttf   | Bin 0 -> 1804 bytes
+ .../f79eb71df4e4c9c273b67b89a06e5ff9e3c1f834.ttf   | Bin 0 -> 1860 bytes
+ test/shaping/data/in-house/tests/dist.tests        |   1 -
+ .../data/in-house/tests/positioning-features.tests |   3 +++
+ 10 files changed, 6 insertions(+), 55 deletions(-)
+
+commit 2164bd6f29df265acdc04b84f5f94cf63b2cea8a
+Author: Khaled Hosny <khaledhosny at eglug.org>
+Date:   Fri Aug 16 00:28:41 2019 +0200
+
+    [ot-shape] Enable dist feature by default (#1908)
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/1907
+
+ src/hb-ot-shape-complex-indic.cc                         |   2 --
+ src/hb-ot-shape-complex-khmer.cc                         |   2 --
+ src/hb-ot-shape-complex-myanmar.cc                       |   1 -
+ src/hb-ot-shape-complex-use.cc                           |   1 -
+ src/hb-ot-shape.cc                                       |   1 +
+ test/shaping/data/in-house/Makefile.sources              |   1 +
+ .../fonts/53a91c20e33a596f2be17fb68b382d6b7eb85d5c.ttf   | Bin 0 -> 2020 bytes
+ test/shaping/data/in-house/tests/dist.tests              |   1 +
+ 8 files changed, 3 insertions(+), 6 deletions(-)
+
+commit bc27f86ffef537835f6c9dbbecbc2ee6792cb127
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Wed Aug 14 22:37:00 2019 +0430
+
+    Move HB_NO_VAR to a better place in hb-font.cc
+    
+    Needed for other works
+
+ src/hb-font.cc | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+commit 1cc844da66ab527991ff96efdf10d97f6b626bfe
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Wed Aug 14 19:10:02 2019 +0430
+
+    minor
+    
+    Use hb_font_t coords directly
+
+ src/hb-ot-cff2-table.cc | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+commit 6a194b6876db12f083ae5391ca01972168d4e68a
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Wed Aug 14 18:49:57 2019 +0430
+
+    Minor, remove trailing spaces in hb-font.{cc,h} as .editorconfig
+
+ src/hb-font.cc | 338 ++++++++++++++++++++++++++++-----------------------------
+ src/hb-font.h  |  26 ++---
+ 2 files changed, 182 insertions(+), 182 deletions(-)
+
+commit 3ae44645d60fe8271ad18b004434d475eaeb7ad6
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Wed Aug 14 14:34:55 2019 +0430
+
+    Fix caret_count value when AAT is disabled
+    
+    Set caret_count to zero as that is what we want to happen inside lcar when
+    there is no result.
+
+ src/hb-ot-layout.cc | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+commit a5aa67b9f288687e21ca7a9887483f7fe1cbce54
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Wed Aug 14 14:29:01 2019 +0430
+
+    [lcar] Use multiformat convention
+
+ src/hb-aat-layout-lcar-table.hh | 115 +++++++++++++++++++++++++++++++---------
+ 1 file changed, 90 insertions(+), 25 deletions(-)
+
+commit bfffe85dd7d7557e10ec9f9886b86fe0d8b4a7a2
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Wed Aug 14 13:55:49 2019 +0430
+
+    [opbd] Use multiformat convention on the table
+
+ src/hb-aat-layout-opbd-table.hh | 116 ++++++++++++++++++++++++++++++----------
+ 1 file changed, 89 insertions(+), 27 deletions(-)
+
+commit d6206dbcc4e4ef8c034ee714e74d3a76c5333a12
+Author: Ebrahim Byagowi <ebrahim at gnu.org>
+Date:   Wed Aug 14 11:24:06 2019 +0430
+
+    [opbd] Turn OpticalBounds fields to FWORD
+
+ src/hb-aat-layout-opbd-table.hh | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
 commit 6461143b44f81a4190d3f1cb02238750536f08e4
 Author: Behdad Esfahbod <behdad at behdad.org>
 Date:   Tue Aug 13 22:20:54 2019 -0700
@@ -15661,6 +15937,49 @@
  src/hb-machinery.hh | 10 +++-------
  1 file changed, 3 insertions(+), 7 deletions(-)
 
+commit f401f85a5a3ec4ab9c28012a0bfe713d7ee96951
+Author: Tor Arne Vestbø <tor.arne.vestbo at qt.io>
+Date:   Mon Dec 17 00:48:35 2018 +0100
+
+    Remove assumption about Core Text working in 96 DPI
+    
+    Core Text doesn't actually have a concept of DPI internally, as it
+    doesn't rasterize anything by itself, it just generates vector paths
+    that get passed along to Core Graphics.
+    
+    In practice this means Core Text operates in the classical macOS
+    logical DPI of 72, with one typographic point corresponding to one
+    point in the Core Graphics coordinate system, which for a normal
+    bitmap context then corresponds to one pixel -- or two pixels for
+    a "retina" context with a 2x scale transform.
+    
+    Scaling the font point sizes given to HarfBuzz to an assumed DPI
+    of 96 is problematic with this in mind, as fonts with optical
+    features such as 'trak' tables for tracking, or color glyphs,
+    will then base the metrics off of the wrong point size compared
+    to what the client asked for.
+    
+    This in turn causes mismatches between the metrics of the shaped
+    text and the actual rasterization, which doesn't include the 72
+    to 96 DPI scaling.
+    
+    If a 96 DPI is needed, such as on the Web, the scaling should be
+    done outside of HarfBuzz, allowing the client to keep the DPI of
+    the shaping in sync with the rasterization.
+    
+    The recommended way to do that is by scaling the font point size,
+    not by applying a transform to the target Core Graphics context,
+    to let Core Text choose the right optical features of the target
+    point size, as described in WWDC 2015 session 804:
+    
+      https://developer.apple.com/videos/play/wwdc2015/804/
+
+ src/hb-aat-layout-trak-table.hh                 | 11 ++---------
+ src/hb-coretext.cc                              | 25 ++++---------------------
+ test/shaping/data/in-house/tests/aat-trak.tests | 14 +++++++-------
+ test/shaping/data/in-house/tests/macos.tests    |  4 ++--
+ 4 files changed, 15 insertions(+), 39 deletions(-)
+
 commit 0d2727f4fe734af146785df10a44e3505e410ba1
 Author: Behdad Esfahbod <behdad at behdad.org>
 Date:   Mon Jan 14 18:23:17 2019 -0800

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/NEWS	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/NEWS	2019-08-24 13:13:59 UTC (rev 51949)
@@ -1,3 +1,14 @@
+Overview of changes leading to 2.6.1
+Thursday, August 22, 2019
+====================================
+- Fix regression with hb_font_create_sub_font scaling introduced in 2.6.0.
+- Change interpretation of font PTEM size / CoreText font size handling.
+  See https://github.com/harfbuzz/harfbuzz/pull/1484
+- hb-ot-font: Prefer symbol cmap subtable if present.
+- Apply 'dist'/'abvm'/'blwm' features to all scripts.
+- Drop experimental DirectWrite API.
+
+
 Overview of changes leading to 2.6.0
 Tuesday, August 13, 2019
 ====================================

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/README
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/README	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/README	2019-08-24 13:13:59 UTC (rev 51949)
@@ -1,6 +1,7 @@
 [![Travis Build Status](https://travis-ci.org/harfbuzz/harfbuzz.svg?branch=master)](https://travis-ci.org/harfbuzz/harfbuzz)
 [![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/0t0flrxpstj9lb9w?svg=true&branch=master)](https://ci.appveyor.com/project/harfbuzz/harfbuzz)
 [![CircleCI Build Status](https://circleci.com/gh/harfbuzz/harfbuzz/tree/master.svg?style=svg)](https://circleci.com/gh/harfbuzz/harfbuzz/tree/master)
+[![OSS-Fuzz Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/harfbuzz.svg)](https://oss-fuzz-build-logs.storage.googleapis.com/index.html)
 [![Coverity Code Health](https://img.shields.io/coverity/scan/5450.svg)](https://scan.coverity.com/projects/behdad-harfbuzz)
 [![Codacy Code Health](https://api.codacy.com/project/badge/Grade/f17f1708783c447488bc8dd317150eaa)](https://app.codacy.com/app/behdad/harfbuzz)
 [![Codecov Code Coverage](https://codecov.io/gh/harfbuzz/harfbuzz/branch/master/graph/badge.svg)](https://codecov.io/gh/harfbuzz/harfbuzz)

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/README.md
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/README.md	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/README.md	2019-08-24 13:13:59 UTC (rev 51949)
@@ -1,6 +1,7 @@
 [![Travis Build Status](https://travis-ci.org/harfbuzz/harfbuzz.svg?branch=master)](https://travis-ci.org/harfbuzz/harfbuzz)
 [![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/0t0flrxpstj9lb9w?svg=true&branch=master)](https://ci.appveyor.com/project/harfbuzz/harfbuzz)
 [![CircleCI Build Status](https://circleci.com/gh/harfbuzz/harfbuzz/tree/master.svg?style=svg)](https://circleci.com/gh/harfbuzz/harfbuzz/tree/master)
+[![OSS-Fuzz Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/harfbuzz.svg)](https://oss-fuzz-build-logs.storage.googleapis.com/index.html)
 [![Coverity Code Health](https://img.shields.io/coverity/scan/5450.svg)](https://scan.coverity.com/projects/behdad-harfbuzz)
 [![Codacy Code Health](https://api.codacy.com/project/badge/Grade/f17f1708783c447488bc8dd317150eaa)](https://app.codacy.com/app/behdad/harfbuzz)
 [![Codecov Code Coverage](https://codecov.io/gh/harfbuzz/harfbuzz/branch/master/graph/badge.svg)](https://codecov.io/gh/harfbuzz/harfbuzz)

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac	2019-08-24 13:13:59 UTC (rev 51949)
@@ -1,6 +1,6 @@
 AC_PREREQ([2.64])
 AC_INIT([HarfBuzz],
-        [2.6.0],
+        [2.6.1],
         [https://github.com/harfbuzz/harfbuzz/issues/new],
         [harfbuzz],
         [http://harfbuzz.org/])

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-lcar-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-lcar-table.hh	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-lcar-table.hh	2019-08-24 13:13:59 UTC (rev 51949)
@@ -38,56 +38,121 @@
 
 typedef ArrayOf<HBINT16> LigCaretClassEntry;
 
-struct lcar
+struct lcarFormat0
 {
-  static constexpr hb_tag_t tableTag = HB_AAT_TAG_lcar;
+  unsigned int get_lig_carets (hb_font_t      *font,
+			       hb_direction_t  direction,
+			       hb_codepoint_t  glyph,
+			       unsigned int    start_offset,
+			       unsigned int   *caret_count /* IN/OUT */,
+			       hb_position_t  *caret_array /* OUT */,
+			       const void     *base) const
+  {
+    const OffsetTo<LigCaretClassEntry>* entry_offset = lookupTable.get_value (glyph,
+									      font->face->get_num_glyphs ());
+    const LigCaretClassEntry& array = entry_offset ? base+*entry_offset : Null (LigCaretClassEntry);
+    if (caret_count)
+    {
+      hb_array_t<const HBINT16> arr = array.sub_array (start_offset, caret_count);
+      for (unsigned int i = 0; i < arr.length; ++i)
+	caret_array[i] = font->em_scale_dir (arr[i], direction);
+    }
+    return array.len;
+  }
 
+  bool sanitize (hb_sanitize_context_t *c, const void *base) const
+  {
+    TRACE_SANITIZE (this);
+    return_trace (likely (c->check_struct (this) && lookupTable.sanitize (c, base)));
+  }
+
+  protected:
+  Lookup<OffsetTo<LigCaretClassEntry>>
+		lookupTable;	/* data Lookup table associating glyphs */
+  public:
+  DEFINE_SIZE_MIN (2);
+};
+
+struct lcarFormat1
+{
   unsigned int get_lig_carets (hb_font_t      *font,
 			       hb_direction_t  direction,
 			       hb_codepoint_t  glyph,
 			       unsigned int    start_offset,
 			       unsigned int   *caret_count /* IN/OUT */,
-			       hb_position_t  *caret_array /* OUT */) const
+			       hb_position_t  *caret_array /* OUT */,
+			       const void     *base) const
   {
-    const OffsetTo<LigCaretClassEntry>* entry_offset = lookup.get_value (glyph,
-									 font->face->get_num_glyphs ());
-    const LigCaretClassEntry& array = entry_offset ? this+*entry_offset : Null (LigCaretClassEntry);
+    const OffsetTo<LigCaretClassEntry>* entry_offset = lookupTable.get_value (glyph,
+									      font->face->get_num_glyphs ());
+    const LigCaretClassEntry& array = entry_offset ? base+*entry_offset : Null (LigCaretClassEntry);
     if (caret_count)
     {
       hb_array_t<const HBINT16> arr = array.sub_array (start_offset, caret_count);
-      switch (format)
+      for (unsigned int i = 0; i < arr.length; ++i)
       {
-      case 0:
-	for (unsigned int i = 0; i < arr.length; ++i)
-	  caret_array[i] = font->em_scale_dir (arr[i], direction);
-	break;
-      case 1:
-	for (unsigned int i = 0; i < arr.length; ++i)
-	{
-	  hb_position_t x, y;
-	  font->get_glyph_contour_point_for_origin (glyph, arr[i], direction, &x, &y);
-	  caret_array[i] = HB_DIRECTION_IS_HORIZONTAL (direction) ? x : y;
-	}
-	break;
+	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;
       }
     }
     return array.len;
   }
 
+  bool sanitize (hb_sanitize_context_t *c, const void *base) const
+  {
+    TRACE_SANITIZE (this);
+    return_trace (likely (c->check_struct (this) && lookupTable.sanitize (c, base)));
+  }
+
+  protected:
+  Lookup<OffsetTo<LigCaretClassEntry>>
+		lookupTable;	/* data Lookup table associating glyphs */
+  public:
+  DEFINE_SIZE_MIN (2);
+};
+
+struct lcar
+{
+  static constexpr hb_tag_t tableTag = HB_AAT_TAG_lcar;
+
+  unsigned int get_lig_carets (hb_font_t      *font,
+			       hb_direction_t  direction,
+			       hb_codepoint_t  glyph,
+			       unsigned int    start_offset,
+			       unsigned int   *caret_count /* IN/OUT */,
+			       hb_position_t  *caret_array /* OUT */) const
+  {
+    switch (format)
+    {
+    case 0: return u.format0.get_lig_carets (font, direction, glyph, start_offset,
+					     caret_count, caret_array, this);
+    case 1: return u.format1.get_lig_carets (font, direction, glyph, start_offset,
+					     caret_count, caret_array, this);
+    default:if (caret_count) *caret_count = 0; return 0;
+    }
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
-    return_trace (likely (c->check_struct (this) &&
-			  version.major == 1 &&
-			  lookup.sanitize (c, this)));
+    if (unlikely (!c->check_struct (this) || version.major != 1))
+      return_trace (false);
+
+    switch (format) {
+    case 0: return_trace (u.format0.sanitize (c, this));
+    case 1: return_trace (u.format1.sanitize (c, this));
+    default:return_trace (true);
+    }
   }
 
   protected:
   FixedVersion<>version;	/* Version number of the ligature caret table */
   HBUINT16	format;		/* Format of the ligature caret table. */
-  Lookup<OffsetTo<LigCaretClassEntry>>
-		lookup;		/* data Lookup table associating glyphs */
-
+  union {
+  lcarFormat0	format0;
+  lcarFormat0	format1;
+  } u;
   public:
   DEFINE_SIZE_MIN (8);
 };

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh	2019-08-24 13:13:59 UTC (rev 51949)
@@ -45,50 +45,112 @@
     return_trace (likely (c->check_struct (this)));
   }
 
-  HBINT16	leftSide;
-  HBINT16	topSide;
-  HBINT16	rightSide;
-  HBINT16	bottomSide;
+  FWORD		leftSide;
+  FWORD		topSide;
+  FWORD		rightSide;
+  FWORD		bottomSide;
   public:
   DEFINE_SIZE_STATIC (8);
 };
 
-struct opbd
+struct opbdFormat0
 {
-  static constexpr hb_tag_t tableTag = HB_AAT_TAG_opbd;
+  bool get_bounds (hb_font_t *font, hb_codepoint_t glyph_id,
+		   hb_glyph_extents_t *extents, const void *base) const
+  {
+    const OffsetTo<OpticalBounds> *bounds_offset = lookupTable.get_value (glyph_id, font->face->get_num_glyphs ());
+    if (!bounds_offset) return false;
+    const OpticalBounds &bounds = base+*bounds_offset;
 
-  bool get_optical_bounds (hb_font_t *font, hb_codepoint_t glyph_id,
-			   hb_position_t *left, hb_position_t *top,
-			   hb_position_t *right, hb_position_t *bottom) const
+    if (extents)
+      *extents = {
+	font->em_scale_x (bounds.leftSide),
+	font->em_scale_y (bounds.topSide),
+	font->em_scale_x (bounds.rightSide),
+	font->em_scale_y (bounds.bottomSide)
+      };
+    return true;
+  }
+
+  bool sanitize (hb_sanitize_context_t *c, const void *base) const
   {
+    TRACE_SANITIZE (this);
+    return_trace (likely (c->check_struct (this) && lookupTable.sanitize (c, base)));
+  }
+
+  protected:
+  Lookup<OffsetTo<OpticalBounds>>
+		lookupTable;	/* Lookup table associating glyphs with the four
+				 * int16 values for the left-side, top-side,
+				 * right-side, and bottom-side optical bounds. */
+  public:
+  DEFINE_SIZE_MIN (2);
+};
+
+struct opbdFormat1
+{
+  bool get_bounds (hb_font_t *font, hb_codepoint_t glyph_id,
+		   hb_glyph_extents_t *extents, const void *base) const
+  {
     const OffsetTo<OpticalBounds> *bounds_offset = lookupTable.get_value (glyph_id, font->face->get_num_glyphs ());
     if (!bounds_offset) return false;
-    const OpticalBounds &bounds = this+*bounds_offset;
-    switch (format)
+    const OpticalBounds &bounds = base+*bounds_offset;
+
+    hb_position_t left = 0, top = 0, right = 0, bottom = 0, ignore;
+    if (font->get_glyph_contour_point (glyph_id, bounds.leftSide, &left, &ignore) ||
+	font->get_glyph_contour_point (glyph_id, bounds.topSide, &ignore, &top) ||
+	font->get_glyph_contour_point (glyph_id, bounds.rightSide, &right, &ignore) ||
+	font->get_glyph_contour_point (glyph_id, bounds.bottomSide, &ignore, &bottom))
     {
-    case 0:
-      *left = font->em_scale_x (bounds.leftSide);
-      *top = font->em_scale_y (bounds.topSide);
-      *right = font->em_scale_x (bounds.rightSide);
-      *bottom = font->em_scale_y (bounds.bottomSide);
+      if (extents)
+	*extents = {left, top, right, bottom};
       return true;
-    case 1:
-      hb_position_t ignore;
-      return font->get_glyph_contour_point (glyph_id, bounds.leftSide, left, &ignore) &&
-	     font->get_glyph_contour_point (glyph_id, bounds.topSide, &ignore, top) &&
-	     font->get_glyph_contour_point (glyph_id, bounds.rightSide, right, &ignore) &&
-	     font->get_glyph_contour_point (glyph_id, bounds.bottomSide, &ignore, bottom);
-    default:
-      return false;
     }
+    return false;
   }
 
+  bool sanitize (hb_sanitize_context_t *c, const void *base) const
+  {
+    TRACE_SANITIZE (this);
+    return_trace (likely (c->check_struct (this) && lookupTable.sanitize (c, base)));
+  }
+
+  protected:
+  Lookup<OffsetTo<OpticalBounds>>
+		lookupTable;	/* Lookup table associating glyphs with the four
+				 * int16 values for the left-side, top-side,
+				 * right-side, and bottom-side optical bounds. */
+  public:
+  DEFINE_SIZE_MIN (2);
+};
+
+struct opbd
+{
+  static constexpr hb_tag_t tableTag = HB_AAT_TAG_opbd;
+
+  bool get_bounds (hb_font_t *font, hb_codepoint_t glyph_id,
+		   hb_glyph_extents_t *extents) const
+  {
+    switch (format)
+    {
+    case 0: return u.format0.get_bounds (font, glyph_id, extents, this);
+    case 1: return u.format1.get_bounds (font, glyph_id, extents, this);
+    default:return false;
+    }
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
-    return_trace (likely (c->check_struct (this) &&
-			  version.major == 1 &&
-			  lookupTable.sanitize (c, this)));
+    if (unlikely (!c->check_struct (this) || version.major != 1))
+      return_trace (false);
+
+    switch (format)
+    {
+    case 0: return_trace (u.format0.sanitize (c, this));
+    case 1: return_trace (u.format1.sanitize (c, this));
+    default:return_trace (true);
+    }
   }
 
   protected:
@@ -97,10 +159,10 @@
   HBUINT16	format;		/* Format of the optical bounds table.
 				 * Format 0 indicates distance and Format 1 indicates
 				 * control point. */
-  Lookup<OffsetTo<OpticalBounds>>
-		lookupTable;	/* Lookup table associating glyphs with the four
-				 * int16 values for the left-side, top-side,
-				 * right-side, and bottom-side optical bounds. */
+  union {
+  opbdFormat0 format0;
+  opbdFormat1 format1;
+  } u;
   public:
   DEFINE_SIZE_MIN (8);
 };

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-trak-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-trak-table.hh	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-trak-table.hh	2019-08-24 13:13:59 UTC (rev 51949)
@@ -93,13 +93,6 @@
 
   int get_tracking (const void *base, float ptem) const
   {
-    /* CoreText points are CSS pixels (96 per inch),
-     * NOT typographic points (72 per inch).
-     *
-     * https://developer.apple.com/library/content/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html
-     */
-    float csspx = ptem * 96.f / 72.f;
-
     /*
      * Choose track.
      */
@@ -130,10 +123,10 @@
     hb_array_t<const Fixed> size_table ((base+sizeTable).arrayZ, sizes);
     unsigned int size_index;
     for (size_index = 0; size_index < sizes - 1; size_index++)
-      if (size_table[size_index].to_float () >= csspx)
+      if (size_table[size_index].to_float () >= ptem)
         break;
 
-    return roundf (interpolate_at (size_index ? size_index - 1 : 0, csspx,
+    return roundf (interpolate_at (size_index ? size_index - 1 : 0, ptem,
 				   *trackTableEntry, base));
   }
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc	2019-08-24 13:13:59 UTC (rev 51949)
@@ -49,24 +49,6 @@
 /* https://developer.apple.com/documentation/coretext/1508745-ctfontcreatewithgraphicsfont */
 #define HB_CORETEXT_DEFAULT_FONT_SIZE 12.f
 
-static CGFloat
-coretext_font_size_from_ptem (float ptem)
-{
-  /* CoreText points are CSS pixels (96 per inch),
-   * NOT typographic points (72 per inch).
-   *
-   * https://developer.apple.com/library/content/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html
-   */
-  ptem *= 96.f / 72.f;
-  return (CGFloat) (ptem <= 0.f ? HB_CORETEXT_DEFAULT_FONT_SIZE : ptem);
-}
-static float
-coretext_font_size_to_ptem (CGFloat size)
-{
-  size *= 72. / 96.;
-  return size <= 0 ? 0 : size;
-}
-
 static void
 release_table_data (void *user_data)
 {
@@ -320,7 +302,8 @@
   if (unlikely (!face_data)) return nullptr;
   CGFontRef cg_font = (CGFontRef) (const void *) face->data.coretext;
 
-  CTFontRef ct_font = create_ct_font (cg_font, coretext_font_size_from_ptem (font->ptem));
+  CGFloat font_size = font->ptem <= 0.f ? HB_CORETEXT_DEFAULT_FONT_SIZE : font->ptem;
+  CTFontRef ct_font = create_ct_font (cg_font, font_size);
 
   if (unlikely (!ct_font))
   {
@@ -344,7 +327,7 @@
   const hb_coretext_font_data_t *data = font->data.coretext;
   if (unlikely (!data)) return nullptr;
 
-  if (fabs (CTFontGetSize((CTFontRef) data) - coretext_font_size_from_ptem (font->ptem)) > .5)
+  if (fabs (CTFontGetSize ((CTFontRef) data) - font->ptem) > .5)
   {
     /* XXX-MT-bug
      * Note that evaluating condition above can be dangerous if another thread
@@ -384,7 +367,7 @@
   if (unlikely (hb_object_is_immutable (font)))
     return font;
 
-  hb_font_set_ptem (font, coretext_font_size_to_ptem (CTFontGetSize(ct_font)));
+  hb_font_set_ptem (font, CTFontGetSize (ct_font));
 
   /* Let there be dragons here... */
   font->data.coretext.cmpexch (nullptr, (hb_coretext_font_data_t *) CFRetain (ct_font));

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc	2019-08-24 13:13:59 UTC (rev 51949)
@@ -879,29 +879,12 @@
 				     features, num_features, 0);
 }
 
-/**
- * hb_directwrite_shape_experimental_width:
- * Experimental API to test DirectWrite's justification algorithm.
- *
- * It inserts Kashida at wrong order so don't use the API ever.
- *
- * It doesn't work with cygwin/msys due to header bugs so one
- * should use MSVC toolchain in order to use it for now.
- *
- * @font:
- * @buffer:
- * @features:
- * @num_features:
- * @width:
- *
- * Since: 1.4.2
- **/
-hb_bool_t
-hb_directwrite_shape_experimental_width (hb_font_t          *font,
-					 hb_buffer_t        *buffer,
-					 const hb_feature_t *features,
-					 unsigned int        num_features,
-					 float               width)
+HB_UNUSED static bool
+_hb_directwrite_shape_experimental_width (hb_font_t          *font,
+					  hb_buffer_t        *buffer,
+					  const hb_feature_t *features,
+					  unsigned int        num_features,
+					  float               width)
 {
   static const char *shapers = "directwrite";
   hb_shape_plan_t *shape_plan;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.h
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.h	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.h	2019-08-24 13:13:59 UTC (rev 51949)
@@ -29,11 +29,6 @@
 
 HB_BEGIN_DECLS
 
-HB_EXTERN hb_bool_t
-hb_directwrite_shape_experimental_width (hb_font_t *font, hb_buffer_t *buffer,
-					 const hb_feature_t *features,
-					 unsigned int num_features, float width);
-
 HB_EXTERN hb_face_t *
 hb_directwrite_face_create (IDWriteFontFace *font_face);
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc	2019-08-24 13:13:59 UTC (rev 51949)
@@ -518,10 +518,10 @@
 /**
  * hb_font_funcs_create: (Xconstructor)
  *
- * 
  *
- * Return value: (transfer full): 
  *
+ * Return value: (transfer full):
+ *
  * Since: 0.9.2
  **/
 hb_font_funcs_t *
@@ -540,10 +540,10 @@
 /**
  * hb_font_funcs_get_empty:
  *
- * 
  *
- * Return value: (transfer full): 
  *
+ * Return value: (transfer full):
+ *
  * Since: 0.9.2
  **/
 hb_font_funcs_t *
@@ -556,10 +556,10 @@
  * hb_font_funcs_reference: (skip)
  * @ffuncs: font functions.
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_font_funcs_t *
@@ -572,8 +572,8 @@
  * hb_font_funcs_destroy: (skip)
  * @ffuncs: font functions.
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -592,15 +592,15 @@
 /**
  * hb_font_funcs_set_user_data: (skip)
  * @ffuncs: font functions.
- * @key: 
- * @data: 
- * @destroy: 
- * @replace: 
+ * @key:
+ * @data:
+ * @destroy:
+ * @replace:
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_bool_t
@@ -616,12 +616,12 @@
 /**
  * hb_font_funcs_get_user_data: (skip)
  * @ffuncs: font functions.
- * @key: 
+ * @key:
  *
- * 
  *
- * Return value: (transfer none): 
  *
+ * Return value: (transfer none):
+ *
  * Since: 0.9.2
  **/
 void *
@@ -636,8 +636,8 @@
  * hb_font_funcs_make_immutable:
  * @ffuncs: font functions.
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -653,10 +653,10 @@
  * hb_font_funcs_is_immutable:
  * @ffuncs: font functions.
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_bool_t
@@ -751,14 +751,14 @@
 /**
  * hb_font_get_glyph:
  * @font: a font.
- * @unicode: 
- * @variation_selector: 
- * @glyph: (out): 
+ * @unicode:
+ * @variation_selector:
+ * @glyph: (out):
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_bool_t
@@ -774,13 +774,13 @@
 /**
  * hb_font_get_nominal_glyph:
  * @font: a font.
- * @unicode: 
- * @glyph: (out): 
+ * @unicode:
+ * @glyph: (out):
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 1.2.3
  **/
 hb_bool_t
@@ -794,14 +794,14 @@
 /**
  * hb_font_get_variation_glyph:
  * @font: a font.
- * @unicode: 
- * @variation_selector: 
- * @glyph: (out): 
+ * @unicode:
+ * @variation_selector:
+ * @glyph: (out):
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 1.2.3
  **/
 hb_bool_t
@@ -815,12 +815,12 @@
 /**
  * hb_font_get_glyph_h_advance:
  * @font: a font.
- * @glyph: 
+ * @glyph:
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_position_t
@@ -833,12 +833,12 @@
 /**
  * hb_font_get_glyph_v_advance:
  * @font: a font.
- * @glyph: 
+ * @glyph:
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_position_t
@@ -852,8 +852,8 @@
  * hb_font_get_glyph_h_advances:
  * @font: a font.
  *
- * 
  *
+ *
  * Since: 1.8.6
  **/
 void
@@ -870,8 +870,8 @@
  * hb_font_get_glyph_v_advances:
  * @font: a font.
  *
- * 
  *
+ *
  * Since: 1.8.6
  **/
 void
@@ -888,14 +888,14 @@
 /**
  * hb_font_get_glyph_h_origin:
  * @font: a font.
- * @glyph: 
- * @x: (out): 
- * @y: (out): 
+ * @glyph:
+ * @x: (out):
+ * @y: (out):
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_bool_t
@@ -909,14 +909,14 @@
 /**
  * hb_font_get_glyph_v_origin:
  * @font: a font.
- * @glyph: 
- * @x: (out): 
- * @y: (out): 
+ * @glyph:
+ * @x: (out):
+ * @y: (out):
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_bool_t
@@ -930,13 +930,13 @@
 /**
  * hb_font_get_glyph_h_kerning:
  * @font: a font.
- * @left_glyph: 
- * @right_glyph: 
+ * @left_glyph:
+ * @right_glyph:
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_position_t
@@ -950,13 +950,13 @@
 /**
  * hb_font_get_glyph_v_kerning:
  * @font: a font.
- * @top_glyph: 
- * @bottom_glyph: 
+ * @top_glyph:
+ * @bottom_glyph:
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  * Deprecated: 2.0.0
  **/
@@ -971,13 +971,13 @@
 /**
  * hb_font_get_glyph_extents:
  * @font: a font.
- * @glyph: 
- * @extents: (out): 
+ * @glyph:
+ * @extents: (out):
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_bool_t
@@ -991,15 +991,15 @@
 /**
  * hb_font_get_glyph_contour_point:
  * @font: a font.
- * @glyph: 
- * @point_index: 
- * @x: (out): 
- * @y: (out): 
+ * @glyph:
+ * @point_index:
+ * @x: (out):
+ * @y: (out):
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_bool_t
@@ -1013,14 +1013,14 @@
 /**
  * hb_font_get_glyph_name:
  * @font: a font.
- * @glyph: 
- * @name: (array length=size): 
- * @size: 
+ * @glyph:
+ * @name: (array length=size):
+ * @size:
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_bool_t
@@ -1034,14 +1034,14 @@
 /**
  * hb_font_get_glyph_from_name:
  * @font: a font.
- * @name: (array length=len): 
- * @len: 
- * @glyph: (out): 
+ * @name: (array length=len):
+ * @len:
+ * @glyph: (out):
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_bool_t
@@ -1075,13 +1075,13 @@
 /**
  * hb_font_get_glyph_advance_for_direction:
  * @font: a font.
- * @glyph: 
- * @direction: 
- * @x: (out): 
- * @y: (out): 
+ * @glyph:
+ * @direction:
+ * @x: (out):
+ * @y: (out):
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -1095,10 +1095,10 @@
 /**
  * hb_font_get_glyph_advances_for_direction:
  * @font: a font.
- * @direction: 
+ * @direction:
  *
- * 
  *
+ *
  * Since: 1.8.6
  **/
 HB_EXTERN void
@@ -1116,13 +1116,13 @@
 /**
  * hb_font_get_glyph_origin_for_direction:
  * @font: a font.
- * @glyph: 
- * @direction: 
- * @x: (out): 
- * @y: (out): 
+ * @glyph:
+ * @direction:
+ * @x: (out):
+ * @y: (out):
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -1137,13 +1137,13 @@
 /**
  * hb_font_add_glyph_origin_for_direction:
  * @font: a font.
- * @glyph: 
- * @direction: 
- * @x: (out): 
- * @y: (out): 
+ * @glyph:
+ * @direction:
+ * @x: (out):
+ * @y: (out):
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -1158,13 +1158,13 @@
 /**
  * hb_font_subtract_glyph_origin_for_direction:
  * @font: a font.
- * @glyph: 
- * @direction: 
- * @x: (out): 
- * @y: (out): 
+ * @glyph:
+ * @direction:
+ * @x: (out):
+ * @y: (out):
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -1179,14 +1179,14 @@
 /**
  * hb_font_get_glyph_kerning_for_direction:
  * @font: a font.
- * @first_glyph: 
- * @second_glyph: 
- * @direction: 
- * @x: (out): 
- * @y: (out): 
+ * @first_glyph:
+ * @second_glyph:
+ * @direction:
+ * @x: (out):
+ * @y: (out):
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -1201,14 +1201,14 @@
 /**
  * hb_font_get_glyph_extents_for_origin:
  * @font: a font.
- * @glyph: 
- * @direction: 
- * @extents: (out): 
+ * @glyph:
+ * @direction:
+ * @extents: (out):
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_bool_t
@@ -1223,16 +1223,16 @@
 /**
  * hb_font_get_glyph_contour_point_for_origin:
  * @font: a font.
- * @glyph: 
- * @point_index: 
- * @direction: 
- * @x: (out): 
- * @y: (out): 
+ * @glyph:
+ * @point_index:
+ * @direction:
+ * @x: (out):
+ * @y: (out):
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_bool_t
@@ -1248,12 +1248,12 @@
 /**
  * hb_font_glyph_to_string:
  * @font: a font.
- * @glyph: 
- * @s: (array length=size): 
- * @size: 
+ * @glyph:
+ * @s: (array length=size):
+ * @size:
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -1268,14 +1268,14 @@
 /**
  * hb_font_glyph_from_string:
  * @font: a font.
- * @s: (array length=len) (element-type uint8_t): 
- * @len: 
- * @glyph: (out): 
+ * @s: (array length=len) (element-type uint8_t):
+ * @len:
+ * @glyph: (out):
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_bool_t
@@ -1341,10 +1341,10 @@
  * hb_font_create: (Xconstructor)
  * @face: a face.
  *
- * 
  *
- * Return value: (transfer full): 
  *
+ * Return value: (transfer full):
+ *
  * Since: 0.9.2
  **/
 hb_font_t *
@@ -1364,10 +1364,10 @@
  * hb_font_create_sub_font:
  * @parent: parent font.
  *
- * 
  *
- * Return value: (transfer full): 
  *
+ * Return value: (transfer full):
+ *
  * Since: 0.9.2
  **/
 hb_font_t *
@@ -1385,14 +1385,13 @@
 
   font->x_scale = parent->x_scale;
   font->y_scale = parent->y_scale;
+  font->mults_changed ();
   font->x_ppem = parent->x_ppem;
   font->y_ppem = parent->y_ppem;
   font->ptem = parent->ptem;
 
   font->num_coords = parent->num_coords;
-  if (!font->num_coords)
-    font->coords = nullptr;
-  else
+  if (font->num_coords)
   {
     unsigned int size = parent->num_coords * sizeof (parent->coords[0]);
     font->coords = (int *) malloc (size);
@@ -1408,8 +1407,8 @@
 /**
  * hb_font_get_empty:
  *
- * 
  *
+ *
  * Return value: (transfer full)
  *
  * Since: 0.9.2
@@ -1424,10 +1423,10 @@
  * hb_font_reference: (skip)
  * @font: a font.
  *
- * 
  *
- * Return value: (transfer full): 
  *
+ * Return value: (transfer full):
+ *
  * Since: 0.9.2
  **/
 hb_font_t *
@@ -1440,8 +1439,8 @@
  * hb_font_destroy: (skip)
  * @font: a font.
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -1466,15 +1465,15 @@
 /**
  * hb_font_set_user_data: (skip)
  * @font: a font.
- * @key: 
- * @data: 
- * @destroy: 
- * @replace: 
+ * @key:
+ * @data:
+ * @destroy:
+ * @replace:
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_bool_t
@@ -1490,12 +1489,12 @@
 /**
  * hb_font_get_user_data: (skip)
  * @font: a font.
- * @key: 
+ * @key:
  *
- * 
  *
- * Return value: (transfer none): 
  *
+ * Return value: (transfer none):
+ *
  * Since: 0.9.2
  **/
 void *
@@ -1509,8 +1508,8 @@
  * hb_font_make_immutable:
  * @font: a font.
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -1529,10 +1528,10 @@
  * hb_font_is_immutable:
  * @font: a font.
  *
- * 
  *
- * Return value: 
  *
+ * Return value:
+ *
  * Since: 0.9.2
  **/
 hb_bool_t
@@ -1571,10 +1570,10 @@
  * hb_font_get_parent:
  * @font: a font.
  *
- * 
  *
- * Return value: (transfer none): 
  *
+ * Return value: (transfer none):
+ *
  * Since: 0.9.2
  **/
 hb_font_t *
@@ -1615,10 +1614,10 @@
  * hb_font_get_face:
  * @font: a font.
  *
- * 
  *
- * Return value: (transfer none): 
  *
+ * Return value: (transfer none):
+ *
  * Since: 0.9.2
  **/
 hb_face_t *
@@ -1632,11 +1631,11 @@
  * hb_font_set_funcs:
  * @font: a font.
  * @klass: (closure font_data) (destroy destroy) (scope notified):
- * @font_data: 
- * @destroy: 
+ * @font_data:
+ * @destroy:
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -1669,10 +1668,10 @@
  * hb_font_set_funcs_data:
  * @font: a font.
  * @font_data: (destroy destroy) (scope notified):
- * @destroy: 
+ * @destroy:
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -1699,11 +1698,11 @@
 /**
  * hb_font_set_scale:
  * @font: a font.
- * @x_scale: 
- * @y_scale: 
+ * @x_scale:
+ * @y_scale:
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -1722,11 +1721,11 @@
 /**
  * hb_font_get_scale:
  * @font: a font.
- * @x_scale: (out): 
- * @y_scale: (out): 
+ * @x_scale: (out):
+ * @y_scale: (out):
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -1741,11 +1740,11 @@
 /**
  * hb_font_set_ppem:
  * @font: a font.
- * @x_ppem: 
- * @y_ppem: 
+ * @x_ppem:
+ * @y_ppem:
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -1763,11 +1762,11 @@
 /**
  * hb_font_get_ppem:
  * @font: a font.
- * @x_ppem: (out): 
- * @y_ppem: (out): 
+ * @x_ppem: (out):
+ * @y_ppem: (out):
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 void
@@ -1815,6 +1814,7 @@
   return font->ptem;
 }
 
+#ifndef HB_NO_VAR
 /*
  * Variations
  */
@@ -1830,7 +1830,6 @@
   font->num_coords = coords_length;
 }
 
-#ifndef HB_NO_VAR
 /**
  * hb_font_set_variations:
  *
@@ -1909,7 +1908,6 @@
   hb_font_set_var_coords_design (font, coords, coords_length);
   free (coords);
 }
-#endif
 
 /**
  * hb_font_set_var_coords_normalized:
@@ -1951,8 +1949,8 @@
 
   return font->coords;
 }
+#endif
 
-
 #ifndef HB_DISABLE_DEPRECATED
 /*
  * Deprecated get_glyph_func():

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.h
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.h	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.h	2019-08-24 13:13:59 UTC (rev 51949)
@@ -224,8 +224,8 @@
  * @user_data:
  * @destroy:
  *
- * 
  *
+ *
  * Since: 1.2.3
  **/
 HB_EXTERN void
@@ -256,8 +256,8 @@
  * @user_data:
  * @destroy:
  *
- * 
  *
+ *
  * Since: 1.2.3
  **/
 HB_EXTERN void
@@ -272,8 +272,8 @@
  * @user_data:
  * @destroy:
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 HB_EXTERN void
@@ -288,8 +288,8 @@
  * @user_data:
  * @destroy:
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 HB_EXTERN void
@@ -304,8 +304,8 @@
  * @user_data:
  * @destroy:
  *
- * 
  *
+ *
  * Since: 1.8.6
  **/
 HB_EXTERN void
@@ -320,8 +320,8 @@
  * @user_data:
  * @destroy:
  *
- * 
  *
+ *
  * Since: 1.8.6
  **/
 HB_EXTERN void
@@ -336,8 +336,8 @@
  * @user_data:
  * @destroy:
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 HB_EXTERN void
@@ -352,8 +352,8 @@
  * @user_data:
  * @destroy:
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 HB_EXTERN void
@@ -368,8 +368,8 @@
  * @user_data:
  * @destroy:
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 HB_EXTERN void
@@ -384,8 +384,8 @@
  * @user_data:
  * @destroy:
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 HB_EXTERN void
@@ -400,8 +400,8 @@
  * @user_data:
  * @destroy:
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 HB_EXTERN void
@@ -416,8 +416,8 @@
  * @user_data:
  * @destroy:
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 HB_EXTERN void
@@ -432,8 +432,8 @@
  * @user_data:
  * @destroy:
  *
- * 
  *
+ *
  * Since: 0.9.2
  **/
 HB_EXTERN void

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.cc	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.cc	2019-08-24 13:13:59 UTC (rev 51949)
@@ -110,12 +110,10 @@
 
   if (unlikely (!is_valid () || (glyph >= num_glyphs))) return false;
 
-  unsigned int num_coords;
-  const int *coords = hb_font_get_var_coords_normalized (font, &num_coords);
   unsigned int fd = fdSelect->get_fd (glyph);
   cff2_cs_interpreter_t<cff2_cs_opset_extents_t, cff2_extents_param_t> interp;
   const byte_str_t str = (*charStrings)[glyph];
-  interp.env.init (str, *this, fd, coords, num_coords);
+  interp.env.init (str, *this, fd, font->coords, font->num_coords);
   cff2_extents_param_t  param;
   param.init ();
   if (unlikely (!interp.interpret (param))) return false;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh	2019-08-24 13:13:59 UTC (rev 51949)
@@ -993,6 +993,15 @@
 
     const CmapSubtable *subtable;
 
+    /* Symbol subtable.
+     * Prefer symbol if available.
+     * https://github.com/harfbuzz/harfbuzz/issues/1918 */
+    if ((subtable = this->find_subtable (3, 0)))
+    {
+      if (symbol) *symbol = true;
+      return subtable;
+    }
+
     /* 32-bit subtables. */
     if ((subtable = this->find_subtable (3, 10))) return subtable;
     if ((subtable = this->find_subtable (0, 6))) return subtable;
@@ -1005,13 +1014,6 @@
     if ((subtable = this->find_subtable (0, 1))) return subtable;
     if ((subtable = this->find_subtable (0, 0))) return subtable;
 
-    /* Symbol subtable. */
-    if ((subtable = this->find_subtable (3, 0)))
-    {
-      if (symbol) *symbol = true;
-      return subtable;
-    }
-
     /* Meh. */
     return &Null (CmapSubtable);
   }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc	2019-08-24 13:13:59 UTC (rev 51949)
@@ -375,10 +375,14 @@
   {
     if (caret_count) *caret_count = result_caret_count;
   }
+  else
+  {
 #ifndef HB_NO_AAT
-  else
     result = font->face->table.lcar->get_lig_carets (font, direction, glyph, start_offset, caret_count, caret_array);
+#else
+    if (caret_count) *caret_count = 0;
 #endif
+  }
   return result;
 }
 #endif

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc	2019-08-24 13:13:59 UTC (rev 51949)
@@ -131,13 +131,6 @@
   {HB_TAG('b','l','w','s'), F_GLOBAL_MANUAL_JOINERS},
   {HB_TAG('p','s','t','s'), F_GLOBAL_MANUAL_JOINERS},
   {HB_TAG('h','a','l','n'), F_GLOBAL_MANUAL_JOINERS},
-  /*
-   * Positioning features.
-   * We don't care about the types.
-   */
-  {HB_TAG('d','i','s','t'), F_GLOBAL},
-  {HB_TAG('a','b','v','m'), F_GLOBAL},
-  {HB_TAG('b','l','w','m'), F_GLOBAL},
 };
 
 /*
@@ -163,10 +156,6 @@
   _INDIC_PSTS,
   _INDIC_HALN,
 
-  _INDIC_DIST,
-  _INDIC_ABVM,
-  _INDIC_BLWM,
-
   INDIC_NUM_FEATURES,
   INDIC_BASIC_FEATURES = INDIC_INIT, /* Don't forget to update this! */
 };

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-khmer.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-khmer.cc	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-khmer.cc	2019-08-24 13:13:59 UTC (rev 51949)
@@ -56,13 +56,6 @@
   {HB_TAG('a','b','v','s'), F_GLOBAL_MANUAL_JOINERS},
   {HB_TAG('b','l','w','s'), F_GLOBAL_MANUAL_JOINERS},
   {HB_TAG('p','s','t','s'), F_GLOBAL_MANUAL_JOINERS},
-  /*
-   * Positioning features.
-   * We don't care about the types.
-   */
-  {HB_TAG('d','i','s','t'), F_GLOBAL},
-  {HB_TAG('a','b','v','m'), F_GLOBAL},
-  {HB_TAG('b','l','w','m'), F_GLOBAL},
 };
 
 /*
@@ -80,10 +73,6 @@
   _KHMER_BLWS,
   _KHMER_PSTS,
 
-  _KHMER_DIST,
-  _KHMER_ABVM,
-  _KHMER_BLWM,
-
   KHMER_NUM_FEATURES,
   KHMER_BASIC_FEATURES = _KHMER_PRES, /* Don't forget to update this! */
 };

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar.cc	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar.cc	2019-08-24 13:13:59 UTC (rev 51949)
@@ -59,25 +59,6 @@
   HB_TAG('b','l','w','s'),
   HB_TAG('p','s','t','s'),
 };
-static const hb_tag_t
-myanmar_positioning_features[] =
-{
-  /*
-   * Positioning features.
-   * We don't care about the types.
-   */
-  HB_TAG('d','i','s','t'),
-  /* Pre-release version of Windows 8 Myanmar font had abvm,blwm
-   * features.  The released Windows 8 version of the font (as well
-   * as the released spec) used 'mark' instead.  The Windows 8
-   * shaper however didn't apply 'mark' but did apply 'mkmk'.
-   * Perhaps it applied abvm/blwm.  This was fixed in a Windows 8
-   * update, so now it applies mark/mkmk.  We are guessing that
-   * it still applies abvm/blwm too.
-   */
-  HB_TAG('a','b','v','m'),
-  HB_TAG('b','l','w','m'),
-};
 
 static void
 setup_syllables_myanmar (const hb_ot_shape_plan_t *plan,
@@ -114,9 +95,6 @@
 
   for (unsigned int i = 0; i < ARRAY_LENGTH (myanmar_other_features); i++)
     map->enable_feature (myanmar_other_features[i], F_MANUAL_ZWJ);
-
-  for (unsigned int i = 0; i < ARRAY_LENGTH (myanmar_positioning_features); i++)
-    map->enable_feature (myanmar_positioning_features[i]);
 }
 
 static void

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc	2019-08-24 13:13:59 UTC (rev 51949)
@@ -88,17 +88,6 @@
   HB_TAG('p','r','e','s'),
   HB_TAG('p','s','t','s'),
 };
-static const hb_tag_t
-use_positioning_features[] =
-{
-  /*
-   * Positioning features.
-   * We don't care about the types.
-   */
-  HB_TAG('d','i','s','t'),
-  HB_TAG('a','b','v','m'),
-  HB_TAG('b','l','w','m'),
-};
 
 static void
 setup_syllables_use (const hb_ot_shape_plan_t *plan,
@@ -154,10 +143,6 @@
   /* "Standard typographic presentation" */
   for (unsigned int i = 0; i < ARRAY_LENGTH (use_other_features); i++)
     map->enable_feature (use_other_features[i], F_MANUAL_ZWJ);
-
-  /* "Positional feature application" */
-  for (unsigned int i = 0; i < ARRAY_LENGTH (use_positioning_features); i++)
-    map->enable_feature (use_positioning_features[i]);
 }
 
 struct use_shape_plan_t

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc	2019-08-24 13:13:59 UTC (rev 51949)
@@ -285,6 +285,8 @@
 static const hb_ot_map_feature_t
 common_features[] =
 {
+  {HB_TAG('a','b','v','m'), F_GLOBAL},
+  {HB_TAG('b','l','w','m'), F_GLOBAL},
   {HB_TAG('c','c','m','p'), F_GLOBAL},
   {HB_TAG('l','o','c','l'), F_GLOBAL},
   {HB_TAG('m','a','r','k'), F_GLOBAL_MANUAL_JOINERS},
@@ -299,6 +301,7 @@
   {HB_TAG('c','a','l','t'), F_GLOBAL},
   {HB_TAG('c','l','i','g'), F_GLOBAL},
   {HB_TAG('c','u','r','s'), F_GLOBAL},
+  {HB_TAG('d','i','s','t'), F_GLOBAL},
   {HB_TAG('k','e','r','n'), F_GLOBAL_HAS_FALLBACK},
   {HB_TAG('l','i','g','a'), F_GLOBAL},
   {HB_TAG('r','c','l','t'), F_GLOBAL},

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-avar-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-avar-table.hh	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-avar-table.hh	2019-08-24 13:13:59 UTC (rev 51949)
@@ -49,9 +49,10 @@
   }
 
   public:
-  F2DOT14	fromCoord;	/* A normalized coordinate value obtained using
-				 * default normalization. */
-  F2DOT14	toCoord;	/* The modified, normalized coordinate value. */
+  F2DOT14	coords[2];
+//   F2DOT14	fromCoord;	/* A normalized coordinate value obtained using
+// 				 * default normalization. */
+//   F2DOT14	toCoord;	/* The modified, normalized coordinate value. */
 
   public:
   DEFINE_SIZE_STATIC (4);
@@ -59,12 +60,13 @@
 
 struct SegmentMaps : ArrayOf<AxisValueMap>
 {
-  int map (int value) const
+  int map (int value, unsigned int from_offset = 0, unsigned int to_offset = 1) const
   {
+#define fromCoord coords[from_offset]
+#define toCoord coords[to_offset]
     /* The following special-cases are not part of OpenType, which requires
      * that at least -1, 0, and +1 must be mapped. But we include these as
      * part of a better error recovery scheme. */
-
     if (len < 2)
     {
       if (!len)
@@ -91,8 +93,12 @@
     return arrayZ[i-1].toCoord +
 	   ((arrayZ[i].toCoord - arrayZ[i-1].toCoord) *
 	    (value - arrayZ[i-1].fromCoord) + denom/2) / denom;
+#undef toCoord
+#undef fromCoord
   }
 
+  int unmap (int value) const { return map (value, 1, 0); }
+
   public:
   DEFINE_SIZE_ARRAY (2, *this);
 };
@@ -133,6 +139,18 @@
     }
   }
 
+  void unmap_coords (int *coords, unsigned int coords_length) const
+  {
+    unsigned int count = hb_min (coords_length, axisCount);
+
+    const SegmentMaps *map = &firstAxisSegmentMaps;
+    for (unsigned int i = 0; i < count; i++)
+    {
+      coords[i] = map->unmap (coords[i]);
+      map = &StructAfter<SegmentMaps> (*map);
+    }
+  }
+
   protected:
   FixedVersion<>version;	/* Version of the avar table
 				 * initially set to 0x00010000u */
@@ -140,7 +158,7 @@
   HBUINT16	axisCount;	/* The number of variation axes in the font. This
 				 * must be the same number as axisCount in the
 				 * 'fvar' table. */
-  SegmentMaps   firstAxisSegmentMaps;
+  SegmentMaps	firstAxisSegmentMaps;
 
   public:
   DEFINE_SIZE_MIN (8);

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-fvar-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-fvar-table.hh	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-fvar-table.hh	2019-08-24 13:13:59 UTC (rev 51949)
@@ -240,6 +240,20 @@
     return roundf (v * 16384.f);
   }
 
+  float unnormalize_axis_value (unsigned int axis_index, float v) const
+  {
+    hb_ot_var_axis_info_t axis;
+    get_axis_info (axis_index, &axis);
+
+    if (v == 0)
+      return axis.default_value;
+    else if (v < 0)
+      v = v * (axis.default_value - axis.min_value) / 16384.f + axis.default_value;
+    else
+      v = v * (axis.max_value - axis.default_value) / 16384.f + axis.default_value;
+    return v;
+  }
+
   unsigned int get_instance_count () const { return instanceCount; }
 
   hb_ot_name_id_t get_instance_subfamily_name_id (unsigned int instance_index) const

Modified: trunk/Build/source/libs/harfbuzz/version.ac
===================================================================
--- trunk/Build/source/libs/harfbuzz/version.ac	2019-08-24 10:48:43 UTC (rev 51948)
+++ trunk/Build/source/libs/harfbuzz/version.ac	2019-08-24 13:13:59 UTC (rev 51949)
@@ -8,4 +8,4 @@
 dnl --------------------------------------------------------
 dnl
 dnl  m4-include this file to define the current harfbuzz version
-m4_define([harfbuzz_version], [2.6.0])
+m4_define([harfbuzz_version], [2.6.1])



More information about the tex-live-commits mailing list