Hello community,

here is the log from the commit of package harfbuzz for openSUSE:Factory 
checked in at 2019-11-29 15:57:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/harfbuzz (Old)
 and      /work/SRC/openSUSE:Factory/.harfbuzz.new.26869 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "harfbuzz"

Fri Nov 29 15:57:28 2019 rev:72 rq:750951 version:2.6.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/harfbuzz/harfbuzz.changes        2019-11-17 
19:21:46.306901239 +0100
+++ /work/SRC/openSUSE:Factory/.harfbuzz.new.26869/harfbuzz.changes     
2019-11-29 16:01:19.904844441 +0100
@@ -1,0 +2,6 @@
+Sun Nov 24 17:43:36 UTC 2019 - Andreas Stieger <[email protected]>
+
+- update to 2.6.4:
+  + small bug fixes and build fixes
+
+-------------------------------------------------------------------

Old:
----
  harfbuzz-2.6.3.tar.xz
  harfbuzz-2.6.3.tar.xz.sha256.asc

New:
----
  harfbuzz-2.6.4.tar.xz
  harfbuzz-2.6.4.tar.xz.sha256.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ harfbuzz.spec ++++++
--- /var/tmp/diff_new_pack.tPGdRr/_old  2019-11-29 16:01:20.704844113 +0100
+++ /var/tmp/diff_new_pack.tPGdRr/_new  2019-11-29 16:01:20.704844113 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           harfbuzz
-Version:        2.6.3
+Version:        2.6.4
 Release:        0
 Summary:        An OpenType text shaping engine
 License:        MIT

++++++ harfbuzz-2.6.3.tar.xz -> harfbuzz-2.6.4.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/ChangeLog new/harfbuzz-2.6.4/ChangeLog
--- old/harfbuzz-2.6.3/ChangeLog        2019-10-28 22:47:23.000000000 +0100
+++ new/harfbuzz-2.6.4/ChangeLog        2019-10-29 20:50:01.000000000 +0100
@@ -1,3 +1,130 @@
+commit 3a74ee528255cc027d84b204a87b5c25e47bff79
+Author: Behdad Esfahbod <[email protected]>
+Date:   Tue Oct 29 12:27:03 2019 -0700
+
+    2.6.4
+
+ NEWS             | 7 +++++++
+ configure.ac     | 2 +-
+ src/hb-version.h | 4 ++--
+ 3 files changed, 10 insertions(+), 3 deletions(-)
+
+commit 3958f6fb2378d83dd5107d62a8464187c93707b0
+Author: Ebrahim Byagowi <[email protected]>
+Date:   Tue Oct 29 22:36:50 2019 +0330
+
+    Add in_range in hb_bytes_t to merge range_checker_t with it
+
+ src/hb-array.hh             |  9 +++++++++
+ src/hb-ot-glyf-table.hh     | 28 ++++++++++++--------------
+ src/hb-ot-var-gvar-table.hh | 49 +++++++++++++++------------------------------
+ 3 files changed, 38 insertions(+), 48 deletions(-)
+
+commit 7915c5d6fa3efac99df08a54d4437eca0b780033
+Author: Ebrahim Byagowi <[email protected]>
+Date:   Tue Oct 29 22:55:34 2019 +0330
+
+    [ci] Check the recipt introduce in 7152ac3
+
+ .circleci/config.yml | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit aa3831e295540083350c640d4a630f53e70d822f
+Author: Ebrahim Byagowi <[email protected]>
+Date:   Tue Oct 29 21:37:07 2019 +0330
+
+    [glyf] Use contour_bounds_t::empty to simplify get_extents logic
+
+ src/hb-ot-glyf-table.hh | 20 ++++++--------------
+ 1 file changed, 6 insertions(+), 14 deletions(-)
+
+commit d59ae5836d1349b885db980cbb741da33caebfde
+Author: Ebrahim Byagowi <[email protected]>
+Date:   Tue Oct 29 21:30:04 2019 +0330
+
+    [glyf] Refactor contour_bounds_t use to make its fields protected
+
+ src/hb-ot-glyf-table.hh | 47 ++++++++++++++++++++++++++---------------------
+ 1 file changed, 26 insertions(+), 21 deletions(-)
+
+commit 773ee8041e8905bfb06c1a71d2b4fc99110b3dc6
+Merge: 47b4074d 0efbda7a
+Author: Behdad Esfahbod <[email protected]>
+Date:   Tue Oct 29 10:58:56 2019 -0700
+
+    Merge pull request #2038 from ebraminio/glyf-contour
+    
+    Remove contour_point_t so we won't need to zero its unused var
+
+commit 0efbda7a40742cbdf30d5a85061ffb6a0a55bcc0
+Author: Ebrahim Byagowi <[email protected]>
+Date:   Tue Oct 29 21:03:26 2019 +0330
+
+    Remove contour_point_t so we won't need to zero its unused var
+
+ src/hb-ot-glyf-table.hh | 27 +++++++++++++--------------
+ 1 file changed, 13 insertions(+), 14 deletions(-)
+
+commit 47b4074d5f98d71d2983470602eff9b93f102af4
+Merge: dd8a8460 dd288840
+Author: Behdad Esfahbod <[email protected]>
+Date:   Tue Oct 29 03:16:34 2019 -0700
+
+    Merge pull request #2034 from khaledhosny/cmap-notdef
+    
+    [cmap] Check GID before adding ranges in format 4 & 12
+
+commit dd8a8460377ca54207877ea9da96931175dbb15f
+Author: jfkthame <[email protected]>
+Date:   Tue Oct 29 09:20:41 2019 +0000
+
+    Use proper y-scale factor for height value
+
+ src/hb-ot-cff1-table.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 7152ac3fcfe8a599aa0d20f8d02ef38c69111231
+Author: Behdad Esfahbod <[email protected]>
+Date:   Mon Oct 28 17:12:55 2019 -0700
+
+    Fix build
+    
+    $ make CPPFLAGS="-DHB_TINY -DHB_NO_OT_FONT" libharfbuzz-subset.la
+
+ src/hb-subset-plan.cc | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit dd288840d6f87acd13b99b71408dcdb35a2be9cb
+Author: Khaled Hosny <[email protected]>
+Date:   Tue Oct 29 01:45:49 2019 +0200
+
+    [cmap] Check GID before adding ranges in format 4 & 12
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/2031
+
+ src/hb-ot-cmap-table.hh          |  32 ++++++++++++++++++++++++--------
+ test/api/fonts/cmunrm.otf        | Bin 0 -> 330492 bytes
+ test/api/test-collect-unicodes.c |  22 ++++++++++++++++++++++
+ 3 files changed, 46 insertions(+), 8 deletions(-)
+
+commit fd71c045b46380281ba8a7e351fac7248938c74c
+Author: Behdad Esfahbod <[email protected]>
+Date:   Mon Oct 28 17:06:53 2019 -0700
+
+    Hopefully fix up previous commit and bots
+
+ src/hb.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e832dc4c642f604d2cbb8e6b2f0b8d37151936f1
+Author: Behdad Esfahbod <[email protected]>
+Date:   Mon Oct 28 17:02:40 2019 -0700
+
+    [config] Make HB_NO_ERRNO work with systems defining errno as a macro
+
+ src/hb.hh | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
 commit ce11df1b5b8e49712bef249de19bc4768f3a691c
 Author: Behdad Esfahbod <[email protected]>
 Date:   Mon Oct 28 14:45:31 2019 -0700
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/NEWS new/harfbuzz-2.6.4/NEWS
--- old/harfbuzz-2.6.3/NEWS     2019-10-28 22:46:59.000000000 +0100
+++ new/harfbuzz-2.6.4/NEWS     2019-10-29 20:49:28.000000000 +0100
@@ -1,3 +1,10 @@
+Overview of changes leading to 2.6.4
+Monday, October 29, 2019
+====================================
+- Small bug fix.
+- Build fixes.
+
+
 Overview of changes leading to 2.6.3
 Monday, October 28, 2019
 ====================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/configure new/harfbuzz-2.6.4/configure
--- old/harfbuzz-2.6.3/configure        2019-10-28 22:47:05.000000000 +0100
+++ new/harfbuzz-2.6.4/configure        2019-10-29 20:49:49.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for HarfBuzz 2.6.3.
+# Generated by GNU Autoconf 2.69 for HarfBuzz 2.6.4.
 #
 # Report bugs to <https://github.com/harfbuzz/harfbuzz/issues/new>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='HarfBuzz'
 PACKAGE_TARNAME='harfbuzz'
-PACKAGE_VERSION='2.6.3'
-PACKAGE_STRING='HarfBuzz 2.6.3'
+PACKAGE_VERSION='2.6.4'
+PACKAGE_STRING='HarfBuzz 2.6.4'
 PACKAGE_BUGREPORT='https://github.com/harfbuzz/harfbuzz/issues/new'
 PACKAGE_URL='http://harfbuzz.org/'
 
@@ -1485,7 +1485,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 2.6.3 to adapt to many kinds of systems.
+\`configure' configures HarfBuzz 2.6.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1555,7 +1555,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of HarfBuzz 2.6.3:";;
+     short | recursive ) echo "Configuration of HarfBuzz 2.6.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1739,7 +1739,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-HarfBuzz configure 2.6.3
+HarfBuzz configure 2.6.4
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2557,7 +2557,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 $as_me 2.6.3, which was
+It was created by HarfBuzz $as_me 2.6.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3426,7 +3426,7 @@
 
 # Define the identity of the package.
  PACKAGE='harfbuzz'
- VERSION='2.6.3'
+ VERSION='2.6.4'
 
 
 # Some tools Automake needs.
@@ -19316,8 +19316,8 @@
 
 HB_VERSION_MAJOR=2
 HB_VERSION_MINOR=6
-HB_VERSION_MICRO=3
-HB_VERSION=2.6.3
+HB_VERSION_MICRO=4
+HB_VERSION=2.6.4
 
 
 
@@ -19328,7 +19328,7 @@
 
 
 
-HB_LIBTOOL_VERSION_INFO=20600:3:20600
+HB_LIBTOOL_VERSION_INFO=20600:4:20600
 
 
 
@@ -22621,7 +22621,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by HarfBuzz $as_me 2.6.3, which was
+This file was extended by HarfBuzz $as_me 2.6.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -22688,7 +22688,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 config.status 2.6.3
+HarfBuzz config.status 2.6.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/configure.ac 
new/harfbuzz-2.6.4/configure.ac
--- old/harfbuzz-2.6.3/configure.ac     2019-10-28 22:46:59.000000000 +0100
+++ new/harfbuzz-2.6.4/configure.ac     2019-10-29 20:49:28.000000000 +0100
@@ -1,6 +1,6 @@
 AC_PREREQ([2.64])
 AC_INIT([HarfBuzz],
-        [2.6.3],
+        [2.6.4],
         [https://github.com/harfbuzz/harfbuzz/issues/new],
         [harfbuzz],
         [http://harfbuzz.org/])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/docs/harfbuzz-docs.xml 
new/harfbuzz-2.6.4/docs/harfbuzz-docs.xml
--- old/harfbuzz-2.6.3/docs/harfbuzz-docs.xml   2019-08-14 06:25:46.000000000 
+0200
+++ new/harfbuzz-2.6.4/docs/harfbuzz-docs.xml   2019-08-14 07:10:53.000000000 
+0200
@@ -130,8 +130,8 @@
          <xi:include href="xml/tree_index.sgml"/>
       </chapter-->
 
-      <index id="deprecated-api-index" role="deprecated"><title>Index of 
deprecated API</title><xi:include 
href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include></index>
       <index id="api-index-full"><title>API Index</title><xi:include 
href="xml/api-index-full.xml"><xi:fallback /></xi:include></index>
+      <index id="deprecated-api-index" role="deprecated"><title>Index of 
deprecated API</title><xi:include 
href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include></index>
 
       <index id="api-index-2-6-0" role="2.6.0"><title>Index of new symbols in 
2.6.0</title><xi:include href="xml/api-index-2.6.0.xml"><xi:fallback 
/></xi:include></index>
       <index id="api-index-2-5-0" role="2.5.0"><title>Index of new symbols in 
2.5.0</title><xi:include href="xml/api-index-2.5.0.xml"><xi:fallback 
/></xi:include></index>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/docs/harfbuzz-sections.txt 
new/harfbuzz-2.6.4/docs/harfbuzz-sections.txt
--- old/harfbuzz-2.6.3/docs/harfbuzz-sections.txt       2019-10-28 
22:47:49.000000000 +0100
+++ new/harfbuzz-2.6.4/docs/harfbuzz-sections.txt       2019-10-29 
20:50:32.000000000 +0100
@@ -612,14 +612,14 @@
 
 <SECTION>
 <FILE>hb-ot-meta</FILE>
-hb_ot_meta_t
+hb_ot_meta_tag_t
 hb_ot_meta_get_entry_tags
 hb_ot_meta_reference_entry
 </SECTION>
 
 <SECTION>
 <FILE>hb-ot-metrics</FILE>
-hb_ot_metrics_t
+hb_ot_metrics_tag_t
 hb_ot_metrics_get_position
 hb_ot_metrics_get_variation
 hb_ot_metrics_get_x_variation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/docs/html/api-index-full.html 
new/harfbuzz-2.6.4/docs/html/api-index-full.html
--- old/harfbuzz-2.6.3/docs/html/api-index-full.html    2019-10-28 
22:47:49.000000000 +0100
+++ new/harfbuzz-2.6.4/docs/html/api-index-full.html    2019-10-29 
20:50:32.000000000 +0100
@@ -6,8 +6,8 @@
 <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
 <link rel="home" href="index.html" title="HarfBuzz Manual">
 <link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="deprecated-api-index.html" title="Index of deprecated 
API">
-<link rel="next" href="api-index-2-6-0.html" title="Index of new symbols in 
2.6.0">
+<link rel="prev" href="harfbuzz-hb-uniscribe.html" title="hb-uniscribe">
+<link rel="next" href="deprecated-api-index.html" title="Index of deprecated 
API">
 <meta name="generator" content="GTK-Doc V1.29 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -46,8 +46,8 @@
                   <a class="shortcut" href="#idxV">V</a></span></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" 
height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" 
border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="deprecated-api-index.html"><img src="left.png" 
width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-2-6-0.html"><img src="right.png" 
width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-uniscribe.html"><img src="left.png" 
width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="deprecated-api-index.html"><img src="right.png" 
width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="index">
 <div class="titlepage"><div><div><h2 class="title">
@@ -1799,6 +1799,10 @@
 </dt>
 <dd></dd>
 <dt>
+hb_ot_meta_tag_t, enum in hb-ot-meta
+</dt>
+<dd></dd>
+<dt>
 hb_ot_metrics_get_position, function in hb-ot-metrics
 </dt>
 <dd></dd>
@@ -1815,6 +1819,10 @@
 </dt>
 <dd></dd>
 <dt>
+hb_ot_metrics_tag_t, enum in hb-ot-metrics
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-get-utf16" 
title="hb_ot_name_get_utf16 ()">hb_ot_name_get_utf16</a>, function in <a 
class="link" href="harfbuzz-hb-ot-name.html" title="hb-ot-name">hb-ot-name</a>
 </dt>
 <dd></dd>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/docs/html/harfbuzz-hb-uniscribe.html 
new/harfbuzz-2.6.4/docs/html/harfbuzz-hb-uniscribe.html
--- old/harfbuzz-2.6.3/docs/html/harfbuzz-hb-uniscribe.html     2019-10-28 
22:47:49.000000000 +0100
+++ new/harfbuzz-2.6.4/docs/html/harfbuzz-hb-uniscribe.html     2019-10-29 
20:50:32.000000000 +0100
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="HarfBuzz Manual">
 <link rel="up" href="ch14.html" title="Integration API">
 <link rel="prev" href="harfbuzz-hb-icu.html" title="hb-icu">
-<link rel="next" href="deprecated-api-index.html" title="Index of deprecated 
API">
+<link rel="next" href="api-index-full.html" title="API Index">
 <meta name="generator" content="GTK-Doc V1.29 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -20,7 +20,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" 
height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch14.html"><img src="up.png" width="16" height="16" 
border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="harfbuzz-hb-icu.html"><img src="left.png" 
width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="deprecated-api-index.html"><img src="right.png" 
width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="api-index-full.html"><img src="right.png" 
width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="harfbuzz-hb-uniscribe"></a><div class="titlepage"></div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/docs/html/harfbuzz-hb-version.html 
new/harfbuzz-2.6.4/docs/html/harfbuzz-hb-version.html
--- old/harfbuzz-2.6.3/docs/html/harfbuzz-hb-version.html       2019-10-28 
22:47:49.000000000 +0100
+++ new/harfbuzz-2.6.4/docs/html/harfbuzz-hb-version.html       2019-10-29 
20:50:32.000000000 +0100
@@ -184,7 +184,7 @@
 <hr>
 <div class="refsect2">
 <a name="HB-VERSION-MICRO:CAPS"></a><h3>HB_VERSION_MICRO</h3>
-<pre class="programlisting">#define HB_VERSION_MICRO 3
+<pre class="programlisting">#define HB_VERSION_MICRO 4
 </pre>
 </div>
 <hr>
@@ -196,7 +196,7 @@
 <hr>
 <div class="refsect2">
 <a name="HB-VERSION-STRING:CAPS"></a><h3>HB_VERSION_STRING</h3>
-<pre class="programlisting">#define HB_VERSION_STRING "2.6.3"
+<pre class="programlisting">#define HB_VERSION_STRING "2.6.4"
 </pre>
 </div>
 </div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/docs/html/harfbuzz.devhelp2 
new/harfbuzz-2.6.4/docs/html/harfbuzz.devhelp2
--- old/harfbuzz-2.6.3/docs/html/harfbuzz.devhelp2      2019-10-28 
22:47:49.000000000 +0100
+++ new/harfbuzz-2.6.4/docs/html/harfbuzz.devhelp2      2019-10-29 
20:50:32.000000000 +0100
@@ -116,8 +116,8 @@
         <sub name="hb-icu" link="harfbuzz-hb-icu.html"/>
         <sub name="hb-uniscribe" link="harfbuzz-hb-uniscribe.html"/>
       </sub>
-      <sub name="Index of deprecated API" link="deprecated-api-index.html"/>
       <sub name="API Index" link="api-index-full.html"/>
+      <sub name="Index of deprecated API" link="deprecated-api-index.html"/>
       <sub name="Index of new symbols in 2.6.0" link="api-index-2-6-0.html"/>
       <sub name="Index of new symbols in 2.5.0" link="api-index-2-5-0.html"/>
       <sub name="Index of new symbols in 2.4.0" link="api-index-2-4-0.html"/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/docs/html/pt02.html 
new/harfbuzz-2.6.4/docs/html/pt02.html
--- old/harfbuzz-2.6.3/docs/html/pt02.html      2019-10-28 22:47:49.000000000 
+0100
+++ new/harfbuzz-2.6.4/docs/html/pt02.html      2019-10-29 20:50:32.000000000 
+0100
@@ -24,7 +24,7 @@
 <div><h1 class="title">
 <a name="id-1.3"></a>Part II. Reference manual</h1></div>
 <div><p class="releaseinfo">
-        This document is for HarfBuzz 2.6.3
+        This document is for HarfBuzz 2.6.4
 .
         
       </p></div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/harfbuzz-2.6.3/docs/html/shaping-opentype-features.html 
new/harfbuzz-2.6.4/docs/html/shaping-opentype-features.html
--- old/harfbuzz-2.6.3/docs/html/shaping-opentype-features.html 2019-10-28 
22:47:49.000000000 +0100
+++ new/harfbuzz-2.6.4/docs/html/shaping-opentype-features.html 2019-10-29 
20:50:32.000000000 +0100
@@ -40,7 +40,8 @@
       Other features are more generic and can apply to several (or
       any) script, and shaping engines are expected to implement
       them. By default, HarfBuzz activates several of these features
-      on every text run. They include <code class="literal">ccmp</code>,
+      on every text run. They include <code class="literal">abvm</code>,
+      <code class="literal">blwm</code>, <code class="literal">ccmp</code>,
       <code class="literal">locl</code>, <code class="literal">mark</code>,
       <code class="literal">mkmk</code>, and <code class="literal">rlig</code>.
     </p>
@@ -48,8 +49,9 @@
       In addition, if the text direction is horizontal, HarfBuzz
       also applies the <code class="literal">calt</code>,
       <code class="literal">clig</code>, <code class="literal">curs</code>,
-      <code class="literal">kern</code>, <code class="literal">liga</code>,
-      <code class="literal">rclt</code>, and <code class="literal">frac</code> 
features.
+      <code class="literal">dist</code>, <code class="literal">kern</code>,
+      <code class="literal">liga</code>, <code class="literal">rclt</code>,
+      and <code class="literal">frac</code> features.
     </p>
 <p>
       If the text direction is vertical, HarfBuzz applies
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/docs/usermanual-opentype-features.xml 
new/harfbuzz-2.6.4/docs/usermanual-opentype-features.xml
--- old/harfbuzz-2.6.3/docs/usermanual-opentype-features.xml    2019-05-25 
17:15:45.000000000 +0200
+++ new/harfbuzz-2.6.4/docs/usermanual-opentype-features.xml    2019-08-23 
20:54:39.000000000 +0200
@@ -139,7 +139,8 @@
       Other features are more generic and can apply to several (or
       any) script, and shaping engines are expected to implement
       them. By default, HarfBuzz activates several of these features
-      on every text run. They include <literal>ccmp</literal>,
+      on every text run. They include <literal>abvm</literal>,
+      <literal>blwm</literal>, <literal>ccmp</literal>,
       <literal>locl</literal>, <literal>mark</literal>,
       <literal>mkmk</literal>, and <literal>rlig</literal>.
     </para>
@@ -147,8 +148,9 @@
       In addition, if the text direction is horizontal, HarfBuzz
       also applies the <literal>calt</literal>,
       <literal>clig</literal>, <literal>curs</literal>,
-      <literal>kern</literal>, <literal>liga</literal>,
-      <literal>rclt</literal>, and <literal>frac</literal> features.
+      <literal>dist</literal>, <literal>kern</literal>,
+      <literal>liga</literal>, <literal>rclt</literal>,
+      and <literal>frac</literal> features.
     </para>
     <para>
       If the text direction is vertical, HarfBuzz applies
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/docs/version.xml 
new/harfbuzz-2.6.4/docs/version.xml
--- old/harfbuzz-2.6.3/docs/version.xml 2019-10-28 22:47:16.000000000 +0100
+++ new/harfbuzz-2.6.4/docs/version.xml 2019-10-29 20:49:53.000000000 +0100
@@ -1 +1 @@
-2.6.3
+2.6.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/src/hb-array.hh 
new/harfbuzz-2.6.4/src/hb-array.hh
--- old/harfbuzz-2.6.3/src/hb-array.hh  2019-10-22 22:38:05.000000000 +0200
+++ new/harfbuzz-2.6.4/src/hb-array.hh  2019-10-29 20:49:28.000000000 +0100
@@ -196,6 +196,15 @@
   const T *as () const
   { return length < hb_null_size (T) ? &Null (T) : reinterpret_cast<const T *> 
(arrayZ); }
 
+  template <typename T,
+           unsigned P = sizeof (Type),
+           hb_enable_if (P == 1)>
+  bool in_range (const T *p, unsigned int size = T::static_size) const
+  {
+    return ((const char *) p) >= arrayZ
+       && ((const char *) p + size) <= arrayZ + length;
+  }
+
   /* Only call if you allocated the underlying array using malloc() or 
similar. */
   void free ()
   { ::free ((void *) arrayZ); arrayZ = nullptr; length = 0; }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/src/hb-ot-cff1-table.cc 
new/harfbuzz-2.6.4/src/hb-ot-cff1-table.cc
--- old/harfbuzz-2.6.3/src/hb-ot-cff1-table.cc  2019-10-09 05:03:11.000000000 
+0200
+++ new/harfbuzz-2.6.4/src/hb-ot-cff1-table.cc  2019-10-29 11:16:47.000000000 
+0100
@@ -336,7 +336,7 @@
   else
   {
     extents->y_bearing = font->em_scalef_y (bounds.max.y.to_real ());
-    extents->height = font->em_scalef_x (bounds.min.y.to_real () - 
bounds.max.y.to_real ());
+    extents->height = font->em_scalef_y (bounds.min.y.to_real () - 
bounds.max.y.to_real ());
   }
 
   return true;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/src/hb-ot-cmap-table.hh 
new/harfbuzz-2.6.4/src/hb-ot-cmap-table.hh
--- old/harfbuzz-2.6.3/src/hb-ot-cmap-table.hh  2019-10-28 21:46:56.000000000 
+0100
+++ new/harfbuzz-2.6.4/src/hb-ot-cmap-table.hh  2019-10-29 11:16:47.000000000 
+0100
@@ -342,14 +342,22 @@
        count--; /* Skip sentinel segment. */
       for (unsigned int i = 0; i < count; i++)
       {
+       hb_codepoint_t start = this->startCount[i];
+       hb_codepoint_t end = this->endCount[i];
        unsigned int rangeOffset = this->idRangeOffset[i];
        if (rangeOffset == 0)
-         out->add_range (this->startCount[i], this->endCount[i]);
+       {
+         for (hb_codepoint_t codepoint = start; codepoint <= end; codepoint++)
+         {
+           hb_codepoint_t gid = (codepoint + this->idDelta[i]) & 0xFFFFu;
+           if (unlikely (!gid))
+             continue;
+           out->add (codepoint);
+         }
+       }
        else
        {
-         for (hb_codepoint_t codepoint = this->startCount[i];
-              codepoint <= this->endCount[i];
-              codepoint++)
+         for (hb_codepoint_t codepoint = start; codepoint <= end; codepoint++)
          {
            unsigned int index = rangeOffset / 2 + (codepoint - 
this->startCount[i]) + i - this->segCount;
            if (unlikely (index >= this->glyphIdArrayLength))
@@ -522,10 +530,18 @@
 
   void collect_unicodes (hb_set_t *out) const
   {
-    for (unsigned int i = 0; i < this->groups.len; i++) {
-      out->add_range (this->groups[i].startCharCode,
-                     hb_min ((hb_codepoint_t) this->groups[i].endCharCode,
-                          (hb_codepoint_t) HB_UNICODE_MAX));
+    for (unsigned int i = 0; i < this->groups.len; i++)
+    {
+      hb_codepoint_t start = this->groups[i].startCharCode;
+      hb_codepoint_t end = hb_min ((hb_codepoint_t) 
this->groups[i].endCharCode,
+                                  (hb_codepoint_t) HB_UNICODE_MAX);
+      for (hb_codepoint_t codepoint = start; codepoint <= end; codepoint++)
+      {
+       hb_codepoint_t gid = T::group_get_glyph (this->groups[i], codepoint);
+       if (unlikely (!gid))
+         continue;
+       out->add (codepoint);
+      }
     }
   }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/src/hb-ot-glyf-table.hh 
new/harfbuzz-2.6.4/src/hb-ot-glyf-table.hh
--- old/harfbuzz-2.6.3/src/hb-ot-glyf-table.hh  2019-10-15 23:57:38.000000000 
+0200
+++ new/harfbuzz-2.6.4/src/hb-ot-glyf-table.hh  2019-10-29 20:49:28.000000000 
+0100
@@ -360,9 +360,9 @@
   {
     typedef const CompositeGlyphChain *__item_t__;
     composite_iter_t (hb_bytes_t glyph_, __item_t__ current_) :
-      glyph (glyph_), current (current_), checker (range_checker_t 
(glyph.arrayZ, glyph.length))
+      glyph (glyph_), current (current_)
     { if (!in_range (current)) current = nullptr; }
-    composite_iter_t () : glyph (hb_bytes_t ()), current (nullptr), checker 
(range_checker_t (nullptr, 0)) {}
+    composite_iter_t () : glyph (hb_bytes_t ()), current (nullptr) {}
 
     const CompositeGlyphChain &__item__ () const { return *current; }
     bool __more__ () const { return current; }
@@ -380,14 +380,13 @@
 
     bool in_range (const CompositeGlyphChain *composite) const
     {
-      return checker.in_range (composite, CompositeGlyphChain::min_size)
-         && checker.in_range (composite, composite->get_size ());
+      return glyph.in_range (composite, CompositeGlyphChain::min_size)
+         && glyph.in_range (composite, composite->get_size ());
     }
 
     private:
     hb_bytes_t glyph;
     __item_t__ current;
-    range_checker_t checker;
   };
 
   struct Glyph
@@ -537,7 +536,7 @@
       template <typename T>
       static bool read_points (const HBUINT8 *&p /* IN/OUT */,
                               contour_point_vector_t &points_ /* IN/OUT */,
-                              const range_checker_t &checker)
+                              const hb_bytes_t &bytes)
       {
        T coord_setter;
        float v = 0;
@@ -546,7 +545,7 @@
          uint8_t flag = points_[i].flag;
          if (coord_setter.is_short (flag))
          {
-           if (unlikely (!checker.in_range (p))) return false;
+           if (unlikely (!bytes.in_range (p))) return false;
            if (coord_setter.is_same (flag))
              v += *p++;
            else
@@ -556,7 +555,7 @@
          {
            if (!coord_setter.is_same (flag))
            {
-             if (unlikely (!checker.in_range ((const HBUINT16 *) p))) return 
false;
+             if (unlikely (!bytes.in_range ((const HBUINT16 *) p))) return 
false;
              v += *(const HBINT16 *) p;
              p += HBINT16::static_size;
            }
@@ -571,9 +570,8 @@
                               const bool phantom_only=false) const
       {
        const HBUINT16 *endPtsOfContours = &StructAfter<HBUINT16> (header);
-       range_checker_t checker (bytes.arrayZ, bytes.length);
        int num_contours = header.numberOfContours;
-       if (unlikely (!checker.in_range (&endPtsOfContours[num_contours + 1]))) 
return false;
+       if (unlikely (!bytes.in_range (&endPtsOfContours[num_contours + 1]))) 
return false;
        unsigned int num_points = endPtsOfContours[num_contours - 1] + 1;
 
        points_.resize (num_points + PHANTOM_COUNT);
@@ -593,12 +591,12 @@
        /* Read flags */
        for (unsigned int i = 0; i < num_points; i++)
        {
-         if (unlikely (!checker.in_range (p))) return false;
+         if (unlikely (!bytes.in_range (p))) return false;
          uint8_t flag = *p++;
          points_[i].flag = flag;
          if (flag & FLAG_REPEAT)
          {
-           if (unlikely (!checker.in_range (p))) return false;
+           if (unlikely (!bytes.in_range (p))) return false;
            unsigned int repeat_count = *p++;
            while ((repeat_count-- > 0) && (++i < num_points))
              points_[i].flag = flag;
@@ -606,8 +604,8 @@
        }
 
        /* Read x & y coordinates */
-       return (read_points<x_setter_t> (p, points_, checker) &&
-               read_points<y_setter_t> (p, points_, checker));
+       return (read_points<x_setter_t> (p, points_, bytes) &&
+               read_points<y_setter_t> (p, points_, bytes));
       }
     };
 
@@ -808,20 +806,36 @@
 
     struct contour_bounds_t
     {
-      contour_bounds_t () { min.x = min.y = FLT_MAX; max.x = max.y = -FLT_MAX; 
}
+      contour_bounds_t () { min_x = min_y = FLT_MAX; max_x = max_y = -FLT_MAX; 
}
 
       void add (const contour_point_t &p)
       {
-       min.x = hb_min (min.x, p.x);
-       min.y = hb_min (min.y, p.y);
-       max.x = hb_max (max.x, p.x);
-       max.y = hb_max (max.y, p.y);
+       min_x = hb_min (min_x, p.x);
+       min_y = hb_min (min_y, p.y);
+       max_x = hb_max (max_x, p.x);
+       max_y = hb_max (max_y, p.y);
       }
 
-      bool empty () const { return (min.x >= max.x) || (min.y >= max.y); }
+      bool empty () const { return (min_x >= max_x) || (min_y >= max_y); }
 
-      contour_point_t  min;
-      contour_point_t  max;
+      void get_extents (hb_font_t *font, hb_glyph_extents_t *extents)
+      {
+       if (unlikely (empty ()))
+       {
+         extents->width = 0;
+         extents->x_bearing = 0;
+         extents->height = 0;
+         extents->y_bearing = 0;
+         return;
+       }
+       extents->x_bearing = font->em_scalef_x (min_x);
+       extents->width = font->em_scalef_x (max_x - min_x);
+       extents->y_bearing = font->em_scalef_y (max_y);
+       extents->height = font->em_scalef_y (min_y - max_y);
+      }
+
+      protected:
+      float min_x, min_y, max_x, max_y;
     };
 
 #ifndef HB_NO_VAR
@@ -919,27 +933,7 @@
        contour_bounds_t bounds;
        for (unsigned int i = 0; i + PHANTOM_COUNT < all_points.length; i++)
          bounds.add (all_points[i]);
-
-       if (bounds.min.x > bounds.max.x)
-       {
-         extents->width = 0;
-         extents->x_bearing = 0;
-       }
-       else
-       {
-         extents->x_bearing = font->em_scalef_x (bounds.min.x);
-         extents->width = font->em_scalef_x (bounds.max.x - bounds.min.x);
-       }
-       if (bounds.min.y > bounds.max.y)
-       {
-         extents->height = 0;
-         extents->y_bearing = 0;
-       }
-       else
-       {
-         extents->y_bearing = font->em_scalef_y (bounds.max.y);
-         extents->height = font->em_scalef_y (bounds.min.y - bounds.max.y);
-       }
+       bounds.get_extents (font, extents);
       }
       if (phantoms)
        for (unsigned int i = 0; i < PHANTOM_COUNT; i++)
@@ -953,7 +947,7 @@
 
     bool get_extents_var (hb_font_t *font, hb_codepoint_t gid,
                          hb_glyph_extents_t *extents) const
-    { return get_var_extents_and_phantoms (font, gid,  extents); }
+    { return get_var_extents_and_phantoms (font, gid, extents); }
 #endif
 
     public:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/src/hb-ot-var-gvar-table.hh 
new/harfbuzz-2.6.4/src/hb-ot-var-gvar-table.hh
--- old/harfbuzz-2.6.3/src/hb-ot-var-gvar-table.hh      2019-10-15 
23:57:38.000000000 +0200
+++ new/harfbuzz-2.6.4/src/hb-ot-var-gvar-table.hh      2019-10-29 
20:49:28.000000000 +0100
@@ -78,23 +78,6 @@
   }
 };
 
-struct range_checker_t
-{
-  range_checker_t (const void *data_, unsigned int length_)
-    : data ((const char *) data_), length (length_) {}
-
-  template <typename T>
-  bool in_range (const T *p, unsigned int size = T::static_size) const
-  {
-    return ((const char *) p) >= data
-       && ((const char *) p + size) <= data + length;
-  }
-
-  protected:
-  const char *data;
-  const unsigned int length;
-};
-
 struct Tuple : UnsizedArrayOf<F2DOT14> {};
 
 struct TuppleIndex : HBUINT16
@@ -233,10 +216,10 @@
     {
       if (var_data->has_shared_point_numbers ())
       {
-       range_checker_t checker (var_data, length);
+       hb_bytes_t bytes ((const char *) var_data, length);
        const HBUINT8 *base = &(var_data+var_data->data);
        const HBUINT8 *p = base;
-       if (!unpack_points (p, shared_indices, checker)) return false;
+       if (!unpack_points (p, shared_indices, bytes)) return false;
        data_offset = p - base;
       }
       return true;
@@ -292,7 +275,7 @@
 
   static bool unpack_points (const HBUINT8 *&p /* IN/OUT */,
                             hb_vector_t<unsigned int> &points /* OUT */,
-                            const range_checker_t &check)
+                            const hb_bytes_t &bytes)
   {
     enum packed_point_flag_t
     {
@@ -300,12 +283,12 @@
       POINT_RUN_COUNT_MASK = 0x7F
     };
 
-    if (unlikely (!check.in_range (p))) return false;
+    if (unlikely (!bytes.in_range (p))) return false;
 
     uint16_t count = *p++;
     if (count & POINTS_ARE_WORDS)
     {
-      if (unlikely (!check.in_range (p))) return false;
+      if (unlikely (!bytes.in_range (p))) return false;
       count = ((count & POINT_RUN_COUNT_MASK) << 8) | *p++;
     }
     points.resize (count);
@@ -314,7 +297,7 @@
     uint16_t i = 0;
     while (i < count)
     {
-      if (unlikely (!check.in_range (p))) return false;
+      if (unlikely (!bytes.in_range (p))) return false;
       uint16_t j;
       uint8_t control = *p++;
       uint16_t run_count = (control & POINT_RUN_COUNT_MASK) + 1;
@@ -322,7 +305,7 @@
       {
        for (j = 0; j < run_count && i < count; j++, i++)
        {
-         if (unlikely (!check.in_range ((const HBUINT16 *) p)))
+         if (unlikely (!bytes.in_range ((const HBUINT16 *) p)))
            return false;
          n += *(const HBUINT16 *)p;
          points[i] = n;
@@ -333,7 +316,7 @@
       {
        for (j = 0; j < run_count && i < count; j++, i++)
        {
-         if (unlikely (!check.in_range (p))) return false;
+         if (unlikely (!bytes.in_range (p))) return false;
          n += *p++;
          points[i] = n;
        }
@@ -345,7 +328,7 @@
 
   static bool unpack_deltas (const HBUINT8 *&p /* IN/OUT */,
                             hb_vector_t<int> &deltas /* IN/OUT */,
-                            const range_checker_t &check)
+                            const hb_bytes_t &bytes)
   {
     enum packed_delta_flag_t
     {
@@ -358,7 +341,7 @@
     unsigned int count = deltas.length;
     while (i < count)
     {
-      if (unlikely (!check.in_range (p))) return false;
+      if (unlikely (!bytes.in_range (p))) return false;
       uint8_t control = *p++;
       unsigned int run_count = (control & DELTA_RUN_COUNT_MASK) + 1;
       unsigned int j;
@@ -368,7 +351,7 @@
       else if (control & DELTAS_ARE_WORDS)
        for (j = 0; j < run_count && i < count; j++, i++)
        {
-         if (unlikely (!check.in_range ((const HBUINT16 *) p)))
+         if (unlikely (!bytes.in_range ((const HBUINT16 *) p)))
            return false;
          deltas[i] = *(const HBINT16 *) p;
          p += HBUINT16::static_size;
@@ -376,7 +359,7 @@
       else
        for (j = 0; j < run_count && i < count; j++, i++)
        {
-         if (unlikely (!check.in_range (p)))
+         if (unlikely (!bytes.in_range (p)))
            return false;
          deltas[i] = *(const HBINT8 *) p++;
        }
@@ -611,10 +594,10 @@
        if (unlikely (!iterator.in_range (p, length)))
          return false;
 
-       range_checker_t checker (p, length);
+       hb_bytes_t bytes ((const char *) p, length);
        hb_vector_t<unsigned int> private_indices;
        if (iterator.current_tuple->has_private_points () &&
-           !GlyphVarData::unpack_points (p, private_indices, checker))
+           !GlyphVarData::unpack_points (p, private_indices, bytes))
          return false;
        const hb_array_t<unsigned int> &indices = private_indices.length ? 
private_indices : shared_indices;
 
@@ -622,11 +605,11 @@
        unsigned int num_deltas = apply_to_all ? points.length : indices.length;
        hb_vector_t<int> x_deltas;
        x_deltas.resize (num_deltas);
-       if (!GlyphVarData::unpack_deltas (p, x_deltas, checker))
+       if (!GlyphVarData::unpack_deltas (p, x_deltas, bytes))
          return false;
        hb_vector_t<int> y_deltas;
        y_deltas.resize (num_deltas);
-       if (!GlyphVarData::unpack_deltas (p, y_deltas, checker))
+       if (!GlyphVarData::unpack_deltas (p, y_deltas, bytes))
          return false;
 
        for (unsigned int i = 0; i < deltas.length; i++)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/src/hb-subset-plan.cc 
new/harfbuzz-2.6.4/src/hb-subset-plan.cc
--- old/harfbuzz-2.6.3/src/hb-subset-plan.cc    2019-10-09 05:03:11.000000000 
+0200
+++ new/harfbuzz-2.6.4/src/hb-subset-plan.cc    2019-10-29 01:12:37.000000000 
+0100
@@ -71,7 +71,10 @@
               const hb_set_t      *unicodes,
               hb_set_t            *glyphset)
 {
-  face->table.cmap->table->closure_glyphs (unicodes, glyphset);
+  OT::cmap::accelerator_t cmap;
+  cmap.init (face);
+  cmap.table->closure_glyphs (unicodes, glyphset);
+  cmap.fini ();
 }
 
 static inline void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/src/hb-version.h 
new/harfbuzz-2.6.4/src/hb-version.h
--- old/harfbuzz-2.6.3/src/hb-version.h 2019-10-28 22:46:59.000000000 +0100
+++ new/harfbuzz-2.6.4/src/hb-version.h 2019-10-29 20:49:28.000000000 +0100
@@ -38,9 +38,9 @@
 
 #define HB_VERSION_MAJOR 2
 #define HB_VERSION_MINOR 6
-#define HB_VERSION_MICRO 3
+#define HB_VERSION_MICRO 4
 
-#define HB_VERSION_STRING "2.6.3"
+#define HB_VERSION_STRING "2.6.4"
 
 #define HB_VERSION_ATLEAST(major,minor,micro) \
        ((major)*10000+(minor)*100+(micro) <= \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/src/hb.hh new/harfbuzz-2.6.4/src/hb.hh
--- old/harfbuzz-2.6.3/src/hb.hh        2019-09-30 19:40:11.000000000 +0200
+++ new/harfbuzz-2.6.4/src/hb.hh        2019-10-29 20:17:51.000000000 +0100
@@ -370,10 +370,12 @@
 #define getenv(Name) nullptr
 #endif
 
-#ifdef HB_NO_ERRNO
-static int errno = 0; /* Use something better? */
+#ifndef HB_NO_ERRNO
+#  include <errno.h>
 #else
-#include <errno.h>
+static int HB_UNUSED _hb_errno = 0;
+#  undef errno
+#  define errno _hb_errno
 #endif
 
 #if defined(HAVE_ATEXIT) && !defined(HB_USE_ATEXIT)
Binary files old/harfbuzz-2.6.3/test/api/fonts/cmunrm.otf and 
new/harfbuzz-2.6.4/test/api/fonts/cmunrm.otf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/harfbuzz-2.6.3/test/api/test-collect-unicodes.c 
new/harfbuzz-2.6.4/test/api/test-collect-unicodes.c
--- old/harfbuzz-2.6.3/test/api/test-collect-unicodes.c 2019-05-06 
21:14:20.000000000 +0200
+++ new/harfbuzz-2.6.4/test/api/test-collect-unicodes.c 2019-10-29 
11:16:47.000000000 +0100
@@ -50,6 +50,27 @@
 }
 
 static void
+test_collect_unicodes_format12_notdef (void)
+{
+  hb_face_t *face = hb_test_open_font_file ("fonts/cmunrm.otf");
+  hb_set_t *codepoints = hb_set_create();
+  hb_codepoint_t cp;
+
+  hb_face_collect_unicodes (face, codepoints);
+
+  cp = HB_SET_VALUE_INVALID;
+  g_assert (hb_set_next (codepoints, &cp));
+  g_assert_cmpuint (0x20, ==, cp);
+  g_assert (hb_set_next (codepoints, &cp));
+  g_assert_cmpuint (0x21, ==, cp);
+  g_assert (hb_set_next (codepoints, &cp));
+  g_assert_cmpuint (0x22, ==, cp);
+
+  hb_set_destroy (codepoints);
+  hb_face_destroy (face);
+}
+
+static void
 test_collect_unicodes_format12 (void)
 {
   hb_face_t *face = hb_test_open_font_file 
("fonts/Roboto-Regular.abc.format12.ttf");
@@ -101,6 +122,7 @@
   hb_test_add (test_collect_unicodes);
   hb_test_add (test_collect_unicodes_format4);
   hb_test_add (test_collect_unicodes_format12);
+  hb_test_add (test_collect_unicodes_format12_notdef);
 
   return hb_test_run();
 }



Reply via email to