texlive[60356] Build/source/libs: harfbuzz 2.9.0

commits+kakuto at tug.org commits+kakuto at tug.org
Sun Aug 29 06:06:17 CEST 2021


Revision: 60356
          http://tug.org/svn/texlive?view=revision&revision=60356
Author:   kakuto
Date:     2021-08-29 06:06:16 +0200 (Sun, 29 Aug 2021)
Log Message:
-----------
harfbuzz 2.9.0

Modified Paths:
--------------
    trunk/Build/source/libs/README
    trunk/Build/source/libs/harfbuzz/ChangeLog
    trunk/Build/source/libs/harfbuzz/Makefile.am
    trunk/Build/source/libs/harfbuzz/Makefile.in
    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/INSTALL
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am
    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/RELEASING.md
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/config.h.in
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/meson.build
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/check-libstdc++.py
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/check-static-inits.py
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/check-symbols.py
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-emoji-table.py
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ragel-artifacts.py
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-array.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-bimap.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.h
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cache.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff2-interp-cs.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-debug.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gdi.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-iter.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-machinery.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-meta.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-object.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cbdt-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-colr-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cpal-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-sbix-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-face-table-list.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hdmx-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-map.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-maxp-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic-fallback.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-hangul.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-syllabic.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-syllabic.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh
    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-shape.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag.cc
    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-gvar-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-hvar-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-pool.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-repacker.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-serialize.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.h
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff1.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.h
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-vector.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/main.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-buffer-serialize.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-gpos-size-params.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-gsub-would-substitute.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-glyphname.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-meta.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-name.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-repacker.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test.cc
    trunk/Build/source/libs/harfbuzz/version.ac

Added Paths:
-----------
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ms-feature-ranges.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ms-feature-ranges.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-colrv1-closure.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table-v2subset.hh

Modified: trunk/Build/source/libs/README
===================================================================
--- trunk/Build/source/libs/README	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/README	2021-08-29 04:06:16 UTC (rev 60356)
@@ -25,8 +25,8 @@
   http://sourceforge.net/projects/silgraphite/files/graphite2/
   (requires C++11)
 
-harfbuzz 2.8.1 - checked 06may21
-  https://github.com/harfbuzz/harfbuzz/releases/download/2.8.1/
+harfbuzz 2.9.0 - checked 29aug21
+  https://github.com/harfbuzz/harfbuzz/releases/download/2.9.0/
 
 icu 68.2 - checked 13feb21
   http://download.icu-project.org/files/icu4c/

Modified: trunk/Build/source/libs/harfbuzz/ChangeLog
===================================================================
--- trunk/Build/source/libs/harfbuzz/ChangeLog	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/ChangeLog	2021-08-29 04:06:16 UTC (rev 60356)
@@ -1,3 +1,8 @@
+2021-08-29  Akira Kakuto  <kakuto at jcom.zaq.ne.jp>
+
+	Import harfbuzz-2.9.0.
+	* Makefile.am, version.ac: Adjusted.
+
 2021-05-06  Akira Kakuto  <kakuto at w32tex.org>
 
 	Import harfbuzz-2.8.1.

Modified: trunk/Build/source/libs/harfbuzz/Makefile.am
===================================================================
--- trunk/Build/source/libs/harfbuzz/Makefile.am	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/Makefile.am	2021-08-29 04:06:16 UTC (rev 60356)
@@ -64,6 +64,8 @@
 	@HARFBUZZ_TREE@/src/hb-map.cc \
 	@HARFBUZZ_TREE@/src/hb-machinery.hh \
 	@HARFBUZZ_TREE@/src/hb-meta.hh \
+	@HARFBUZZ_TREE@/src/hb-ms-feature-ranges.cc \
+	@HARFBUZZ_TREE@/src/hb-ms-feature-ranges.hh \
 	@HARFBUZZ_TREE@/src/hb-mutex.hh \
 	@HARFBUZZ_TREE@/src/hb-null.hh \
 	@HARFBUZZ_TREE@/src/hb-number-parser.hh \
@@ -80,6 +82,7 @@
 	@HARFBUZZ_TREE@/src/hb-ot-cff2-table.hh \
 	@HARFBUZZ_TREE@/src/hb-ot-gasp-table.hh \
 	@HARFBUZZ_TREE@/src/hb-ot-color-cbdt-table.hh \
+	@HARFBUZZ_TREE@/src/hb-ot-color-colrv1-closure.hh \
 	@HARFBUZZ_TREE@/src/hb-ot-cmap-table.hh \
 	@HARFBUZZ_TREE@/src/hb-ot-face.cc \
 	@HARFBUZZ_TREE@/src/hb-ot-face.hh \
@@ -101,6 +104,7 @@
 	@HARFBUZZ_TREE@/src/hb-pool.hh \
 	@HARFBUZZ_TREE@/src/hb-ot-post-macroman.hh \
 	@HARFBUZZ_TREE@/src/hb-ot-post-table.hh \
+	@HARFBUZZ_TREE@/src/hb-ot-post-table-v2subset.hh \
 	@HARFBUZZ_TREE@/src/hb-ot-tag.cc \
 	@HARFBUZZ_TREE@/src/hb-ot-tag-table.hh \
 	@HARFBUZZ_TREE@/src/hb-sanitize.hh \

Modified: trunk/Build/source/libs/harfbuzz/Makefile.in
===================================================================
--- trunk/Build/source/libs/harfbuzz/Makefile.in	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/Makefile.in	2021-08-29 04:06:16 UTC (rev 60356)
@@ -127,6 +127,7 @@
 	@HARFBUZZ_TREE@/src/hb-face.$(OBJEXT) \
 	@HARFBUZZ_TREE@/src/hb-font.$(OBJEXT) \
 	@HARFBUZZ_TREE@/src/hb-map.$(OBJEXT) \
+	@HARFBUZZ_TREE@/src/hb-ms-feature-ranges.$(OBJEXT) \
 	@HARFBUZZ_TREE@/src/hb-number.$(OBJEXT) \
 	@HARFBUZZ_TREE@/src/hb-ot-cff1-table.$(OBJEXT) \
 	@HARFBUZZ_TREE@/src/hb-ot-cff2-table.$(OBJEXT) \
@@ -207,6 +208,7 @@
 	@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-font.Po \
 	@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-graphite2.Po \
 	@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-map.Po \
+	@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ms-feature-ranges.Po \
 	@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-number.Po \
 	@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-cff1-table.Po \
 	@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-cff2-table.Po \
@@ -737,8 +739,10 @@
 	@HARFBUZZ_TREE@/src/hb-iter.hh @HARFBUZZ_TREE@/src/hb-kern.hh \
 	@HARFBUZZ_TREE@/src/hb-map.hh @HARFBUZZ_TREE@/src/hb-map.cc \
 	@HARFBUZZ_TREE@/src/hb-machinery.hh \
-	@HARFBUZZ_TREE@/src/hb-meta.hh @HARFBUZZ_TREE@/src/hb-mutex.hh \
-	@HARFBUZZ_TREE@/src/hb-null.hh \
+	@HARFBUZZ_TREE@/src/hb-meta.hh \
+	@HARFBUZZ_TREE@/src/hb-ms-feature-ranges.cc \
+	@HARFBUZZ_TREE@/src/hb-ms-feature-ranges.hh \
+	@HARFBUZZ_TREE@/src/hb-mutex.hh @HARFBUZZ_TREE@/src/hb-null.hh \
 	@HARFBUZZ_TREE@/src/hb-number-parser.hh \
 	@HARFBUZZ_TREE@/src/hb-number.cc \
 	@HARFBUZZ_TREE@/src/hb-number.hh \
@@ -753,6 +757,7 @@
 	@HARFBUZZ_TREE@/src/hb-ot-cff2-table.hh \
 	@HARFBUZZ_TREE@/src/hb-ot-gasp-table.hh \
 	@HARFBUZZ_TREE@/src/hb-ot-color-cbdt-table.hh \
+	@HARFBUZZ_TREE@/src/hb-ot-color-colrv1-closure.hh \
 	@HARFBUZZ_TREE@/src/hb-ot-cmap-table.hh \
 	@HARFBUZZ_TREE@/src/hb-ot-face.cc \
 	@HARFBUZZ_TREE@/src/hb-ot-face.hh \
@@ -774,6 +779,7 @@
 	@HARFBUZZ_TREE@/src/hb-pool.hh \
 	@HARFBUZZ_TREE@/src/hb-ot-post-macroman.hh \
 	@HARFBUZZ_TREE@/src/hb-ot-post-table.hh \
+	@HARFBUZZ_TREE@/src/hb-ot-post-table-v2subset.hh \
 	@HARFBUZZ_TREE@/src/hb-ot-tag.cc \
 	@HARFBUZZ_TREE@/src/hb-ot-tag-table.hh \
 	@HARFBUZZ_TREE@/src/hb-sanitize.hh \
@@ -996,6 +1002,9 @@
 @HARFBUZZ_TREE@/src/hb-map.$(OBJEXT):  \
 	@HARFBUZZ_TREE@/src/$(am__dirstamp) \
 	@HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
+ at HARFBUZZ_TREE@/src/hb-ms-feature-ranges.$(OBJEXT):  \
+	@HARFBUZZ_TREE@/src/$(am__dirstamp) \
+	@HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
 @HARFBUZZ_TREE@/src/hb-number.$(OBJEXT):  \
 	@HARFBUZZ_TREE@/src/$(am__dirstamp) \
 	@HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp)
@@ -1159,6 +1168,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-font.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-graphite2.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-map.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ms-feature-ranges.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-number.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-cff1-table.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-cff2-table.Po at am__quote@ # am--include-marker
@@ -1809,6 +1819,7 @@
 	-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-font.Po
 	-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-graphite2.Po
 	-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-map.Po
+	-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ms-feature-ranges.Po
 	-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-number.Po
 	-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-cff1-table.Po
 	-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-cff2-table.Po
@@ -1910,6 +1921,7 @@
 	-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-font.Po
 	-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-graphite2.Po
 	-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-map.Po
+	-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ms-feature-ranges.Po
 	-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-number.Po
 	-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-cff1-table.Po
 	-rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-ot-cff2-table.Po

Modified: trunk/Build/source/libs/harfbuzz/TLpatches/ChangeLog
===================================================================
--- trunk/Build/source/libs/harfbuzz/TLpatches/ChangeLog	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/TLpatches/ChangeLog	2021-08-29 04:06:16 UTC (rev 60356)
@@ -1,3 +1,8 @@
+2021-08-29  Akira Kakuto  <kakuto at jcom.zaq.ne.jp>
+
+	Imported harfbuzz-2.9.0 source tree from:
+	https://github.com/harfbuzz/harfbuzz/releases/download/2.9.0/
+
 2021-05-06  Akira Kakuto  <kakuto at w32tex.org>
 
 	Imported harfbuzz-2.8.1 source tree from:

Modified: trunk/Build/source/libs/harfbuzz/TLpatches/TL-Changes
===================================================================
--- trunk/Build/source/libs/harfbuzz/TLpatches/TL-Changes	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/TLpatches/TL-Changes	2021-08-29 04:06:16 UTC (rev 60356)
@@ -1,5 +1,5 @@
-Changes applied to the harfbuzz-2.8.1/ tree as obtained from:
-	https://github.com/harfbuzz/harfbuzz/releases/download/2.8.1/
+Changes applied to the harfbuzz-2.9.0/ tree as obtained from:
+	https://github.com/harfbuzz/harfbuzz/releases/download/2.9.0/
 
 Removed:
 	COPYING

Modified: trunk/Build/source/libs/harfbuzz/configure
===================================================================
--- trunk/Build/source/libs/harfbuzz/configure	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/configure	2021-08-29 04:06:16 UTC (rev 60356)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for harfbuzz (TeX Live) 2.8.1.
+# Generated by GNU Autoconf 2.71 for harfbuzz (TeX Live) 2.9.0.
 #
 # Report bugs to <tex-k at tug.org>.
 #
@@ -611,8 +611,8 @@
 # Identity of this package.
 PACKAGE_NAME='harfbuzz (TeX Live)'
 PACKAGE_TARNAME='harfbuzz--tex-live-'
-PACKAGE_VERSION='2.8.1'
-PACKAGE_STRING='harfbuzz (TeX Live) 2.8.1'
+PACKAGE_VERSION='2.9.0'
+PACKAGE_STRING='harfbuzz (TeX Live) 2.9.0'
 PACKAGE_BUGREPORT='tex-k at tug.org'
 PACKAGE_URL=''
 
@@ -1346,7 +1346,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.8.1 to adapt to many kinds of systems.
+\`configure' configures harfbuzz (TeX Live) 2.9.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1418,7 +1418,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of harfbuzz (TeX Live) 2.8.1:";;
+     short | recursive ) echo "Configuration of harfbuzz (TeX Live) 2.9.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1523,7 +1523,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-harfbuzz (TeX Live) configure 2.8.1
+harfbuzz (TeX Live) configure 2.9.0
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2064,7 +2064,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.8.1, which was
+It was created by harfbuzz (TeX Live) $as_me 2.9.0, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -4823,7 +4823,7 @@
 
 # Define the identity of the package.
  PACKAGE='harfbuzz--tex-live-'
- VERSION='2.8.1'
+ VERSION='2.9.0'
 
 
 # Some tools Automake needs.
@@ -5034,9 +5034,9 @@
 
 
 HB_VERSION_MAJOR=2
-HB_VERSION_MINOR=8
-HB_VERSION_MICRO=1
-HB_VERSION=2.8.1
+HB_VERSION_MINOR=9
+HB_VERSION_MICRO=0
+HB_VERSION=2.9.0
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -8818,7 +8818,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.8.1, which was
+This file was extended by harfbuzz (TeX Live) $as_me 2.9.0, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -8886,7 +8886,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-harfbuzz (TeX Live) config.status 2.8.1
+harfbuzz (TeX Live) config.status 2.9.0
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog	2021-08-29 04:06:16 UTC (rev 60356)
@@ -1,3 +1,13285 @@
+commit 9aa6f8a93f035dd0a1e3978da495d830049480c8
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Aug 18 09:32:04 2021 +0200
+
+    2.9.0
+
+ NEWS                   | 20 ++++++++++++++++++++
+ configure.ac           |  2 +-
+ meson.build            |  2 +-
+ src/hb-subset-input.cc | 18 +++++++++---------
+ src/hb-subset.cc       |  2 +-
+ src/hb-subset.h        |  2 +-
+ src/hb-version.h       |  6 +++---
+ 7 files changed, 36 insertions(+), 16 deletions(-)
+
+commit adf3f3b317dbf95b3906f3003bd01195ec3121f7
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Aug 18 09:29:28 2021 +0200
+
+    Revert "2.9.0"
+    
+    This reverts commit 791aba9c45709a68ce6d5dc1066d22399dc4bee4.
+
+ NEWS | 20 --------------------
+ 1 file changed, 20 deletions(-)
+
+commit 791aba9c45709a68ce6d5dc1066d22399dc4bee4
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Aug 18 09:25:27 2021 +0200
+
+    2.9.0
+
+ NEWS | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+commit 57d86950c3f913805a5527a54eb735ef9360c8d5
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Mon Aug 16 21:54:26 2021 +0200
+
+    [meson] Update FreeType wrap to use upstream repo
+
+ subprojects/freetype2.wrap | 8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
+
+commit 5b4dbf5af361161194d815fd97d616429f6bf81c
+Merge: cb05c363d d203267e5
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sun Aug 15 12:57:55 2021 -0600
+
+    Merge pull request #3148 from harfbuzz/win64
+    
+    Build win64 binaries
+
+commit d203267e53d1007ea1974111dee26c5383b3ee9a
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Sun Aug 15 18:29:26 2021 +0200
+
+    [ci] Remove effectively ignored filters
+    
+    We want these jobs to always run, and the filter does not seem to do
+    anything anyway.
+
+ .circleci/config.yml | 10 ++--------
+ 1 file changed, 2 insertions(+), 8 deletions(-)
+
+commit f73053edafdcdd04855055e8b04eff33b425ae7d
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Sun Aug 15 18:27:32 2021 +0200
+
+    [ci] Don’t install unused dependencies
+    
+    This is a cross build job, native libraries are not used.
+
+ .circleci/config.yml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ddb4f9b9674a651fafd0e628ea7ea74a20e61ad9
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Sun Aug 15 17:24:51 2021 +0200
+
+    [ci] Build win64 binaries as well
+
+ .ci/build-win64.sh   | 27 +++++++++++++++++++++++++++
+ .circleci/config.yml | 33 +++++++++++++++++++++++++++++++++
+ 2 files changed, 60 insertions(+)
+
+commit cb05c363d7f85f1a9f309cc91a372d1305ee8f9e
+Author: Garret Rieger <grieger at google.com>
+Date:   Fri Aug 13 15:19:20 2021 -0700
+
+    [subset] add some basic tests for the legacy subset methods.
+
+ src/hb-subset-input.cc | 16 ++++++++--------
+ test/api/test-subset.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 59 insertions(+), 8 deletions(-)
+
+commit d18aad7ec5e940cf2bd31f5005df739f42da2590
+Author: Garret Rieger <grieger at google.com>
+Date:   Fri Aug 13 15:05:48 2021 -0700
+
+    [subset] restore old subsetting api methods.
+    
+    These will be left in place until the 3.0.0 release.
+
+ src/hb-subset-input.cc | 130 +++++++++++++++++++++++++++++++++++++++++++++++++
+ src/hb-subset.cc       |   8 +++
+ src/hb-subset.h        |  61 +++++++++++++++++++++++
+ 3 files changed, 199 insertions(+)
+
+commit 44802c8ec462574c148be12594609e13abd7ccb5
+Author: Garret Rieger <grieger at google.com>
+Date:   Thu Aug 12 11:11:51 2021 -0700
+
+    [subset] use layout-features=* for layout subsetting tests w/ synthetic test fonts.
+
+ ...e_subrules_f1.layout-test-retain-gids.41,42,43.otf | Bin 0 -> 2132 bytes
+ ...iple_subrules_f1.layout-test-retain-gids.41,42.otf | Bin 0 -> 2012 bytes
+ ...ple_subrules_f1.layout-test-retain-gids.41,43.otf} | Bin
+ ...ltiple_subrules_f1.layout-test-retain-gids.41.otf} | Bin
+ ...1.layout-test-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3992 bytes
+ ...ext1_multiple_subrules_f1.layout-test.41,42,43.otf | Bin 0 -> 1420 bytes
+ ...ontext1_multiple_subrules_f1.layout-test.41,42.otf | Bin 0 -> 1304 bytes
+ ...ntext1_multiple_subrules_f1.layout-test.41,43.otf} | Bin
+ ..._context1_multiple_subrules_f1.layout-test.41.otf} | Bin
+ ...e_subrules_f1.layout-test.retain-all-codepoint.otf | Bin 0 -> 3992 bytes
+ ...e_subrules_f1.notdef-outline-retain-gids.41,42.otf | Bin 1912 -> 0 bytes
+ ...1_multiple_subrules_f1.notdef-outline.41,42,43.otf | Bin 1304 -> 0 bytes
+ ...ext1_multiple_subrules_f1.notdef-outline.41,42.otf | Bin 1204 -> 0 bytes
+ ...e_subrules_f1.layout-test-retain-gids.41,42,43.otf | Bin 0 -> 2152 bytes
+ ...iple_subrules_f1.layout-test-retain-gids.41,42.otf | Bin 0 -> 2028 bytes
+ ...ple_subrules_f1.layout-test-retain-gids.41,43.otf} | Bin
+ ...ltiple_subrules_f1.layout-test-retain-gids.41.otf} | Bin
+ ...1.layout-test-retain-gids.retain-all-codepoint.otf | Bin 0 -> 4012 bytes
+ ...ext2_multiple_subrules_f1.layout-test.41,42,43.otf | Bin 0 -> 1440 bytes
+ ...ontext2_multiple_subrules_f1.layout-test.41,42.otf | Bin 0 -> 1320 bytes
+ ...ntext2_multiple_subrules_f1.layout-test.41,43.otf} | Bin
+ ..._context2_multiple_subrules_f1.layout-test.41.otf} | Bin
+ ...e_subrules_f1.layout-test.retain-all-codepoint.otf | Bin 0 -> 4012 bytes
+ ...ubrules_f1.notdef-outline-retain-gids.41,42,43.otf | Bin 2016 -> 0 bytes
+ ...e_subrules_f1.notdef-outline-retain-gids.41,42.otf | Bin 1912 -> 0 bytes
+ ...2_multiple_subrules_f1.notdef-outline.41,42,43.otf | Bin 1304 -> 0 bytes
+ ...ext2_multiple_subrules_f1.notdef-outline.41,42.otf | Bin 1204 -> 0 bytes
+ ...xt3_simple_f1.layout-test-retain-gids.41,42,43.otf | Bin 0 -> 2112 bytes
+ ...text3_simple_f1.layout-test-retain-gids.41,42.otf} | Bin
+ ...text3_simple_f1.layout-test-retain-gids.41,43.otf} | Bin
+ ...context3_simple_f1.layout-test-retain-gids.41.otf} | Bin
+ ...1.layout-test-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3972 bytes
+ .../gpos_context3_simple_f1.layout-test.41,42,43.otf  | Bin 0 -> 1400 bytes
+ ... => gpos_context3_simple_f1.layout-test.41,42.otf} | Bin
+ ... => gpos_context3_simple_f1.layout-test.41,43.otf} | Bin
+ ...otf => gpos_context3_simple_f1.layout-test.41.otf} | Bin
+ ...xt3_simple_f1.layout-test.retain-all-codepoint.otf | Bin 0 -> 3972 bytes
+ ..._simple_f1.notdef-outline-retain-gids.41,42,43.otf | Bin 1996 -> 0 bytes
+ ...otdef-outline-retain-gids.retain-all-codepoint.otf | Bin 3856 -> 0 bytes
+ ...pos_context3_simple_f1.notdef-outline.41,42,43.otf | Bin 1284 -> 0 bytes
+ ..._simple_f1.notdef-outline.retain-all-codepoint.otf | Bin 3856 -> 0 bytes
+ ...Prototype.layout-test-retain-gids.41,42,43,57.otf} | Bin 5272 -> 5924 bytes
+ ...eVFPrototype.layout-test-retain-gids.41,42,43.otf} | Bin 4740 -> 5212 bytes
+ ...dobeVFPrototype.layout-test-retain-gids.41,42.otf} | Bin 4264 -> 4732 bytes
+ ...eVFPrototype.layout-test-retain-gids.41,56,57.otf} | Bin 4408 -> 5048 bytes
+ ...> AdobeVFPrototype.layout-test-retain-gids.41.otf} | Bin 3560 -> 3996 bytes
+ ...dobeVFPrototype.layout-test-retain-gids.42,57.otf} | Bin 4396 -> 5040 bytes
+ ...f => AdobeVFPrototype.layout-test.41,42,43,57.otf} | Bin 5460 -> 5480 bytes
+ ....otf => AdobeVFPrototype.layout-test.41,42,43.otf} | Bin 4928 -> 4952 bytes
+ ...,42.otf => AdobeVFPrototype.layout-test.41,42.otf} | Bin 4448 -> 4468 bytes
+ ....otf => AdobeVFPrototype.layout-test.41,56,57.otf} | Bin 4596 -> 4620 bytes
+ ...ine.41.otf => AdobeVFPrototype.layout-test.41.otf} | Bin 3748 -> 3768 bytes
+ ...,57.otf => AdobeVFPrototype.layout-test.42,57.otf} | Bin 4580 -> 4600 bytes
+ ...=> gpos1_2_font.layout-test-retain-gids.41,43.otf} | Bin 1980 -> 2044 bytes
+ ...=> gpos1_2_font.layout-test-retain-gids.41,46.otf} | Bin 2140 -> 2204 bytes
+ ...tf => gpos1_2_font.layout-test-retain-gids.41.otf} | Bin 1856 -> 1916 bytes
+ ...=> gpos1_2_font.layout-test-retain-gids.42,44.otf} | Bin
+ ...=> gpos1_2_font.layout-test-retain-gids.43,46.otf} | Bin 2004 -> 2068 bytes
+ ....layout-test-retain-gids.retain-all-codepoint.otf} | Bin 3780 -> 3848 bytes
+ ...e.41,43.otf => gpos1_2_font.layout-test.41,43.otf} | Bin 1260 -> 1324 bytes
+ ...e.41,46.otf => gpos1_2_font.layout-test.41,46.otf} | Bin 1388 -> 1452 bytes
+ ...outline.41.otf => gpos1_2_font.layout-test.41.otf} | Bin 1152 -> 1212 bytes
+ ...e.42,44.otf => gpos1_2_font.layout-test.42,44.otf} | Bin
+ ...e.43,46.otf => gpos1_2_font.layout-test.43,46.otf} | Bin 1252 -> 1316 bytes
+ ...gpos1_2_font.layout-test.retain-all-codepoint.otf} | Bin 3780 -> 3848 bytes
+ ...pos2_1_font7.layout-test-retain-gids.21,23,25.otf} | Bin 1656 -> 1728 bytes
+ ...> gpos2_1_font7.layout-test-retain-gids.21,23.otf} | Bin 1532 -> 1604 bytes
+ ...> gpos2_1_font7.layout-test-retain-gids.2E,23.otf} | Bin
+ ...pos2_1_font7.layout-test-retain-gids.41,42,43.otf} | Bin
+ ....layout-test-retain-gids.retain-all-codepoint.otf} | Bin 3780 -> 3868 bytes
+ ...,25.otf => gpos2_1_font7.layout-test.21,23,25.otf} | Bin 1312 -> 1384 bytes
+ ....21,23.otf => gpos2_1_font7.layout-test.21,23.otf} | Bin 1204 -> 1276 bytes
+ ....2E,23.otf => gpos2_1_font7.layout-test.2E,23.otf} | Bin
+ ...,43.otf => gpos2_1_font7.layout-test.41,42,43.otf} | Bin
+ ...pos2_1_font7.layout-test.retain-all-codepoint.otf} | Bin 3780 -> 3868 bytes
+ ...gpos2_2_font5.layout-test-retain-gids.21,23,25.otf | Bin 0 -> 1780 bytes
+ .../gpos2_2_font5.layout-test-retain-gids.21,23.otf   | Bin 0 -> 1656 bytes
+ ...> gpos2_2_font5.layout-test-retain-gids.2E,23.otf} | Bin
+ ...pos2_2_font5.layout-test-retain-gids.41,42,43.otf} | Bin
+ ...5.layout-test-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3904 bytes
+ .../gpos2_2_font5.layout-test.21,23,25.otf            | Bin 0 -> 1436 bytes
+ .../layout.gpos2/gpos2_2_font5.layout-test.21,23.otf  | Bin 0 -> 1328 bytes
+ ....2E,23.otf => gpos2_2_font5.layout-test.2E,23.otf} | Bin
+ ...,43.otf => gpos2_2_font5.layout-test.41,42,43.otf} | Bin
+ ...gpos2_2_font5.layout-test.retain-all-codepoint.otf | Bin 0 -> 3904 bytes
+ ...s2_2_font5.notdef-outline-retain-gids.21,23,25.otf | Bin 1656 -> 0 bytes
+ ...gpos2_2_font5.notdef-outline-retain-gids.21,23.otf | Bin 1532 -> 0 bytes
+ ...otdef-outline-retain-gids.retain-all-codepoint.otf | Bin 3780 -> 0 bytes
+ .../gpos2_2_font5.notdef-outline.21,23,25.otf         | Bin 1312 -> 0 bytes
+ .../gpos2_2_font5.notdef-outline.21,23.otf            | Bin 1204 -> 0 bytes
+ ...s2_2_font5.notdef-outline.retain-all-codepoint.otf | Bin 3780 -> 0 bytes
+ ... => gpos3_font3.layout-test-retain-gids.28,29.otf} | Bin 1616 -> 1700 bytes
+ ... => gpos3_font3.layout-test-retain-gids.28,2B.otf} | Bin 1752 -> 1836 bytes
+ ... => gpos3_font3.layout-test-retain-gids.29,2B.otf} | Bin 1664 -> 1744 bytes
+ ... gpos3_font3.layout-test-retain-gids.41,42,43.otf} | Bin
+ ....layout-test-retain-gids.retain-all-codepoint.otf} | Bin 3876 -> 3908 bytes
+ ...ne.28,29.otf => gpos3_font3.layout-test.28,29.otf} | Bin 1224 -> 1308 bytes
+ ...ne.28,2B.otf => gpos3_font3.layout-test.28,2B.otf} | Bin 1344 -> 1428 bytes
+ ...ne.29,2B.otf => gpos3_font3.layout-test.29,2B.otf} | Bin 1256 -> 1336 bytes
+ ...42,43.otf => gpos3_font3.layout-test.41,42,43.otf} | Bin
+ .../gpos3_font3.layout-test.retain-all-codepoint.otf} | Bin 3876 -> 3908 bytes
+ ..._anchors_1.layout-test-retain-gids.41,42,43,44.otf | Bin 0 -> 2336 bytes
+ ..._anchors_1.layout-test-retain-gids.41,42,43,45.otf | Bin 0 -> 2332 bytes
+ ...le_anchors_1.layout-test-retain-gids.41,42,43.otf} | Bin 1976 -> 2096 bytes
+ ...tiple_anchors_1.layout-test-retain-gids.41,42.otf} | Bin
+ ...hors_1.layout-test-retain-gids.41,43,44,45,46.otf} | Bin 2560 -> 2692 bytes
+ ...ple_anchors_1.layout-test-retain-gids.41,43,44.otf | Bin 0 -> 2328 bytes
+ ...ple_anchors_1.layout-test-retain-gids.41,43,45.otf | Bin 0 -> 2328 bytes
+ ...tiple_anchors_1.layout-test-retain-gids.41,43.otf} | Bin 1972 -> 2092 bytes
+ ...multiple_anchors_1.layout-test-retain-gids.41.otf} | Bin
+ ....layout-test-retain-gids.retain-all-codepoint.otf} | Bin 3844 -> 3996 bytes
+ ...os4_multiple_anchors_1.layout-test.41,42,43,44.otf | Bin 0 -> 1620 bytes
+ ...os4_multiple_anchors_1.layout-test.41,42,43,45.otf | Bin 0 -> 1600 bytes
+ .../gpos4_multiple_anchors_1.layout-test.41,42,43.otf | Bin 0 -> 1384 bytes
+ ...=> gpos4_multiple_anchors_1.layout-test.41,42.otf} | Bin
+ ...multiple_anchors_1.layout-test.41,43,44,45,46.otf} | Bin 1832 -> 1964 bytes
+ .../gpos4_multiple_anchors_1.layout-test.41,43,44.otf | Bin 0 -> 1604 bytes
+ .../gpos4_multiple_anchors_1.layout-test.41,43,45.otf | Bin 0 -> 1592 bytes
+ .../gpos4_multiple_anchors_1.layout-test.41,43.otf    | Bin 0 -> 1372 bytes
+ ...tf => gpos4_multiple_anchors_1.layout-test.41.otf} | Bin
+ ...le_anchors_1.layout-test.retain-all-codepoint.otf} | Bin 3844 -> 3996 bytes
+ ...chors_1.notdef-outline-retain-gids.41,42,43,44.otf | Bin 2208 -> 0 bytes
+ ..._anchors_1.notdef-outline-retain-gids.41,42,43.otf | Bin 1996 -> 0 bytes
+ ...ple_anchors_1.notdef-outline-retain-gids.41,43.otf | Bin 2000 -> 0 bytes
+ ..._multiple_anchors_1.notdef-outline.41,42,43,44.otf | Bin 1492 -> 0 bytes
+ ..._multiple_anchors_1.notdef-outline.41,42,43,45.otf | Bin 1488 -> 0 bytes
+ ...os4_multiple_anchors_1.notdef-outline.41,42,43.otf | Bin 1284 -> 0 bytes
+ ...os4_multiple_anchors_1.notdef-outline.41,43,45.otf | Bin 1488 -> 0 bytes
+ .../gpos4_multiple_anchors_1.notdef-outline.41,43.otf | Bin 1280 -> 0 bytes
+ ...os5_font1.layout-test-retain-gids.41,42,43,44.otf} | Bin 2224 -> 2360 bytes
+ ...os5_font1.layout-test-retain-gids.41,42,43,45.otf} | Bin 2220 -> 2356 bytes
+ .../gpos5_font1.layout-test-retain-gids.41,42,43.otf  | Bin 0 -> 2120 bytes
+ ... gpos5_font1.layout-test-retain-gids.41,42,44.otf} | Bin 2144 -> 2276 bytes
+ .../gpos5_font1.layout-test-retain-gids.41,42,45.otf  | Bin 0 -> 2260 bytes
+ .../gpos5_font1.layout-test-retain-gids.41,42.otf     | Bin 0 -> 2012 bytes
+ ... => gpos5_font1.layout-test-retain-gids.41,43.otf} | Bin
+ ...otf => gpos5_font1.layout-test-retain-gids.41.otf} | Bin
+ ...otf => gpos5_font1.layout-test-retain-gids.42.otf} | Bin
+ ....layout-test-retain-gids.retain-all-codepoint.otf} | Bin 3860 -> 4064 bytes
+ ...44.otf => gpos5_font1.layout-test.41,42,43,44.otf} | Bin 1508 -> 1644 bytes
+ .../gpos5_font1.layout-test.41,42,43,45.otf           | Bin 0 -> 1624 bytes
+ .../layout.gpos5/gpos5_font1.layout-test.41,42,43.otf | Bin 0 -> 1408 bytes
+ ...42,44.otf => gpos5_font1.layout-test.41,42,44.otf} | Bin 1420 -> 1552 bytes
+ .../layout.gpos5/gpos5_font1.layout-test.41,42,45.otf | Bin 0 -> 1524 bytes
+ .../layout.gpos5/gpos5_font1.layout-test.41,42.otf    | Bin 0 -> 1304 bytes
+ ...ne.41,43.otf => gpos5_font1.layout-test.41,43.otf} | Bin
+ ...-outline.41.otf => gpos5_font1.layout-test.41.otf} | Bin
+ ...-outline.42.otf => gpos5_font1.layout-test.42.otf} | Bin
+ ... gpos5_font1.layout-test.retain-all-codepoint.otf} | Bin 3860 -> 4064 bytes
+ ...5_font1.notdef-outline-retain-gids.41,42,43,45.otf | Bin 2236 -> 0 bytes
+ ...pos5_font1.notdef-outline-retain-gids.41,42,43.otf | Bin 2012 -> 0 bytes
+ ...pos5_font1.notdef-outline-retain-gids.41,42,45.otf | Bin 2144 -> 0 bytes
+ .../gpos5_font1.notdef-outline-retain-gids.41,42.otf  | Bin 1908 -> 0 bytes
+ .../gpos5_font1.notdef-outline.41,42,43,45.otf        | Bin 1504 -> 0 bytes
+ .../gpos5_font1.notdef-outline.41,42,43.otf           | Bin 1300 -> 0 bytes
+ .../gpos5_font1.notdef-outline.41,42,45.otf           | Bin 1408 -> 0 bytes
+ .../layout.gpos5/gpos5_font1.notdef-outline.41,42.otf | Bin 1200 -> 0 bytes
+ ...os6_font1.layout-test-retain-gids.41,42,43,44.otf} | Bin 2184 -> 2312 bytes
+ ...pos6_font1.layout-test-retain-gids.41,42,43,45.otf | Bin 0 -> 2308 bytes
+ .../gpos6_font1.layout-test-retain-gids.41,42,43.otf} | Bin 2016 -> 2072 bytes
+ ... => gpos6_font1.layout-test-retain-gids.41,42.otf} | Bin
+ ..._font1.layout-test-retain-gids.41,43,44,45,46.otf} | Bin 2536 -> 2668 bytes
+ .../gpos6_font1.layout-test-retain-gids.41,43,44.otf} | Bin 2216 -> 2304 bytes
+ .../gpos6_font1.layout-test-retain-gids.41,43,45.otf} | Bin 2224 -> 2304 bytes
+ .../gpos6_font1.layout-test-retain-gids.41,43.otf     | Bin 0 -> 2068 bytes
+ ...otf => gpos6_font1.layout-test-retain-gids.41.otf} | Bin
+ ....layout-test-retain-gids.retain-all-codepoint.otf} | Bin 3820 -> 3972 bytes
+ ...44.otf => gpos6_font1.layout-test.41,42,43,44.otf} | Bin 1468 -> 1596 bytes
+ .../gpos6_font1.layout-test.41,42,43,45.otf           | Bin 0 -> 1576 bytes
+ .../layout.gpos6/gpos6_font1.layout-test.41,42,43.otf | Bin 0 -> 1360 bytes
+ ...ne.41,42.otf => gpos6_font1.layout-test.41,42.otf} | Bin
+ ...otf => gpos6_font1.layout-test.41,43,44,45,46.otf} | Bin 1808 -> 1940 bytes
+ .../gpos6_font1.layout-test.41,43,44.otf}             | Bin 1492 -> 1580 bytes
+ .../layout.gpos6/gpos6_font1.layout-test.41,43,45.otf | Bin 0 -> 1568 bytes
+ .../layout.gpos6/gpos6_font1.layout-test.41,43.otf    | Bin 0 -> 1348 bytes
+ ...-outline.41.otf => gpos6_font1.layout-test.41.otf} | Bin
+ ... gpos6_font1.layout-test.retain-all-codepoint.otf} | Bin 3820 -> 3972 bytes
+ ...6_font1.notdef-outline-retain-gids.41,42,43,45.otf | Bin 2196 -> 0 bytes
+ ...pos6_font1.notdef-outline-retain-gids.41,43,44.otf | Bin 2192 -> 0 bytes
+ ...pos6_font1.notdef-outline-retain-gids.41,43,45.otf | Bin 2200 -> 0 bytes
+ .../gpos6_font1.notdef-outline.41,42,43,45.otf        | Bin 1464 -> 0 bytes
+ .../gpos6_font1.notdef-outline.41,42,43.otf           | Bin 1260 -> 0 bytes
+ .../gpos6_font1.notdef-outline.41,43,44.otf           | Bin 1468 -> 0 bytes
+ .../gpos6_font1.notdef-outline.41,43,45.otf           | Bin 1464 -> 0 bytes
+ .../layout.gpos6/gpos6_font1.notdef-outline.41,43.otf | Bin 1256 -> 0 bytes
+ ...ubrules_f1.layout-test-retain-gids.30,31,32,33.otf | Bin 0 -> 2400 bytes
+ ..._subrules_f1.layout-test-retain-gids.41,42,43.otf} | Bin
+ ...1.layout-test-retain-gids.retain-all-codepoint.otf | Bin 0 -> 4012 bytes
+ ...1_multiple_subrules_f1.layout-test.30,31,32,33.otf | Bin 0 -> 1928 bytes
+ ...ng1_multiple_subrules_f1.layout-test.41,42,43.otf} | Bin
+ ...e_subrules_f1.layout-test.retain-all-codepoint.otf | Bin 0 -> 4012 bytes
+ ...ules_f1.notdef-outline-retain-gids.30,31,32,33.otf | Bin 2292 -> 0 bytes
+ ...ultiple_subrules_f1.notdef-outline.30,31,32,33.otf | Bin 1820 -> 0 bytes
+ ...ubrules_f1.layout-test-retain-gids.30,31,32,33.otf | Bin 0 -> 2420 bytes
+ ..._subrules_f1.layout-test-retain-gids.41,42,43.otf} | Bin
+ ...1.layout-test-retain-gids.retain-all-codepoint.otf | Bin 0 -> 4044 bytes
+ ...2_multiple_subrules_f1.layout-test.30,31,32,33.otf | Bin 0 -> 1948 bytes
+ ...ng2_multiple_subrules_f1.layout-test.41,42,43.otf} | Bin
+ ...e_subrules_f1.layout-test.retain-all-codepoint.otf | Bin 0 -> 4044 bytes
+ ...ules_f1.notdef-outline-retain-gids.30,31,32,33.otf | Bin 2292 -> 0 bytes
+ ...ultiple_subrules_f1.notdef-outline.30,31,32,33.otf | Bin 1820 -> 0 bytes
+ ..._simple_f1.layout-test-retain-gids.30,31,32,33.otf | Bin 0 -> 2392 bytes
+ ...g3_simple_f1.layout-test-retain-gids.41,42,43.otf} | Bin
+ ...1.layout-test-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3980 bytes
+ ...os_chaining3_simple_f1.layout-test.30,31,32,33.otf | Bin 0 -> 1920 bytes
+ ...gpos_chaining3_simple_f1.layout-test.41,42,43.otf} | Bin
+ ...ng3_simple_f1.layout-test.retain-all-codepoint.otf | Bin 0 -> 3980 bytes
+ ...mple_f1.notdef-outline-retain-gids.30,31,32,33.otf | Bin 2268 -> 0 bytes
+ ...otdef-outline-retain-gids.retain-all-codepoint.otf | Bin 3856 -> 0 bytes
+ ...chaining3_simple_f1.notdef-outline.30,31,32,33.otf | Bin 1796 -> 0 bytes
+ ..._simple_f1.notdef-outline.retain-all-codepoint.otf | Bin 3856 -> 0 bytes
+ .../gpos9_font2.layout-test-retain-gids.41,42.otf     | Bin 0 -> 1960 bytes
+ ...otf => gpos9_font2.layout-test-retain-gids.41.otf} | Bin 1852 -> 1920 bytes
+ ...otf => gpos9_font2.layout-test-retain-gids.42.otf} | Bin 1724 -> 1792 bytes
+ .../layout.gpos9/gpos9_font2.layout-test.41,42.otf    | Bin 0 -> 1252 bytes
+ ...-outline.41.otf => gpos9_font2.layout-test.41.otf} | Bin 1148 -> 1216 bytes
+ ...-outline.42.otf => gpos9_font2.layout-test.42.otf} | Bin 1008 -> 1076 bytes
+ .../gpos9_font2.notdef-outline-retain-gids.41,42.otf  | Bin 1868 -> 0 bytes
+ .../layout.gpos9/gpos9_font2.notdef-outline.41,42.otf | Bin 1160 -> 0 bytes
+ .../gsub_alternate_substitution.default.53A9.otf      | Bin 3884 -> 0 bytes
+ .../gsub_alternate_substitution.default.53F1.otf      | Bin 2440 -> 0 bytes
+ ...ubstitution.layout-test-retain-gids.53A9,53F1.otf} | Bin 4440 -> 5076 bytes
+ ...nate_substitution.layout-test-retain-gids.53A9.otf | Bin 0 -> 4656 bytes
+ ...nate_substitution.layout-test-retain-gids.53F1.otf | Bin 0 -> 2996 bytes
+ ....layout-test-retain-gids.retain-all-codepoint.otf} | Bin 6076 -> 6764 bytes
+ ..._alternate_substitution.layout-test.53A9,53F1.otf} | Bin 4316 -> 4952 bytes
+ .../gsub_alternate_substitution.layout-test.53A9.otf  | Bin 0 -> 4504 bytes
+ .../gsub_alternate_substitution.layout-test.53F1.otf  | Bin 0 -> 2804 bytes
+ ...substitution.layout-test.retain-all-codepoint.otf} | Bin 5984 -> 6672 bytes
+ .../gsub_alternate_substitution.retain-gids.53A9.otf  | Bin 4036 -> 0 bytes
+ .../gsub_alternate_substitution.retain-gids.53F1.otf  | Bin 2632 -> 0 bytes
+ ...e_subrules_f2.layout-test-retain-gids.41,42,43.otf | Bin 0 -> 2236 bytes
+ ...iple_subrules_f2.layout-test-retain-gids.41,42.otf | Bin 0 -> 2208 bytes
+ ...ple_subrules_f2.layout-test-retain-gids.41,43.otf} | Bin
+ ...ltiple_subrules_f2.layout-test-retain-gids.41.otf} | Bin
+ ....layout-test-retain-gids.retain-all-codepoint.otf} | Bin 3880 -> 3988 bytes
+ ...ext1_multiple_subrules_f2.layout-test.41,42,43.otf | Bin 0 -> 1440 bytes
+ ...ontext1_multiple_subrules_f2.layout-test.41,42.otf | Bin 0 -> 1400 bytes
+ ...ntext1_multiple_subrules_f2.layout-test.41,43.otf} | Bin
+ ..._context1_multiple_subrules_f2.layout-test.41.otf} | Bin
+ ..._subrules_f2.layout-test.retain-all-codepoint.otf} | Bin 3880 -> 3988 bytes
+ ...ubrules_f2.notdef-outline-retain-gids.41,42,43.otf | Bin 2028 -> 0 bytes
+ ...e_subrules_f2.notdef-outline-retain-gids.41,42.otf | Bin 1924 -> 0 bytes
+ ...otdef-outline-retain-gids.retain-all-codepoint.otf | Bin 3888 -> 0 bytes
+ ...1_multiple_subrules_f2.notdef-outline.41,42,43.otf | Bin 1316 -> 0 bytes
+ ...ext1_multiple_subrules_f2.notdef-outline.41,42.otf | Bin 1216 -> 0 bytes
+ ...ubrules_f2.notdef-outline.retain-all-codepoint.otf | Bin 3888 -> 0 bytes
+ ...e_subrules_f2.layout-test-retain-gids.41,42,43.otf | Bin 0 -> 2256 bytes
+ ...iple_subrules_f2.layout-test-retain-gids.41,42.otf | Bin 0 -> 2224 bytes
+ ...ple_subrules_f2.layout-test-retain-gids.41,43.otf} | Bin
+ ...ltiple_subrules_f2.layout-test-retain-gids.41.otf} | Bin
+ ....layout-test-retain-gids.retain-all-codepoint.otf} | Bin 3880 -> 4008 bytes
+ ...ext2_multiple_subrules_f2.layout-test.41,42,43.otf | Bin 0 -> 1460 bytes
+ ...ontext2_multiple_subrules_f2.layout-test.41,42.otf | Bin 0 -> 1416 bytes
+ ...ntext2_multiple_subrules_f2.layout-test.41,43.otf} | Bin
+ ..._context2_multiple_subrules_f2.layout-test.41.otf} | Bin
+ ..._subrules_f2.layout-test.retain-all-codepoint.otf} | Bin 3880 -> 4008 bytes
+ ...ubrules_f2.notdef-outline-retain-gids.41,42,43.otf | Bin 2028 -> 0 bytes
+ ...e_subrules_f2.notdef-outline-retain-gids.41,42.otf | Bin 1924 -> 0 bytes
+ ...otdef-outline-retain-gids.retain-all-codepoint.otf | Bin 3888 -> 0 bytes
+ ...2_multiple_subrules_f2.notdef-outline.41,42,43.otf | Bin 1316 -> 0 bytes
+ ...ext2_multiple_subrules_f2.notdef-outline.41,42.otf | Bin 1216 -> 0 bytes
+ ...ubrules_f2.notdef-outline.retain-all-codepoint.otf | Bin 3888 -> 0 bytes
+ ...uccessive_f1.layout-test-retain-gids.41,42,43.otf} | Bin
+ ...3_successive_f1.layout-test-retain-gids.41,42.otf} | Bin
+ ...3_successive_f1.layout-test-retain-gids.41,43.otf} | Bin
+ ...ext3_successive_f1.layout-test-retain-gids.41.otf} | Bin
+ ....layout-test-retain-gids.retain-all-codepoint.otf} | Bin 3876 -> 4008 bytes
+ ...b_context3_successive_f1.layout-test.41,42,43.otf} | Bin
+ ...gsub_context3_successive_f1.layout-test.41,42.otf} | Bin
+ ...gsub_context3_successive_f1.layout-test.41,43.otf} | Bin
+ ...=> gsub_context3_successive_f1.layout-test.41.otf} | Bin
+ ...uccessive_f1.layout-test.retain-all-codepoint.otf} | Bin 3876 -> 4008 bytes
+ ...brules_f1.layout-test-retain-gids.30,31,32,33.otf} | Bin 2304 -> 2372 bytes
+ ..._subrules_f1.layout-test-retain-gids.41,42,43.otf} | Bin
+ ....layout-test-retain-gids.retain-all-codepoint.otf} | Bin 3876 -> 3984 bytes
+ ..._multiple_subrules_f1.layout-test.30,31,32,33.otf} | Bin 1832 -> 1900 bytes
+ ...ng1_multiple_subrules_f1.layout-test.41,42,43.otf} | Bin
+ ..._subrules_f1.layout-test.retain-all-codepoint.otf} | Bin 3876 -> 3984 bytes
+ ...otdef-outline-retain-gids.retain-all-codepoint.otf | Bin 3892 -> 0 bytes
+ ...ubrules_f1.notdef-outline.retain-all-codepoint.otf | Bin 3892 -> 0 bytes
+ ...brules_f1.layout-test-retain-gids.30,31,32,33.otf} | Bin 2304 -> 2400 bytes
+ ..._subrules_f1.layout-test-retain-gids.41,42,43.otf} | Bin
+ ...1.layout-test-retain-gids.retain-all-codepoint.otf | Bin 0 -> 4016 bytes
+ ...2_multiple_subrules_f1.layout-test.30,31,32,33.otf | Bin 0 -> 1928 bytes
+ ...ng2_multiple_subrules_f1.layout-test.41,42,43.otf} | Bin
+ ...e_subrules_f1.layout-test.retain-all-codepoint.otf | Bin 0 -> 4016 bytes
+ ...otdef-outline-retain-gids.retain-all-codepoint.otf | Bin 3892 -> 0 bytes
+ ...ultiple_subrules_f1.notdef-outline.30,31,32,33.otf | Bin 1832 -> 0 bytes
+ ...ubrules_f1.notdef-outline.retain-all-codepoint.otf | Bin 3892 -> 0 bytes
+ ..._simple_f2.layout-test-retain-gids.30,31,32,33.otf | Bin 0 -> 2360 bytes
+ ...g3_simple_f2.layout-test-retain-gids.41,42,43.otf} | Bin
+ ....layout-test-retain-gids.retain-all-codepoint.otf} | Bin 3812 -> 3952 bytes
+ ...ub_chaining3_simple_f2.layout-test.30,31,32,33.otf | Bin 0 -> 1888 bytes
+ ...gsub_chaining3_simple_f2.layout-test.41,42,43.otf} | Bin
+ ...g3_simple_f2.layout-test.retain-all-codepoint.otf} | Bin 3812 -> 3952 bytes
+ ...mple_f2.notdef-outline-retain-gids.30,31,32,33.otf | Bin 2280 -> 0 bytes
+ ...otdef-outline-retain-gids.retain-all-codepoint.otf | Bin 3868 -> 0 bytes
+ ...chaining3_simple_f2.notdef-outline.30,31,32,33.otf | Bin 1808 -> 0 bytes
+ ..._simple_f2.notdef-outline.retain-all-codepoint.otf | Bin 3868 -> 0 bytes
+ ...t-test-retain-gids.41,42,43,44,45,46,47,48,49.otf} | Bin 2916 -> 3208 bytes
+ ...d.layout-test-retain-gids.41,42,43,44,45,46,47.otf | Bin 0 -> 2828 bytes
+ ...d.layout-test-retain-gids.41,42,43,44,45,46,4D.otf | Bin 0 -> 2896 bytes
+ ....layout-test-retain-gids.41,42,43,44,45,46,51.otf} | Bin 2624 -> 2900 bytes
+ ...ted.layout-test-retain-gids.41,42,43,44,45,46.otf} | Bin
+ ...ally_created.layout-test-retain-gids.41,42,43.otf} | Bin
+ ...8_manually_created.layout-test-retain-gids.41.otf} | Bin
+ ...b8_manually_created.layout-test-retain-gids.61.otf | Bin 0 -> 2608 bytes
+ ....layout-test-retain-gids.retain-all-codepoint.otf} | Bin 3868 -> 4048 bytes
+ ...reated.layout-test.41,42,43,44,45,46,47,48,49.otf} | Bin 2188 -> 2404 bytes
+ ...ally_created.layout-test.41,42,43,44,45,46,47.otf} | Bin 1948 -> 2012 bytes
+ ...ually_created.layout-test.41,42,43,44,45,46,4D.otf | Bin 0 -> 2012 bytes
+ ...ually_created.layout-test.41,42,43,44,45,46,51.otf | Bin 0 -> 2060 bytes
+ ...anually_created.layout-test.41,42,43,44,45,46.otf} | Bin
+ ...> gsub8_manually_created.layout-test.41,42,43.otf} | Bin
+ ....otf => gsub8_manually_created.layout-test.41.otf} | Bin
+ .../gsub8_manually_created.layout-test.61.otf         | Bin 0 -> 1556 bytes
+ ...ally_created.layout-test.retain-all-codepoint.otf} | Bin 3868 -> 4048 bytes
+ ...otdef-outline-retain-gids.41,42,43,44,45,46,4D.otf | Bin 2668 -> 0 bytes
+ ...otdef-outline-retain-gids.41,42,43,44,45,46,51.otf | Bin 2792 -> 0 bytes
+ ...manually_created.notdef-outline-retain-gids.61.otf | Bin 2292 -> 0 bytes
+ ...ly_created.notdef-outline.41,42,43,44,45,46,47.otf | Bin 1904 -> 0 bytes
+ ...ly_created.notdef-outline.41,42,43,44,45,46,4D.otf | Bin 1868 -> 0 bytes
+ .../gsub8_manually_created.notdef-outline.61.otf      | Bin 1236 -> 0 bytes
+ test/subset/data/profiles/layout-test-retain-gids.txt |   3 +++
+ test/subset/data/profiles/layout-test.txt             |   2 ++
+ test/subset/data/tests/layout.context.tests           |   4 ++--
+ test/subset/data/tests/layout.gdef-varstore.tests     |   4 ++--
+ test/subset/data/tests/layout.gpos.tests              |   4 ++--
+ test/subset/data/tests/layout.gpos2.tests             |   4 ++--
+ test/subset/data/tests/layout.gpos3.tests             |   4 ++--
+ test/subset/data/tests/layout.gpos4.tests             |   4 ++--
+ test/subset/data/tests/layout.gpos5.tests             |   4 ++--
+ test/subset/data/tests/layout.gpos6.tests             |   4 ++--
+ test/subset/data/tests/layout.gpos8.tests             |   4 ++--
+ test/subset/data/tests/layout.gpos9.tests             |   4 ++--
+ test/subset/data/tests/layout.gsub3.tests             |   4 ++--
+ test/subset/data/tests/layout.gsub5.tests             |   4 ++--
+ test/subset/data/tests/layout.gsub6.tests             |   4 ++--
+ test/subset/data/tests/layout.gsub8.tests             |   4 ++--
+ 340 files changed, 33 insertions(+), 28 deletions(-)
+
+commit 7620da0f2b2ec83db401f598c1e1ab22c0cfa91d
+Merge: c0f3af91b ccc2a1921
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 12 14:55:33 2021 -0600
+
+    Merge pull request #3142 from harfbuzz/subset-preload-face
+    
+    [util/hb-subset] preload face
+
+commit c0f3af91b80bcaa32d216eac6843c5036e446e25
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Aug 11 16:20:05 2021 -0700
+
+    [subset] speed up add_gid_and_children and adjust op limit.
+    
+    Fix for fuzzer timeout: https://oss-fuzz.com/testcase-detail/5001604901240832.
+    
+    - Operation limit is per glyph, so 100,000 should still be far more than needed.
+    - Switches from for(...) to while(...) loop for iteration. for(...) calls it.end() which in this case triggers a complete iteration.
+    - Cache CompositeGlyph size in the iterator to avoid needing to recalculate it.
+
+ src/hb-ot-glyf-table.hh                            |  48 +++++++++++++++------
+ ...ase-minimized-hb-subset-fuzzer-5001604901240832 | Bin 0 -> 165568 bytes
+ 2 files changed, 34 insertions(+), 14 deletions(-)
+
+commit ccc2a1921a2beab5d7570145a9474870cf25d02a
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 12 12:44:52 2021 -0600
+
+    [util/hb-subset] Whitespace
+
+ util/hb-subset.cc | 57 +++++++++++++++++++++++++++----------------------------
+ 1 file changed, 28 insertions(+), 29 deletions(-)
+
+commit 4dfc668e0a745cfb6d06d731adf71198cb4cb610
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 12 12:40:21 2021 -0600
+
+    [util/hb-subset] Move glyph name parsing inline instead of post_parse
+    
+    Now that we have face around we can just do it as it happens.
+
+ util/hb-subset.cc | 85 +++++++++++++++++++------------------------------------
+ 1 file changed, 29 insertions(+), 56 deletions(-)
+
+commit 08d43d1ba188ffb99eeeb50f6bc20b2f10701318
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 12 11:40:56 2021 -0600
+
+    [util/hb-subset] Move add_all_unicodes inline, instead of post_parse
+    
+    Now that we have the font loaded, we can do it as it happens.
+
+ util/hb-subset.cc | 19 +++++++++----------
+ 1 file changed, 9 insertions(+), 10 deletions(-)
+
+commit 11b0b688538b54f13069416a4a47a4db1eba6ae6
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 12 11:38:28 2021 -0600
+
+    [util/hb-subset] Pre-parse font-face so we can use it during main parsing
+
+ util/face-options.hh |  3 +++
+ util/hb-subset.cc    | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ util/options.hh      | 23 +++++++++++++++--------
+ 3 files changed, 69 insertions(+), 8 deletions(-)
+
+commit c45d2a9c9dbdf3f0936f56f12706e8725078883b
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 12 11:17:26 2021 -0600
+
+    [util] Allow setting cli summary / description
+
+ util/hb-ot-shape-closure.cc |  1 +
+ util/hb-shape.cc            |  1 +
+ util/hb-subset.cc           |  2 ++
+ util/options.hh             | 13 +++++++++++--
+ util/view-cairo.hh          |  1 +
+ 5 files changed, 16 insertions(+), 2 deletions(-)
+
+commit 4f3b7b7035b12991a155f2775ddadd1ecd824ecb
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 12 11:05:31 2021 -0600
+
+    [util] Remove unused usage
+
+ util/options.hh | 9 +--------
+ 1 file changed, 1 insertion(+), 8 deletions(-)
+
+commit 1cb621d35d1e8e47d868f4ef6a9d186aa835e708
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 12 10:58:19 2021 -0600
+
+    [util/hb-subset] Minor move parsing
+
+ util/hb-subset.cc | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+commit 3f94177ee80a120afcb2275608473b9da63811d0
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 12 10:43:31 2021 -0600
+
+    [util] Use g_set_error() in one more place
+
+ util/font-options.hh | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+commit 4d73b3d9b1575b9b71ba21886cc130f8bb7591ee
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 12 10:39:46 2021 -0600
+
+    [util] Add --batch to hb-view / hb-ot-shape-closure
+
+ util/batch.hh               |  2 ++
+ util/hb-ot-shape-closure.cc |  8 +++++---
+ util/hb-shape.cc            |  8 ++++----
+ util/hb-subset.cc           |  6 ++----
+ util/hb-view.cc             | 10 ++++++----
+ 5 files changed, 19 insertions(+), 15 deletions(-)
+
+commit 302bde0bfbb29208a974bd50b1af09a154efbd45
+Merge: 43722cc9f 23282c9c9
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 23:05:11 2021 -0600
+
+    Merge pull request #3135 from harfbuzz/post-parse
+    
+    [util] Clean up option parsing some more and implement missing featuress
+
+commit 23282c9c9d057c715dde93d18167de9329931354
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 22:49:47 2021 -0600
+
+    [util/hb-subset] Support ranges in --unicodes / --unicodes-file
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/3109
+
+ test/shape/hb_test_tools.py |  2 +-
+ util/hb-subset.cc           | 68 ++++++++++++++++++++++++++++++---------------
+ util/text-options.hh        |  3 +-
+ 3 files changed, 48 insertions(+), 25 deletions(-)
+
+commit f60f005b1fec38dcb0630b01520a7b8a105759c5
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 22:36:00 2021 -0600
+
+    [util/hb-subset] Remove wrong hb_set_destroy() in error paths
+
+ util/hb-subset.cc | 5 -----
+ 1 file changed, 5 deletions(-)
+
+commit 49cf36027c5ad8092966983f9c2e438cbef00c15
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 22:34:14 2021 -0600
+
+    [util/hb-subset] Parse --gids-file, --glyphs-file, --text-file, --unicodes-file
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/2455
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/3002
+
+ util/hb-subset.cc | 119 +++++++++++++++++++++++++++++++++++++++++-------------
+ 1 file changed, 92 insertions(+), 27 deletions(-)
+
+commit bf80b7ea457deb1fb72e7996e5f4d78a981e8a39
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 22:07:45 2021 -0600
+
+    [util/hb-subset] Add --glyphs for passing glyph names
+    
+    Part of https://github.com/harfbuzz/harfbuzz/issues/2455
+
+ util/hb-subset.cc | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 62 insertions(+), 1 deletion(-)
+
+commit 5b07c3c7d03b5ff6d35fafa3db402528d813af0a
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 21:14:55 2021 -0600
+
+    [util/hb-subset] Parse --text & --unicodes
+
+ util/Makefile.sources  |   1 -
+ util/hb-subset.cc      | 528 ++++++++++++++++++++++++++++++++++++++++++++-----
+ util/subset-options.hh | 399 -------------------------------------
+ util/text-options.hh   |   3 +-
+ 4 files changed, 475 insertions(+), 456 deletions(-)
+
+commit 4ec727e55f1f5479aa2be85f8ad4e0f1a4b922b6
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 20:46:16 2021 -0600
+
+    [util] Minor edit of failure messages
+
+ util/subset-options.hh | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit b83f25c749c219e2cb7ed6d819d638f97bf3ea62
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 20:42:20 2021 -0600
+
+    [util/hb-subset] Revamp option groups
+
+ util/shape-options.hh  |  3 ++-
+ util/subset-options.hh | 59 ++++++++++++++++++++++++++++++++++++++++----------
+ 2 files changed, 49 insertions(+), 13 deletions(-)
+
+commit 9a6055caa812a5c855ec604ce0c74a91236c0988
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 20:30:25 2021 -0600
+
+    [util/hb-ot-shape-closure] Remove unnecessary include
+
+ util/hb-ot-shape-closure.cc | 4 ----
+ 1 file changed, 4 deletions(-)
+
+commit c98773ebb0b47c682494de4a4c6b648a62698cec
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 20:22:03 2021 -0600
+
+    [util/hb-subset] Move output-file validation code into post_parse
+
+ util/hb-shape.cc       |   2 +-
+ util/hb-subset.cc      |   5 +--
+ util/helper-cairo.hh   |   2 +
+ util/output-options.hh | 120 ++++++++++++++++++++++++-------------------------
+ util/view-cairo.hh     |   2 +-
+ 5 files changed, 65 insertions(+), 66 deletions(-)
+
+commit 58bfe40794352afc162c651ff84cbacf5e751960
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 19:48:28 2021 -0600
+
+    [util] Move hb-subset away from main-font-text
+
+ test/subset/run-tests.py |   1 -
+ util/face-options.hh     |   6 ++
+ util/hb-shape.cc         |   8 +--
+ util/hb-subset.cc        | 146 ++++++++++++++++++++++++++++-------------------
+ util/helper-cairo.hh     |   4 +-
+ util/output-options.hh   |  15 +++--
+ util/shape-options.hh    |   9 ++-
+ util/text-options.hh     |  18 +++---
+ 8 files changed, 122 insertions(+), 85 deletions(-)
+
+commit 3147e081da35b9c3c03cc58970eb96f31958f4c4
+Merge: ba418cfc5 43722cc9f
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 19:33:00 2021 -0600
+
+    Merge branch 'main' into post-parse
+
+commit 43722cc9f428bbfa759d4d93008ba4cf6efaceba
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Thu Aug 12 02:32:29 2021 +0200
+
+    [test] Add some real reverse sub tests
+
+ .../fonts/1b66a1f4b076b734caa6397b3e57231af1feaafb.ttf   | Bin 0 -> 3220 bytes
+ .../fonts/3f24aff8b768e586162e9b9d03b15c36508dd2ae.ttf   | Bin 0 -> 5760 bytes
+ test/shaping/data/in-house/tests/reverse-sub.tests       |   2 ++
+ 3 files changed, 2 insertions(+)
+
+commit ba418cfc5218ac093b759e2c03a43234a786f6eb
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 19:29:07 2021 -0600
+
+    [util] Use automatic casts
+
+ util/view-cairo.hh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 97a9e4e41e9712fa52802d1043b7cecdde2ff2a2
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 19:28:16 2021 -0600
+
+    [util] Separate shape_text_options_t from text_options_t
+
+ util/hb-ot-shape-closure.cc | 15 ++++++----
+ util/hb-shape.cc            |  2 +-
+ util/hb-subset.cc           | 14 +++++----
+ util/hb-view.cc             |  2 +-
+ util/main-font-text.hh      |  6 ++--
+ util/shape-consumer.hh      | 16 ++++++----
+ util/text-options.hh        | 73 ++++++++++++++++++++++++++++++++++++++++-----
+ 7 files changed, 98 insertions(+), 30 deletions(-)
+
+commit 6ba7ddafed4cf80cdb4ff38700d96629d10eed64
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 19:06:57 2021 -0600
+
+    [util] Move text-file opening to post_parse
+
+ util/text-options.hh | 39 +++++++++++++++++++++------------------
+ 1 file changed, 21 insertions(+), 18 deletions(-)
+
+commit 23298bc846d34eb6a5465511df6219e3d94c3103
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 18:58:25 2021 -0600
+
+    [util] Remove unnecessary check
+
+ util/text-options.hh | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+commit fd0778aa2a8525d9b435304710c29598df6905cc
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 18:54:46 2021 -0600
+
+    [util] Use post_parse in output_options_t
+
+ util/hb-shape.cc       |  1 -
+ util/helper-cairo.hh   |  4 ++--
+ util/output-options.hh | 57 ++++++++++++++++++++++----------------------------
+ 3 files changed, 27 insertions(+), 35 deletions(-)
+
+commit 24a9d8c78db50e8082cb6ba258707f3d0e8333e7
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 18:47:06 2021 -0600
+
+    [util] Use post_parse in font_options_t
+
+ util/font-options.hh        | 15 +++++----------
+ util/hb-ot-shape-closure.cc |  2 +-
+ util/hb-shape.cc            |  2 +-
+ util/helper-cairo.hh        |  2 +-
+ util/shape-consumer.hh      |  2 +-
+ util/view-cairo.hh          |  2 +-
+ 6 files changed, 10 insertions(+), 15 deletions(-)
+
+commit e0d7060f80f8c4b9b8241c3a4d8faa33f48da86d
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 18:43:21 2021 -0600
+
+    [test] Rename shaping/ to shape/
+
+ configure.ac                                                |  10 +++++-----
+ test/Makefile.am                                            |   2 +-
+ test/meson.build                                            |   4 ++--
+ test/{shaping => shape}/Makefile.am                         |   0
+ test/{shaping => shape}/README.md                           |   0
+ test/{shaping => shape}/data/Makefile.am                    |   0
+ test/{shaping => shape}/data/aots/COPYING                   |   0
+ test/{shaping => shape}/data/aots/Makefile.am               |   0
+ test/{shaping => shape}/data/aots/Makefile.sources          |   0
+ test/{shaping => shape}/data/aots/fonts/classdef1_font1.otf | Bin
+ test/{shaping => shape}/data/aots/fonts/classdef1_font2.otf | Bin
+ test/{shaping => shape}/data/aots/fonts/classdef1_font3.otf | Bin
+ test/{shaping => shape}/data/aots/fonts/classdef1_font4.otf | Bin
+ test/{shaping => shape}/data/aots/fonts/classdef2_font1.otf | Bin
+ test/{shaping => shape}/data/aots/fonts/classdef2_font2.otf | Bin
+ test/{shaping => shape}/data/aots/fonts/classdef2_font3.otf | Bin
+ test/{shaping => shape}/data/aots/fonts/classdef2_font4.otf | Bin
+ test/{shaping => shape}/data/aots/fonts/cmap0_font1.otf     | Bin
+ test/{shaping => shape}/data/aots/fonts/cmap10_font1.otf    | Bin
+ test/{shaping => shape}/data/aots/fonts/cmap10_font2.otf    | Bin
+ test/{shaping => shape}/data/aots/fonts/cmap12_font1.otf    | Bin
+ test/{shaping => shape}/data/aots/fonts/cmap14_font1.otf    | Bin
+ test/{shaping => shape}/data/aots/fonts/cmap2_font1.otf     | Bin
+ test/{shaping => shape}/data/aots/fonts/cmap4_font1.otf     | Bin
+ test/{shaping => shape}/data/aots/fonts/cmap4_font2.otf     | Bin
+ test/{shaping => shape}/data/aots/fonts/cmap4_font3.otf     | Bin
+ test/{shaping => shape}/data/aots/fonts/cmap4_font4.otf     | Bin
+ test/{shaping => shape}/data/aots/fonts/cmap6_font1.otf     | Bin
+ test/{shaping => shape}/data/aots/fonts/cmap6_font2.otf     | Bin
+ test/{shaping => shape}/data/aots/fonts/cmap8_font1.otf     | Bin
+ .../data/aots/fonts/cmap_composition_font1.otf              | Bin
+ .../data/aots/fonts/cmap_subtableselection_font1.otf        | Bin
+ .../data/aots/fonts/cmap_subtableselection_font2.otf        | Bin
+ .../data/aots/fonts/cmap_subtableselection_font3.otf        | Bin
+ .../data/aots/fonts/cmap_subtableselection_font4.otf        | Bin
+ .../data/aots/fonts/cmap_subtableselection_font5.otf        | Bin
+ .../data/aots/fonts/gpos1_1_lookupflag_f1.otf               | Bin
+ .../data/aots/fonts/gpos1_1_simple_f1.otf                   | Bin
+ .../data/aots/fonts/gpos1_1_simple_f2.otf                   | Bin
+ .../data/aots/fonts/gpos1_1_simple_f3.otf                   | Bin
+ .../data/aots/fonts/gpos1_1_simple_f4.otf                   | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos1_2_font1.otf   | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos1_2_font2.otf   | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos2_1_font6.otf   | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos2_1_font7.otf   | Bin
+ .../data/aots/fonts/gpos2_1_lookupflag_f1.otf               | Bin
+ .../data/aots/fonts/gpos2_1_lookupflag_f2.otf               | Bin
+ .../data/aots/fonts/gpos2_1_next_glyph_f1.otf               | Bin
+ .../data/aots/fonts/gpos2_1_next_glyph_f2.otf               | Bin
+ .../data/aots/fonts/gpos2_1_simple_f1.otf                   | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos2_2_font1.otf   | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos2_2_font2.otf   | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos2_2_font3.otf   | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos2_2_font4.otf   | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos2_2_font5.otf   | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos3_font1.otf     | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos3_font2.otf     | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos3_font3.otf     | Bin
+ .../data/aots/fonts/gpos4_lookupflag_f1.otf                 | Bin
+ .../data/aots/fonts/gpos4_lookupflag_f2.otf                 | Bin
+ .../data/aots/fonts/gpos4_multiple_anchors_1.otf            | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos4_simple_1.otf  | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos5_font1.otf     | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos6_font1.otf     | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos7_1_font1.otf   | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos9_font1.otf     | Bin
+ test/{shaping => shape}/data/aots/fonts/gpos9_font2.otf     | Bin
+ .../data/aots/fonts/gpos_chaining1_boundary_f1.otf          | Bin
+ .../data/aots/fonts/gpos_chaining1_boundary_f2.otf          | Bin
+ .../data/aots/fonts/gpos_chaining1_boundary_f3.otf          | Bin
+ .../data/aots/fonts/gpos_chaining1_boundary_f4.otf          | Bin
+ .../data/aots/fonts/gpos_chaining1_lookupflag_f1.otf        | Bin
+ .../data/aots/fonts/gpos_chaining1_multiple_subrules_f1.otf | Bin
+ .../data/aots/fonts/gpos_chaining1_multiple_subrules_f2.otf | Bin
+ .../data/aots/fonts/gpos_chaining1_next_glyph_f1.otf        | Bin
+ .../data/aots/fonts/gpos_chaining1_simple_f1.otf            | Bin
+ .../data/aots/fonts/gpos_chaining1_simple_f2.otf            | Bin
+ .../data/aots/fonts/gpos_chaining1_successive_f1.otf        | Bin
+ .../data/aots/fonts/gpos_chaining2_boundary_f1.otf          | Bin
+ .../data/aots/fonts/gpos_chaining2_boundary_f2.otf          | Bin
+ .../data/aots/fonts/gpos_chaining2_boundary_f3.otf          | Bin
+ .../data/aots/fonts/gpos_chaining2_boundary_f4.otf          | Bin
+ .../data/aots/fonts/gpos_chaining2_lookupflag_f1.otf        | Bin
+ .../data/aots/fonts/gpos_chaining2_multiple_subrules_f1.otf | Bin
+ .../data/aots/fonts/gpos_chaining2_multiple_subrules_f2.otf | Bin
+ .../data/aots/fonts/gpos_chaining2_next_glyph_f1.otf        | Bin
+ .../data/aots/fonts/gpos_chaining2_simple_f1.otf            | Bin
+ .../data/aots/fonts/gpos_chaining2_simple_f2.otf            | Bin
+ .../data/aots/fonts/gpos_chaining2_successive_f1.otf        | Bin
+ .../data/aots/fonts/gpos_chaining3_boundary_f1.otf          | Bin
+ .../data/aots/fonts/gpos_chaining3_boundary_f2.otf          | Bin
+ .../data/aots/fonts/gpos_chaining3_boundary_f3.otf          | Bin
+ .../data/aots/fonts/gpos_chaining3_boundary_f4.otf          | Bin
+ .../data/aots/fonts/gpos_chaining3_lookupflag_f1.otf        | Bin
+ .../data/aots/fonts/gpos_chaining3_next_glyph_f1.otf        | Bin
+ .../data/aots/fonts/gpos_chaining3_simple_f1.otf            | Bin
+ .../data/aots/fonts/gpos_chaining3_simple_f2.otf            | Bin
+ .../data/aots/fonts/gpos_chaining3_successive_f1.otf        | Bin
+ .../data/aots/fonts/gpos_context1_boundary_f1.otf           | Bin
+ .../data/aots/fonts/gpos_context1_boundary_f2.otf           | Bin
+ .../data/aots/fonts/gpos_context1_expansion_f1.otf          | Bin
+ .../data/aots/fonts/gpos_context1_lookupflag_f1.otf         | Bin
+ .../data/aots/fonts/gpos_context1_lookupflag_f2.otf         | Bin
+ .../data/aots/fonts/gpos_context1_multiple_subrules_f1.otf  | Bin
+ .../data/aots/fonts/gpos_context1_multiple_subrules_f2.otf  | Bin
+ .../data/aots/fonts/gpos_context1_next_glyph_f1.otf         | Bin
+ .../data/aots/fonts/gpos_context1_simple_f1.otf             | Bin
+ .../data/aots/fonts/gpos_context1_simple_f2.otf             | Bin
+ .../data/aots/fonts/gpos_context1_successive_f1.otf         | Bin
+ .../data/aots/fonts/gpos_context2_boundary_f1.otf           | Bin
+ .../data/aots/fonts/gpos_context2_boundary_f2.otf           | Bin
+ .../data/aots/fonts/gpos_context2_classes_f1.otf            | Bin
+ .../data/aots/fonts/gpos_context2_classes_f2.otf            | Bin
+ .../data/aots/fonts/gpos_context2_expansion_f1.otf          | Bin
+ .../data/aots/fonts/gpos_context2_lookupflag_f1.otf         | Bin
+ .../data/aots/fonts/gpos_context2_lookupflag_f2.otf         | Bin
+ .../data/aots/fonts/gpos_context2_multiple_subrules_f1.otf  | Bin
+ .../data/aots/fonts/gpos_context2_multiple_subrules_f2.otf  | Bin
+ .../data/aots/fonts/gpos_context2_next_glyph_f1.otf         | Bin
+ .../data/aots/fonts/gpos_context2_simple_f1.otf             | Bin
+ .../data/aots/fonts/gpos_context2_simple_f2.otf             | Bin
+ .../data/aots/fonts/gpos_context2_successive_f1.otf         | Bin
+ .../data/aots/fonts/gpos_context3_boundary_f1.otf           | Bin
+ .../data/aots/fonts/gpos_context3_boundary_f2.otf           | Bin
+ .../data/aots/fonts/gpos_context3_lookupflag_f1.otf         | Bin
+ .../data/aots/fonts/gpos_context3_lookupflag_f2.otf         | Bin
+ .../data/aots/fonts/gpos_context3_next_glyph_f1.otf         | Bin
+ .../data/aots/fonts/gpos_context3_simple_f1.otf             | Bin
+ .../data/aots/fonts/gpos_context3_successive_f1.otf         | Bin
+ .../data/aots/fonts/gsub1_1_lookupflag_f1.otf               | Bin
+ .../data/aots/fonts/gsub1_1_modulo_f1.otf                   | Bin
+ .../data/aots/fonts/gsub1_1_simple_f1.otf                   | Bin
+ .../data/aots/fonts/gsub1_2_lookupflag_f1.otf               | Bin
+ .../data/aots/fonts/gsub1_2_simple_f1.otf                   | Bin
+ .../data/aots/fonts/gsub2_1_lookupflag_f1.otf               | Bin
+ .../data/aots/fonts/gsub2_1_multiple_sequences_f1.otf       | Bin
+ .../data/aots/fonts/gsub2_1_simple_f1.otf                   | Bin
+ .../data/aots/fonts/gsub3_1_lookupflag_f1.otf               | Bin
+ .../data/aots/fonts/gsub3_1_multiple_f1.otf                 | Bin
+ .../data/aots/fonts/gsub3_1_simple_f1.otf                   | Bin
+ .../data/aots/fonts/gsub4_1_lookupflag_f1.otf               | Bin
+ .../data/aots/fonts/gsub4_1_multiple_ligatures_f1.otf       | Bin
+ .../data/aots/fonts/gsub4_1_multiple_ligatures_f2.otf       | Bin
+ .../data/aots/fonts/gsub4_1_multiple_ligsets_f1.otf         | Bin
+ .../data/aots/fonts/gsub4_1_simple_f1.otf                   | Bin
+ test/{shaping => shape}/data/aots/fonts/gsub7_font1.otf     | Bin
+ test/{shaping => shape}/data/aots/fonts/gsub7_font2.otf     | Bin
+ .../data/aots/fonts/gsub_chaining1_boundary_f1.otf          | Bin
+ .../data/aots/fonts/gsub_chaining1_boundary_f2.otf          | Bin
+ .../data/aots/fonts/gsub_chaining1_boundary_f3.otf          | Bin
+ .../data/aots/fonts/gsub_chaining1_boundary_f4.otf          | Bin
+ .../data/aots/fonts/gsub_chaining1_lookupflag_f1.otf        | Bin
+ .../data/aots/fonts/gsub_chaining1_multiple_subrules_f1.otf | Bin
+ .../data/aots/fonts/gsub_chaining1_multiple_subrules_f2.otf | Bin
+ .../data/aots/fonts/gsub_chaining1_next_glyph_f1.otf        | Bin
+ .../data/aots/fonts/gsub_chaining1_simple_f1.otf            | Bin
+ .../data/aots/fonts/gsub_chaining1_simple_f2.otf            | Bin
+ .../data/aots/fonts/gsub_chaining1_successive_f1.otf        | Bin
+ .../data/aots/fonts/gsub_chaining2_boundary_f1.otf          | Bin
+ .../data/aots/fonts/gsub_chaining2_boundary_f2.otf          | Bin
+ .../data/aots/fonts/gsub_chaining2_boundary_f3.otf          | Bin
+ .../data/aots/fonts/gsub_chaining2_boundary_f4.otf          | Bin
+ .../data/aots/fonts/gsub_chaining2_lookupflag_f1.otf        | Bin
+ .../data/aots/fonts/gsub_chaining2_multiple_subrules_f1.otf | Bin
+ .../data/aots/fonts/gsub_chaining2_multiple_subrules_f2.otf | Bin
+ .../data/aots/fonts/gsub_chaining2_next_glyph_f1.otf        | Bin
+ .../data/aots/fonts/gsub_chaining2_simple_f1.otf            | Bin
+ .../data/aots/fonts/gsub_chaining2_simple_f2.otf            | Bin
+ .../data/aots/fonts/gsub_chaining2_successive_f1.otf        | Bin
+ .../data/aots/fonts/gsub_chaining3_boundary_f1.otf          | Bin
+ .../data/aots/fonts/gsub_chaining3_boundary_f2.otf          | Bin
+ .../data/aots/fonts/gsub_chaining3_boundary_f3.otf          | Bin
+ .../data/aots/fonts/gsub_chaining3_boundary_f4.otf          | Bin
+ .../data/aots/fonts/gsub_chaining3_lookupflag_f1.otf        | Bin
+ .../data/aots/fonts/gsub_chaining3_next_glyph_f1.otf        | Bin
+ .../data/aots/fonts/gsub_chaining3_simple_f1.otf            | Bin
+ .../data/aots/fonts/gsub_chaining3_simple_f2.otf            | Bin
+ .../data/aots/fonts/gsub_chaining3_successive_f1.otf        | Bin
+ .../data/aots/fonts/gsub_context1_boundary_f1.otf           | Bin
+ .../data/aots/fonts/gsub_context1_boundary_f2.otf           | Bin
+ .../data/aots/fonts/gsub_context1_expansion_f1.otf          | Bin
+ .../data/aots/fonts/gsub_context1_lookupflag_f1.otf         | Bin
+ .../data/aots/fonts/gsub_context1_lookupflag_f2.otf         | Bin
+ .../data/aots/fonts/gsub_context1_multiple_subrules_f1.otf  | Bin
+ .../data/aots/fonts/gsub_context1_multiple_subrules_f2.otf  | Bin
+ .../data/aots/fonts/gsub_context1_next_glyph_f1.otf         | Bin
+ .../data/aots/fonts/gsub_context1_simple_f1.otf             | Bin
+ .../data/aots/fonts/gsub_context1_simple_f2.otf             | Bin
+ .../data/aots/fonts/gsub_context1_successive_f1.otf         | Bin
+ .../data/aots/fonts/gsub_context2_boundary_f1.otf           | Bin
+ .../data/aots/fonts/gsub_context2_boundary_f2.otf           | Bin
+ .../data/aots/fonts/gsub_context2_classes_f1.otf            | Bin
+ .../data/aots/fonts/gsub_context2_classes_f2.otf            | Bin
+ .../data/aots/fonts/gsub_context2_expansion_f1.otf          | Bin
+ .../data/aots/fonts/gsub_context2_lookupflag_f1.otf         | Bin
+ .../data/aots/fonts/gsub_context2_lookupflag_f2.otf         | Bin
+ .../data/aots/fonts/gsub_context2_multiple_subrules_f1.otf  | Bin
+ .../data/aots/fonts/gsub_context2_multiple_subrules_f2.otf  | Bin
+ .../data/aots/fonts/gsub_context2_next_glyph_f1.otf         | Bin
+ .../data/aots/fonts/gsub_context2_simple_f1.otf             | Bin
+ .../data/aots/fonts/gsub_context2_simple_f2.otf             | Bin
+ .../data/aots/fonts/gsub_context2_successive_f1.otf         | Bin
+ .../data/aots/fonts/gsub_context3_boundary_f1.otf           | Bin
+ .../data/aots/fonts/gsub_context3_boundary_f2.otf           | Bin
+ .../data/aots/fonts/gsub_context3_lookupflag_f1.otf         | Bin
+ .../data/aots/fonts/gsub_context3_lookupflag_f2.otf         | Bin
+ .../data/aots/fonts/gsub_context3_next_glyph_f1.otf         | Bin
+ .../data/aots/fonts/gsub_context3_simple_f1.otf             | Bin
+ .../data/aots/fonts/gsub_context3_successive_f1.otf         | Bin
+ .../data/aots/fonts/lookupflag_ignore_attach_f1.otf         | Bin
+ .../data/aots/fonts/lookupflag_ignore_base_f1.otf           | Bin
+ .../data/aots/fonts/lookupflag_ignore_combination_f1.otf    | Bin
+ .../data/aots/fonts/lookupflag_ignore_ligatures_f1.otf      | Bin
+ .../data/aots/fonts/lookupflag_ignore_marks_f1.otf          | Bin
+ test/{shaping => shape}/data/aots/hb-aots-tester.cpp        |   0
+ test/{shaping => shape}/data/aots/meson.build               |   0
+ test/{shaping => shape}/data/aots/tests/classdef1.tests     |   0
+ .../data/aots/tests/classdef1_empty.tests                   |   0
+ .../data/aots/tests/classdef1_multiple.tests                |   0
+ .../data/aots/tests/classdef1_single.tests                  |   0
+ test/{shaping => shape}/data/aots/tests/classdef2.tests     |   0
+ .../data/aots/tests/classdef2_empty.tests                   |   0
+ .../data/aots/tests/classdef2_multiple.tests                |   0
+ .../data/aots/tests/classdef2_single.tests                  |   0
+ test/{shaping => shape}/data/aots/tests/cmap0.tests         |   0
+ test/{shaping => shape}/data/aots/tests/cmap10.tests        |   0
+ test/{shaping => shape}/data/aots/tests/cmap12.tests        |   0
+ test/{shaping => shape}/data/aots/tests/cmap2.tests         |   0
+ test/{shaping => shape}/data/aots/tests/cmap4.tests         |   0
+ test/{shaping => shape}/data/aots/tests/cmap6.tests         |   0
+ test/{shaping => shape}/data/aots/tests/cmap8.tests         |   0
+ .../data/aots/tests/gpos1_1_lookupflag.tests                |   0
+ .../{shaping => shape}/data/aots/tests/gpos1_1_simple.tests |   0
+ test/{shaping => shape}/data/aots/tests/gpos1_2.tests       |   0
+ .../data/aots/tests/gpos1_2_lookupflag.tests                |   0
+ test/{shaping => shape}/data/aots/tests/gpos2_1.tests       |   0
+ .../data/aots/tests/gpos2_1_lookupflag.tests                |   0
+ .../data/aots/tests/gpos2_1_next_glyph.tests                |   0
+ .../{shaping => shape}/data/aots/tests/gpos2_1_simple.tests |   0
+ test/{shaping => shape}/data/aots/tests/gpos2_2.tests       |   0
+ test/{shaping => shape}/data/aots/tests/gpos3.tests         |   0
+ .../data/aots/tests/gpos3_lookupflag.tests                  |   0
+ .../data/aots/tests/gpos4_lookupflag.tests                  |   0
+ .../data/aots/tests/gpos4_multiple_anchors.tests            |   0
+ test/{shaping => shape}/data/aots/tests/gpos4_simple.tests  |   0
+ test/{shaping => shape}/data/aots/tests/gpos5.tests         |   0
+ test/{shaping => shape}/data/aots/tests/gpos6.tests         |   0
+ test/{shaping => shape}/data/aots/tests/gpos7_1.tests       |   0
+ test/{shaping => shape}/data/aots/tests/gpos9.tests         |   0
+ .../data/aots/tests/gpos_chaining1_boundary.tests           |   0
+ .../data/aots/tests/gpos_chaining1_lookupflag.tests         |   0
+ .../data/aots/tests/gpos_chaining1_multiple_subrules.tests  |   0
+ .../data/aots/tests/gpos_chaining1_next_glyph.tests         |   0
+ .../data/aots/tests/gpos_chaining1_simple.tests             |   0
+ .../data/aots/tests/gpos_chaining1_successive.tests         |   0
+ .../data/aots/tests/gpos_chaining2_boundary.tests           |   0
+ .../data/aots/tests/gpos_chaining2_lookupflag.tests         |   0
+ .../data/aots/tests/gpos_chaining2_multiple_subrules.tests  |   0
+ .../data/aots/tests/gpos_chaining2_next_glyph.tests         |   0
+ .../data/aots/tests/gpos_chaining2_simple.tests             |   0
+ .../data/aots/tests/gpos_chaining2_successive.tests         |   0
+ .../data/aots/tests/gpos_chaining3_boundary.tests           |   0
+ .../data/aots/tests/gpos_chaining3_lookupflag.tests         |   0
+ .../data/aots/tests/gpos_chaining3_next_glyph.tests         |   0
+ .../data/aots/tests/gpos_chaining3_simple.tests             |   0
+ .../data/aots/tests/gpos_chaining3_successive.tests         |   0
+ .../data/aots/tests/gpos_context1_boundary.tests            |   0
+ .../data/aots/tests/gpos_context1_expansion.tests           |   0
+ .../data/aots/tests/gpos_context1_lookupflag.tests          |   0
+ .../data/aots/tests/gpos_context1_multiple_subrules.tests   |   0
+ .../data/aots/tests/gpos_context1_next_glyph.tests          |   0
+ .../data/aots/tests/gpos_context1_simple.tests              |   0
+ .../data/aots/tests/gpos_context1_successive.tests          |   0
+ .../data/aots/tests/gpos_context2_boundary.tests            |   0
+ .../data/aots/tests/gpos_context2_classes.tests             |   0
+ .../data/aots/tests/gpos_context2_expansion.tests           |   0
+ .../data/aots/tests/gpos_context2_lookupflag.tests          |   0
+ .../data/aots/tests/gpos_context2_multiple_subrules.tests   |   0
+ .../data/aots/tests/gpos_context2_next_glyph.tests          |   0
+ .../data/aots/tests/gpos_context2_simple.tests              |   0
+ .../data/aots/tests/gpos_context2_successive.tests          |   0
+ .../data/aots/tests/gpos_context3_boundary.tests            |   0
+ .../data/aots/tests/gpos_context3_lookupflag.tests          |   0
+ .../data/aots/tests/gpos_context3_next_glyph.tests          |   0
+ .../data/aots/tests/gpos_context3_simple.tests              |   0
+ .../data/aots/tests/gpos_context3_successive.tests          |   0
+ .../data/aots/tests/gsub1_1_lookupflag.tests                |   0
+ .../{shaping => shape}/data/aots/tests/gsub1_1_modulo.tests |   0
+ .../{shaping => shape}/data/aots/tests/gsub1_1_simple.tests |   0
+ .../data/aots/tests/gsub1_2_lookupflag.tests                |   0
+ .../{shaping => shape}/data/aots/tests/gsub1_2_simple.tests |   0
+ .../data/aots/tests/gsub2_1_lookupflag.tests                |   0
+ .../data/aots/tests/gsub2_1_multiple_sequences.tests        |   0
+ .../{shaping => shape}/data/aots/tests/gsub2_1_simple.tests |   0
+ .../data/aots/tests/gsub3_1_lookupflag.tests                |   0
+ .../data/aots/tests/gsub3_1_multiple.tests                  |   0
+ .../{shaping => shape}/data/aots/tests/gsub3_1_simple.tests |   0
+ .../data/aots/tests/gsub4_1_lookupflag.tests                |   0
+ .../data/aots/tests/gsub4_1_multiple_ligatures.tests        |   0
+ .../data/aots/tests/gsub4_1_multiple_ligsets.tests          |   0
+ .../{shaping => shape}/data/aots/tests/gsub4_1_simple.tests |   0
+ test/{shaping => shape}/data/aots/tests/gsub7.tests         |   0
+ .../data/aots/tests/gsub_chaining1_boundary.tests           |   0
+ .../data/aots/tests/gsub_chaining1_lookupflag.tests         |   0
+ .../data/aots/tests/gsub_chaining1_multiple_subrules.tests  |   0
+ .../data/aots/tests/gsub_chaining1_next_glyph.tests         |   0
+ .../data/aots/tests/gsub_chaining1_simple.tests             |   0
+ .../data/aots/tests/gsub_chaining1_successive.tests         |   0
+ .../data/aots/tests/gsub_chaining2_boundary.tests           |   0
+ .../data/aots/tests/gsub_chaining2_lookupflag.tests         |   0
+ .../data/aots/tests/gsub_chaining2_multiple_subrules.tests  |   0
+ .../data/aots/tests/gsub_chaining2_next_glyph.tests         |   0
+ .../data/aots/tests/gsub_chaining2_simple.tests             |   0
+ .../data/aots/tests/gsub_chaining2_successive.tests         |   0
+ .../data/aots/tests/gsub_chaining3_boundary.tests           |   0
+ .../data/aots/tests/gsub_chaining3_lookupflag.tests         |   0
+ .../data/aots/tests/gsub_chaining3_next_glyph.tests         |   0
+ .../data/aots/tests/gsub_chaining3_simple.tests             |   0
+ .../data/aots/tests/gsub_chaining3_successive.tests         |   0
+ .../data/aots/tests/gsub_context1_boundary.tests            |   0
+ .../data/aots/tests/gsub_context1_expansion.tests           |   0
+ .../data/aots/tests/gsub_context1_lookupflag.tests          |   0
+ .../data/aots/tests/gsub_context1_multiple_subrules.tests   |   0
+ .../data/aots/tests/gsub_context1_next_glyph.tests          |   0
+ .../data/aots/tests/gsub_context1_simple.tests              |   0
+ .../data/aots/tests/gsub_context1_successive.tests          |   0
+ .../data/aots/tests/gsub_context2_boundary.tests            |   0
+ .../data/aots/tests/gsub_context2_classes.tests             |   0
+ .../data/aots/tests/gsub_context2_expansion.tests           |   0
+ .../data/aots/tests/gsub_context2_lookupflag.tests          |   0
+ .../data/aots/tests/gsub_context2_multiple_subrules.tests   |   0
+ .../data/aots/tests/gsub_context2_next_glyph.tests          |   0
+ .../data/aots/tests/gsub_context2_simple.tests              |   0
+ .../data/aots/tests/gsub_context2_successive.tests          |   0
+ .../data/aots/tests/gsub_context3_boundary.tests            |   0
+ .../data/aots/tests/gsub_context3_lookupflag.tests          |   0
+ .../data/aots/tests/gsub_context3_next_glyph.tests          |   0
+ .../data/aots/tests/gsub_context3_simple.tests              |   0
+ .../data/aots/tests/gsub_context3_successive.tests          |   0
+ .../data/aots/tests/lookupflag_ignore_attach.tests          |   0
+ .../data/aots/tests/lookupflag_ignore_base.tests            |   0
+ .../data/aots/tests/lookupflag_ignore_combination.tests     |   0
+ .../data/aots/tests/lookupflag_ignore_ligatures.tests       |   0
+ .../data/aots/tests/lookupflag_ignore_marks.tests           |   0
+ test/{shaping => shape}/data/aots/update.py                 |   0
+ test/{shaping => shape}/data/in-house/COPYING               |   0
+ test/{shaping => shape}/data/in-house/Makefile.am           |   0
+ test/{shaping => shape}/data/in-house/Makefile.sources      |   0
+ .../fonts/03e3f463c3a985bc42096620cc415342818454fb.ttf      | Bin
+ .../fonts/051d92f8bc6ff724511b296c27623f824de256e9.ttf      | Bin
+ .../fonts/065b01e54f35f0d849fd43bd5b936212739a50cb.ttf      | Bin
+ .../fonts/074a5ae6b19de8f29772fdd5df2d3d833f81f5e6.ttf      | Bin
+ .../fonts/07f054357ff8638bac3711b422a1e31180bba863.ttf      | Bin
+ .../fonts/08b4b136f418add748dc641eb4a83033476f1170.ttf      | Bin
+ .../fonts/15dfc433a135a658b9f4b1a861b5cdd9658ccbb9.ttf      | Bin
+ .../fonts/1735326da89f0818cd8c51a0600e9789812c0f94.ttf      | Bin
+ .../fonts/191826b9643e3f124d865d617ae609db6a2ce203.ttf      | Bin
+ .../fonts/1a3d8f381387dd29be1e897e4b5100ac8b4829e1.ttf      | Bin
+ .../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf      | Bin
+ .../fonts/1c04a16f32a39c26c851b7fc014d2e8d298ba2b8.ttf      | Bin
+ .../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf      | Bin
+ .../fonts/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf      | Bin
+ .../fonts/1ed7e9064f008f62de6ff0207bb4dd29409597a5.ttf      | Bin
+ .../fonts/21b7fb9c1eeae260473809fbc1fe330f66a507cd.ttf      | Bin
+ .../fonts/226bc2deab3846f1a682085f70c67d0421014144.ttf      | Bin
+ .../fonts/24b8d24d00ae86f49791b746da4c9d3f717a51a8.ttf      | Bin
+ .../fonts/2681c1c72d6484ed3410417f521b1b819b4e2392.ttf      | Bin
+ .../fonts/270b89df543a7e48e206a2d830c0e10e5265c630.ttf      | Bin
+ .../fonts/28f497629c04ceb15546c9a70e0730125ed6698d.ttf      | Bin
+ .../fonts/298c9e1d955f10f6f72c6915c3c6ff9bf9695cec.ttf      | Bin
+ .../fonts/2a670df15b73a5dc75a5cc491bde5ac93c5077dc.ttf      | Bin
+ .../fonts/2c25beb56d9c556622d56b0b5d02b4670c034f89.ttf      | Bin
+ .../fonts/2de1ab4907ab688c0cfc236b0bf51151db38bf2e.ttf      | Bin
+ .../fonts/341421e629668b1a1242245d39238ca48432d35d.ttf      | Bin
+ .../fonts/3493e92eaded2661cadde752a39f9d58b11f0326.ttf      | Bin
+ .../fonts/37033cc5cf37bb223d7355153016b6ccece93b28.ttf      | Bin
+ .../fonts/373e67bf41ca264e260a9716162b71a23549e885.ttf      | Bin
+ .../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf      | Bin
+ .../fonts/3b791518a9ba89675df02f1eefbc9026a50648a6.ttf      | Bin
+ .../fonts/3c96e7a303c58475a8c750bf4289bbe73784f37d.ttf      | Bin
+ .../fonts/3cae6bfe5b57c07ba81ddbd54c02fe4f3a1e3bf6.ttf      | Bin
+ .../fonts/3cc01fede4debd4b7794ccb1b16cdb9987ea7571.ttf      | Bin
+ .../fonts/3cf6f8ac6d647473a43a3100e7494b202b2cfafe.ttf      | Bin
+ .../fonts/3d0b77a2360aa6faa1385aaa510509ab70dfbeff.ttf      | Bin
+ .../fonts/43ef465752be9af900745f72fe29cb853a1401a5.ttf      | Bin
+ .../fonts/45855bc8d46332b39c4ab9e2ee1a26b1f896da6b.ttf      | Bin
+ .../fonts/46669c8860cbfea13562a6ca0d83130ee571137b.ttf      | Bin
+ .../fonts/49c9f7485c1392fa09a1b801bc2ffea79275f22e.ttf      | Bin
+ .../fonts/4afb0e8b9a86bb9bd73a1247de4e33fbe3c1fd93.ttf      | Bin
+ .../fonts/4cbbc461be066fccc611dcc634af6e8cb2705537.ttf      | Bin
+ .../fonts/4cce528e99f600ed9c25a2b69e32eb94a03b4ae8.ttf      | Bin
+ .../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf      | Bin
+ .../fonts/4fac3929fc3332834e93673780ec0fe94342d193.ttf      | Bin
+ .../fonts/5028afb650b1bb718ed2131e872fbcce57828fff.ttf      | Bin
+ .../fonts/53374c7ca3657be37efde7ed02ae34229a56ae1f.ttf      | Bin
+ .../fonts/53a91c20e33a596f2be17fb68b382d6b7eb85d5c.ttf      | Bin
+ .../fonts/54674a3111d209fb6be0ed31745314b7a8d2c244.ttf      | Bin
+ .../fonts/55c88ebbe938680b08f92c3de20713183e0c7481.ttf      | Bin
+ .../fonts/56cfd0e18d07f41c38e9598545a6d369127fc6f9.ttf      | Bin
+ .../fonts/573d3a3177c9a8646e94c8a0d7b224334340946a.ttf      | Bin
+ .../fonts/57a9d9f83020155cbb1d2be1f43d82388cbecc88.ttf      | Bin
+ .../fonts/59a585a63b3df608fbeef00956c8c108deec7de6.ttf      | Bin
+ .../fonts/5af5361ed4d1e8305780b100e1730cb09132f8d1.ttf      | Bin
+ .../fonts/5bb74492f5e0ffa1fbb72e4c881be035120b6513.ttf      | Bin
+ .../fonts/5dfad7735c6a67085f1b90d4d497e32907db4c78.ttf      | Bin
+ .../fonts/604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf      | Bin
+ .../fonts/641ca9d7808b01cafa9a666c13811c9b56eb9c52.ttf      | Bin
+ .../fonts/663aef6b019dbf45ffd74089e2b5f2496ceceb18.ttf      | Bin
+ .../fonts/6677074106f94a2644da6aaaacd5bbd48cbdc7de.ttf      | Bin
+ .../fonts/6991b13ce889466be6de3f66e891de2bc0f117ee.ttf      | Bin
+ .../fonts/6f36d056bad6d478fc0bf7397bd52dc3bd197d5f.ttf      | Bin
+ .../fonts/6ff0fbead4462d9f229167b4e6839eceb8465058.ttf      | Bin
+ .../fonts/706c5d7b625f207bc0d874c67237aad6f1e9cd6f.ttf      | Bin
+ .../fonts/738d9f3b8c2dfd03875bf35a61d28fd78faf17c8.ttf      | Bin
+ .../fonts/73e84dac2fc6a2d1bc9250d1414353661088937d.ttf      | Bin
+ .../fonts/757ebd573617a24aa9dfbf0b885c54875c6fe06b.ttf      | Bin
+ .../fonts/7a37dc4d5bf018456aea291cee06daf004c0221c.ttf      | Bin
+ .../fonts/7d18685e1529e4ceaad5b6095dfab2f9789e5bce.ttf      | Bin
+ .../fonts/7e14e7883ed152baa158b80e207b66114c823a8b.ttf      | Bin
+ .../fonts/8099955657a54e9ee38a6ba1d6f950ce58e3cc25.ttf      | Bin
+ .../fonts/8116e5d8fedfbec74e45dc350d2416d810bed8c4.ttf      | Bin
+ .../fonts/813c2f8e5512187fd982417a7fb4286728e6f4a8.ttf      | Bin
+ .../fonts/81c368a33816fb20e9f647e8f24e2180f4720263.ttf      | Bin
+ .../fonts/8228d035fcd65d62ec9728fb34f42c63be93a5d3.ttf      | Bin
+ .../fonts/82f4f3b57bb55344e72e70231380202a52af5805.ttf      | Bin
+ .../fonts/8454d22037f892e76614e1645d066689a0200e61.ttf      | Bin
+ .../fonts/85414f2552b654585b7a8d13dcc3e8fd9f7970a3.ttf      | Bin
+ .../fonts/856ff9562451293cbeff6f396d4e3877c4f0a436.ttf      | Bin
+ .../fonts/85fe0be440c64ac77699e21c2f1bd933a919167e.ttf      | Bin
+ .../fonts/86cdd983c4e4c4d7f27dd405d6ceb7d4b9ed3d35.ttf      | Bin
+ .../fonts/87f85d17d26f1fe9ad28d7365101958edaefb967.ttf      | Bin
+ .../fonts/881642af1667ae30a54e58de8be904566d00508f.ttf      | Bin
+ .../fonts/8a9fea2a7384f2116e5b84a9b31f83be7850ce21.ttf      | Bin
+ .../fonts/8d9c4b193808b8bde94389ba7831c1fc6f9e794e.ttf      | Bin
+ .../fonts/932ad5132c2761297c74e9976fe25b08e5ffa10b.ttf      | Bin
+ .../fonts/94a5d6fb15a27521fba9ea4aee9cb39b2d03322a.ttf      | Bin
+ .../fonts/96490dd2ff81233b335a650e7eb660e0e7b2eeea.ttf      | Bin
+ .../fonts/98b7887cff91f722b92a8ff800120954606354f9.ttf      | Bin
+ .../fonts/9fc3e6960b3520e5304033ef5fd540285f72f14d.ttf      | Bin
+ test/{shaping => shape}/data/in-house/fonts/AdobeBlank2.ttf | Bin
+ test/{shaping => shape}/data/in-house/fonts/DFONT.dfont     | Bin
+ test/{shaping => shape}/data/in-house/fonts/HBTest-VF.ttf   | Bin
+ .../data/in-house/fonts/MORXTwentyeight.ttf                 | Bin
+ test/{shaping => shape}/data/in-house/fonts/TRAK.ttf        | Bin
+ test/{shaping => shape}/data/in-house/fonts/TTC.ttc         | Bin
+ .../fonts/a014549f766436cf55b2ceb40e462038938ee899.ttf      | Bin
+ .../fonts/a02a7f0ad42c2922cb37ad1358c9df4eb81f1bca.ttf      | Bin
+ .../fonts/a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf      | Bin
+ .../fonts/a6b17da98b9f1565ba428719777bbf94a66403c1.ttf      | Bin
+ .../fonts/a6c76d1bafde4a0b1026ebcc932d2e5c6fd02442.ttf      | Bin
+ .../fonts/a706511c65fb278fda87eaf2180ca6684a80f423.ttf      | Bin
+ .../fonts/a919b33197965846f21074b24e30250d67277bce.ttf      | Bin
+ .../fonts/a98e908e2ed21b22228ea59ebcc0f05034c86f2e.ttf      | Bin
+ .../fonts/ab14b4eb9d7a67e293f51d30d719add06c9d6e06.ttf      | Bin
+ .../fonts/ab40c89624a6104e5d0a2308e448a989302f515b.ttf      | Bin
+ .../fonts/ad01ab2ea1cb1a4d3a2783e2675112ef11ae6404.ttf      | Bin
+ .../fonts/af3086380b743099c54a3b11b96766039ea62fcd.ttf      | Bin
+ .../fonts/af85624080af5627fb050f570d148a62f04fda74.ttf      | Bin
+ .../fonts/b082211be29a3e2cf91f0fd43497e40b2a27b344.ttf      | Bin
+ .../fonts/b121d4306b2e3add5abbaad21d95fcf04aacbd64.ttf      | Bin
+ .../fonts/b151cfcdaa77585d77f17a42158e0873fc8e2633.ttf      | Bin
+ .../fonts/b3075ca42b27dde7341c2d0ae16703c5b6640df0.ttf      | Bin
+ .../fonts/b31e6c52a31edadc16f1bec9efe6019e2d59824a.ttf      | Bin
+ .../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf      | Bin
+ .../fonts/b722a7d09e60421f3efbc706ad348ab47b88567b.ttf      | Bin
+ .../fonts/bb0c53752e85c3d28973ebc913287b8987d3dfe8.ttf      | Bin
+ .../fonts/bb9473d2403488714043bcfb946c9f78b86ad627.ttf      | Bin
+ .../fonts/bf39b0e91ef9807f15a9e283a21a14a209fd2cfc.ttf      | Bin
+ .../fonts/bf962d3202883a820aed019d9b5c1838c2ff69c6.ttf      | Bin
+ .../fonts/c4e48b0886ef460f532fb49f00047ec92c432ec0.ttf      | Bin
+ .../fonts/cc5f3d2d717fb6bd4dfae1c16d48a2cb8e12233b.ttf      | Bin
+ .../fonts/d23d76ea0909c14972796937ba072b5a40c1e257.ttf      | Bin
+ .../fonts/d3129450fafe5e5c98cfc25a4e71809b1b4d2855.ttf      | Bin
+ .../fonts/d629e7fedc0b350222d7987345fe61613fa3929a.ttf      | Bin
+ .../fonts/d9b8bc10985f24796826c29f7ccba3d0ae11ec02.ttf      | Bin
+ .../fonts/dcf774ca21062e7439f98658b18974ea8b956d0c.ttf      | Bin
+ .../fonts/df768b9c257e0c9c35786c47cae15c46571d56be.ttf      | Bin
+ .../fonts/e207635780b42f898d58654b65098763e340f5c7.ttf      | Bin
+ .../fonts/e39391c77a6321c2ac7a2d644de0396470cd4bfe.ttf      | Bin
+ .../fonts/e5ff44940364c2247abed50bdda30d2ef5aedfe4.ttf      | Bin
+ .../fonts/e68a88939e0f06e34d2bc911f09b70890289c8fd.ttf      | Bin
+ .../fonts/e8691822f6a705e3e9fb48a0405c645b1a036590.ttf      | Bin
+ .../fonts/ea3f63620511b2097200d23774ffef197e829e69.ttf      | Bin
+ .../fonts/ee39587d13b2afa5499cc79e45780aa79293bbd4.ttf      | Bin
+ .../fonts/ef86fe710cfea877bbe0dbb6946a1f88d0661031.ttf      | Bin
+ .../fonts/f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf      | Bin
+ .../fonts/f443753e8ffe8e8aae606cfba158e00334b6efb1.ttf      | Bin
+ .../fonts/f499fbc23865022234775c43503bba2e63978fe1.ttf      | Bin
+ .../fonts/f518eb6f6b5eec2946c9fbbbde44e45d46f5e2ac.ttf      | Bin
+ .../fonts/f75c4b05a0a4d67c1a808081ae3d74a9c66509e8.ttf      | Bin
+ .../fonts/f79eb71df4e4c9c273b67b89a06e5ff9e3c1f834.ttf      | Bin
+ .../fonts/f9b1dd4dcb515e757789a22cb4241107746fd3d0.ttf      | Bin
+ .../fonts/fbb6c84c9e1fe0c39e152fbe845e51fd81f6748e.ttf      | Bin
+ .../fonts/fcbaa518d3cce441ed37ae3b1fed6a19e9b54efd.ttf      | Bin
+ .../fonts/fcdcffbdf1c4c97c05308d7600e4c283eb47dbca.ttf      | Bin
+ .../fonts/fcea341ba6489536390384d8403ce5287ba71a4a.ttf      | Bin
+ .../fonts/fd07ea46e4d8368ada1776208c07fd596f727852.ttf      | Bin
+ .../fonts/ffa0f5d2d9025486d8469d8b1fdd983e7632499b.ttf      | Bin
+ test/{shaping => shape}/data/in-house/meson.build           |   0
+ test/{shaping => shape}/data/in-house/tests/aat-morx.tests  |   0
+ test/{shaping => shape}/data/in-house/tests/aat-trak.tests  |   0
+ .../data/in-house/tests/arabic-fallback-shaping.tests       |   0
+ .../data/in-house/tests/arabic-feature-order.tests          |   0
+ .../data/in-house/tests/arabic-like-joining.tests           |   0
+ .../data/in-house/tests/arabic-mark-attach.tests            |   0
+ .../data/in-house/tests/arabic-mark-order.tests             |   0
+ .../data/in-house/tests/arabic-stch.tests                   |   0
+ .../data/in-house/tests/automatic-fractions.tests           |   0
+ test/{shaping => shape}/data/in-house/tests/cluster.tests   |   0
+ .../data/in-house/tests/collections.tests                   |   0
+ .../data/in-house/tests/color-fonts.tests                   |   0
+ .../data/in-house/tests/context-matching.tests              |   0
+ .../data/in-house/tests/cursive-positioning.tests           |   0
+ .../data/in-house/tests/default-ignorables.tests            |   0
+ test/{shaping => shape}/data/in-house/tests/digits.tests    |   0
+ .../data/in-house/tests/emoji-clusters.tests                |   0
+ test/{shaping => shape}/data/in-house/tests/emoji.tests     |   0
+ .../data/in-house/tests/fallback-positioning.tests          |   0
+ .../data/in-house/tests/hangul-jamo.tests                   |   0
+ test/{shaping => shape}/data/in-house/tests/hyphens.tests   |   0
+ .../data/in-house/tests/indic-consonant-with-stacker.tests  |   0
+ .../data/in-house/tests/indic-decompose.tests               |   0
+ .../{shaping => shape}/data/in-house/tests/indic-init.tests |   0
+ .../data/in-house/tests/indic-joiner-candrabindu.tests      |   0
+ .../data/in-house/tests/indic-joiners.tests                 |   0
+ .../data/in-house/tests/indic-old-spec.tests                |   0
+ .../data/in-house/tests/indic-pref-blocking.tests           |   0
+ .../data/in-house/tests/indic-script-extensions.tests       |   0
+ .../data/in-house/tests/indic-special-cases.tests           |   0
+ .../data/in-house/tests/indic-syllable.tests                |   0
+ .../data/in-house/tests/indic-vowel-letter-spoofing.tests   |   0
+ .../data/in-house/tests/kern-format2.tests                  |   0
+ .../data/in-house/tests/khmer-mark-order.tests              |   0
+ .../{shaping => shape}/data/in-house/tests/khmer-misc.tests |   0
+ .../data/in-house/tests/language-tags.tests                 |   0
+ .../data/in-house/tests/ligature-id.tests                   |   0
+ test/{shaping => shape}/data/in-house/tests/macos.tests     |   0
+ .../data/in-house/tests/mark-attachment.tests               |   0
+ .../data/in-house/tests/mark-filtering-sets.tests           |   0
+ .../data/in-house/tests/mongolian-variation-selector.tests  |   0
+ .../data/in-house/tests/myanmar-misc.tests                  |   0
+ .../data/in-house/tests/myanmar-syllable.tests              |   0
+ .../data/in-house/tests/myanmar-zawgyi.tests                |   0
+ .../data/in-house/tests/none-directional.tests              |   0
+ .../data/in-house/tests/positioning-features.tests          |   0
+ test/{shaping => shape}/data/in-house/tests/rand.tests      |   0
+ .../data/in-house/tests/reverse-sub.tests                   |   0
+ test/{shaping => shape}/data/in-house/tests/rotation.tests  |   0
+ test/{shaping => shape}/data/in-house/tests/simple.tests    |   0
+ test/{shaping => shape}/data/in-house/tests/sinhala.tests   |   0
+ test/{shaping => shape}/data/in-house/tests/spaces.tests    |   0
+ .../data/in-house/tests/tibetan-contractions-1.tests        |   0
+ .../data/in-house/tests/tibetan-contractions-2.tests        |   0
+ .../data/in-house/tests/tibetan-vowels.tests                |   0
+ .../data/in-house/tests/tt-kern-gpos.tests                  |   0
+ .../{shaping => shape}/data/in-house/tests/use-indic3.tests |   0
+ .../data/in-house/tests/use-marchen.tests                   |   0
+ .../data/in-house/tests/use-syllable.tests                  |   0
+ .../data/in-house/tests/use-vowel-letter-spoofing.tests     |   0
+ test/{shaping => shape}/data/in-house/tests/use.tests       |   0
+ .../data/in-house/tests/variations-rvrn.tests               |   0
+ .../{shaping => shape}/data/in-house/tests/variations.tests |   0
+ test/{shaping => shape}/data/in-house/tests/vertical.tests  |   0
+ .../data/in-house/tests/zero-width-marks.tests              |   0
+ test/{shaping => shape}/data/text-rendering-tests/COPYING   |   0
+ test/{shaping => shape}/data/text-rendering-tests/DISABLED  |   0
+ .../data/text-rendering-tests/Makefile.am                   |   0
+ .../data/text-rendering-tests/Makefile.sources              |   0
+ test/{shaping => shape}/data/text-rendering-tests/README    |   0
+ .../text-rendering-tests/fonts/AdobeVFPrototype-Subset.otf  | Bin
+ .../data/text-rendering-tests/fonts/FDArrayTest257.otf      | Bin
+ .../data/text-rendering-tests/fonts/FDArrayTest65535.otf    | Bin
+ .../text-rendering-tests/fonts/NotoSansBalinese-Regular.ttf | Bin
+ .../text-rendering-tests/fonts/NotoSansKannada-Regular.ttf  | Bin
+ .../text-rendering-tests/fonts/NotoSerifKannada-Regular.ttf | Bin
+ .../data/text-rendering-tests/fonts/Selawik-README.md       |   0
+ .../data/text-rendering-tests/fonts/Selawik-variable.ttf    | Bin
+ .../data/text-rendering-tests/fonts/TestAVAR.ttf            | Bin
+ .../data/text-rendering-tests/fonts/TestCMAP14.otf          | Bin
+ .../data/text-rendering-tests/fonts/TestCMAPMacTurkish.ttf  | Bin
+ .../data/text-rendering-tests/fonts/TestCVARGVAROne.ttf     | Bin
+ .../data/text-rendering-tests/fonts/TestCVARGVARTwo.ttf     | Bin
+ .../data/text-rendering-tests/fonts/TestGLYFOne.ttf         | Bin
+ .../data/text-rendering-tests/fonts/TestGPOSFour.ttf        | Bin
+ .../data/text-rendering-tests/fonts/TestGPOSOne.ttf         | Bin
+ .../data/text-rendering-tests/fonts/TestGPOSThree.ttf       | Bin
+ .../data/text-rendering-tests/fonts/TestGPOSTwo.otf         | Bin
+ .../data/text-rendering-tests/fonts/TestGSUBOne.otf         | Bin
+ .../data/text-rendering-tests/fonts/TestGSUBThree.ttf       | Bin
+ .../text-rendering-tests/fonts/TestGVAR-Composite-0.ttf     | Bin
+ .../fonts/TestGVAR-Composite-Missing.ttf                    | Bin
+ .../data/text-rendering-tests/fonts/TestGVAREight.ttf       | Bin
+ .../data/text-rendering-tests/fonts/TestGVARFour.ttf        | Bin
+ .../data/text-rendering-tests/fonts/TestGVARNine.ttf        | Bin
+ .../data/text-rendering-tests/fonts/TestGVAROne.ttf         | Bin
+ .../data/text-rendering-tests/fonts/TestGVARThree.ttf       | Bin
+ .../data/text-rendering-tests/fonts/TestGVARTwo.ttf         | Bin
+ .../data/text-rendering-tests/fonts/TestHVAROne.otf         | Bin
+ .../data/text-rendering-tests/fonts/TestHVARTwo.ttf         | Bin
+ .../data/text-rendering-tests/fonts/TestKERNOne.otf         | Bin
+ .../data/text-rendering-tests/fonts/TestMORXEight.ttf       | Bin
+ .../data/text-rendering-tests/fonts/TestMORXEighteen.ttf    | Bin
+ .../data/text-rendering-tests/fonts/TestMORXEleven.ttf      | Bin
+ .../data/text-rendering-tests/fonts/TestMORXForty.ttf       | Bin
+ .../data/text-rendering-tests/fonts/TestMORXFour.ttf        | Bin
+ .../data/text-rendering-tests/fonts/TestMORXFourteen.ttf    | Bin
+ .../data/text-rendering-tests/fonts/TestMORXFourtyone.ttf   | Bin
+ .../data/text-rendering-tests/fonts/TestMORXNine.ttf        | Bin
+ .../data/text-rendering-tests/fonts/TestMORXOne.ttf         | Bin
+ .../data/text-rendering-tests/fonts/TestMORXSeventeen.ttf   | Bin
+ .../data/text-rendering-tests/fonts/TestMORXSixteen.ttf     | Bin
+ .../data/text-rendering-tests/fonts/TestMORXTen.ttf         | Bin
+ .../data/text-rendering-tests/fonts/TestMORXThirteen.ttf    | Bin
+ .../data/text-rendering-tests/fonts/TestMORXThirtyeight.ttf | Bin
+ .../data/text-rendering-tests/fonts/TestMORXThirtyfive.ttf  | Bin
+ .../data/text-rendering-tests/fonts/TestMORXThirtyfour.ttf  | Bin
+ .../data/text-rendering-tests/fonts/TestMORXThirtynine.ttf  | Bin
+ .../data/text-rendering-tests/fonts/TestMORXThirtyone.ttf   | Bin
+ .../data/text-rendering-tests/fonts/TestMORXThirtyseven.ttf | Bin
+ .../data/text-rendering-tests/fonts/TestMORXThirtysix.ttf   | Bin
+ .../data/text-rendering-tests/fonts/TestMORXThirtythree.ttf | Bin
+ .../data/text-rendering-tests/fonts/TestMORXThirtytwo.ttf   | Bin
+ .../data/text-rendering-tests/fonts/TestMORXThree.ttf       | Bin
+ .../data/text-rendering-tests/fonts/TestMORXTwelve.ttf      | Bin
+ .../data/text-rendering-tests/fonts/TestMORXTwenty.ttf      | Bin
+ .../data/text-rendering-tests/fonts/TestMORXTwentyeight.ttf | Bin
+ .../data/text-rendering-tests/fonts/TestMORXTwentyfive.ttf  | Bin
+ .../data/text-rendering-tests/fonts/TestMORXTwentyfour.ttf  | Bin
+ .../data/text-rendering-tests/fonts/TestMORXTwentynine.ttf  | Bin
+ .../data/text-rendering-tests/fonts/TestMORXTwentyone.ttf   | Bin
+ .../data/text-rendering-tests/fonts/TestMORXTwentyseven.ttf | Bin
+ .../data/text-rendering-tests/fonts/TestMORXTwentysix.ttf   | Bin
+ .../data/text-rendering-tests/fonts/TestMORXTwentythree.ttf | Bin
+ .../data/text-rendering-tests/fonts/TestMORXTwentytwo.ttf   | Bin
+ .../data/text-rendering-tests/fonts/TestMORXTwo.ttf         | Bin
+ .../data/text-rendering-tests/fonts/TestSFNTOne.otf         | Bin
+ .../data/text-rendering-tests/fonts/TestSFNTTwo.ttf         | Bin
+ .../text-rendering-tests/fonts/TestSVGgradientTransform.otf | Bin
+ .../data/text-rendering-tests/fonts/TestSVGgzip.otf         | Bin
+ .../data/text-rendering-tests/fonts/TestSVGmultiGlyphs.otf  | Bin
+ .../data/text-rendering-tests/fonts/TestShapeAran.ttf       | Bin
+ .../data/text-rendering-tests/fonts/TestShapeEthi.ttf       | Bin
+ .../data/text-rendering-tests/fonts/TestShapeKndaV3.ttf     | Bin
+ .../data/text-rendering-tests/fonts/TestShapeLana.ttf       | Bin
+ .../data/text-rendering-tests/fonts/TestTRAKOne.ttf         | Bin
+ .../data/text-rendering-tests/fonts/Zycon.ttf               | Bin
+ .../data/text-rendering-tests/meson.build                   |   0
+ .../data/text-rendering-tests/tests/AVAR-1.tests            |   0
+ .../data/text-rendering-tests/tests/CFF-1.tests             |   0
+ .../data/text-rendering-tests/tests/CFF-2.tests             |   0
+ .../data/text-rendering-tests/tests/CFF2-1.tests            |   0
+ .../data/text-rendering-tests/tests/CMAP-1.tests            |   0
+ .../data/text-rendering-tests/tests/CMAP-2.tests            |   0
+ .../data/text-rendering-tests/tests/CMAP-3.tests            |   0
+ .../data/text-rendering-tests/tests/CVAR-1.tests            |   0
+ .../data/text-rendering-tests/tests/CVAR-2.tests            |   0
+ .../data/text-rendering-tests/tests/GLYF-1.tests            |   0
+ .../data/text-rendering-tests/tests/GPOS-1.tests            |   0
+ .../data/text-rendering-tests/tests/GPOS-2.tests            |   0
+ .../data/text-rendering-tests/tests/GPOS-3.tests            |   0
+ .../data/text-rendering-tests/tests/GPOS-4.tests            |   0
+ .../data/text-rendering-tests/tests/GPOS-5.tests            |   0
+ .../data/text-rendering-tests/tests/GSUB-1.tests            |   0
+ .../data/text-rendering-tests/tests/GSUB-2.tests            |   0
+ .../data/text-rendering-tests/tests/GSUB-3.tests            |   0
+ .../data/text-rendering-tests/tests/GVAR-1.tests            |   0
+ .../data/text-rendering-tests/tests/GVAR-2.tests            |   0
+ .../data/text-rendering-tests/tests/GVAR-3.tests            |   0
+ .../data/text-rendering-tests/tests/GVAR-4.tests            |   0
+ .../data/text-rendering-tests/tests/GVAR-5.tests            |   0
+ .../data/text-rendering-tests/tests/GVAR-6.tests            |   0
+ .../data/text-rendering-tests/tests/GVAR-7.tests            |   0
+ .../data/text-rendering-tests/tests/GVAR-8.tests            |   0
+ .../data/text-rendering-tests/tests/GVAR-9.tests            |   0
+ .../data/text-rendering-tests/tests/HVAR-1.tests            |   0
+ .../data/text-rendering-tests/tests/HVAR-2.tests            |   0
+ .../data/text-rendering-tests/tests/KERN-1.tests            |   0
+ .../data/text-rendering-tests/tests/KERN-2.tests            |   0
+ .../data/text-rendering-tests/tests/MORX-1.tests            |   0
+ .../data/text-rendering-tests/tests/MORX-10.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-11.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-12.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-13.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-14.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-16.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-17.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-18.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-19.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-2.tests            |   0
+ .../data/text-rendering-tests/tests/MORX-20.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-21.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-22.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-23.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-24.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-25.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-26.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-27.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-28.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-29.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-3.tests            |   0
+ .../data/text-rendering-tests/tests/MORX-30.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-31.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-32.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-33.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-34.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-35.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-36.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-37.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-38.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-39.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-4.tests            |   0
+ .../data/text-rendering-tests/tests/MORX-40.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-41.tests           |   0
+ .../data/text-rendering-tests/tests/MORX-5.tests            |   0
+ .../data/text-rendering-tests/tests/MORX-6.tests            |   0
+ .../data/text-rendering-tests/tests/MORX-7.tests            |   0
+ .../data/text-rendering-tests/tests/MORX-8.tests            |   0
+ .../data/text-rendering-tests/tests/MORX-9.tests            |   0
+ .../data/text-rendering-tests/tests/SFNT-1.tests            |   0
+ .../data/text-rendering-tests/tests/SFNT-2.tests            |   0
+ .../data/text-rendering-tests/tests/SHARAN-1.tests          |   0
+ .../data/text-rendering-tests/tests/SHBALI-1.tests          |   0
+ .../data/text-rendering-tests/tests/SHBALI-2.tests          |   0
+ .../data/text-rendering-tests/tests/SHBALI-3.tests          |   0
+ .../data/text-rendering-tests/tests/SHKNDA-1.tests          |   0
+ .../data/text-rendering-tests/tests/SHKNDA-2.tests          |   0
+ .../data/text-rendering-tests/tests/SHKNDA-3.tests          |   0
+ .../data/text-rendering-tests/tests/SHLANA-1.tests          |   0
+ .../data/text-rendering-tests/tests/SHLANA-10.tests         |   0
+ .../data/text-rendering-tests/tests/SHLANA-2.tests          |   0
+ .../data/text-rendering-tests/tests/SHLANA-3.tests          |   0
+ .../data/text-rendering-tests/tests/SHLANA-4.tests          |   0
+ .../data/text-rendering-tests/tests/SHLANA-5.tests          |   0
+ .../data/text-rendering-tests/tests/SHLANA-6.tests          |   0
+ .../data/text-rendering-tests/tests/SHLANA-7.tests          |   0
+ .../data/text-rendering-tests/tests/SHLANA-8.tests          |   0
+ .../data/text-rendering-tests/tests/SHLANA-9.tests          |   0
+ test/{shaping => shape}/data/text-rendering-tests/update.py |   0
+ test/{shaping => shape}/hb-diff                             |   0
+ test/{shaping => shape}/hb-diff-colorize                    |   0
+ test/{shaping => shape}/hb-diff-filter-failures             |   0
+ test/{shaping => shape}/hb-diff-stat                        |   0
+ test/{shaping => shape}/hb-unicode-decode                   |   0
+ test/{shaping => shape}/hb-unicode-encode                   |   0
+ test/{shaping => shape}/hb-unicode-prettyname               |   0
+ test/{shaping => shape}/hb_test_tools.py                    |   0
+ test/{shaping => shape}/meson.build                         |   0
+ test/{shaping => shape}/record-test.sh                      |   0
+ test/{shaping => shape}/run-tests.py                        |   0
+ .../shaper-arabic/script-arabic/language-persian/mehran.txt |   0
+ .../script-arabic/language-urdu/crulp/ligatures/2grams.txt  |   0
+ .../script-arabic/language-urdu/crulp/ligatures/3grams.txt  |   0
+ .../script-arabic/language-urdu/crulp/ligatures/4grams.txt  |   0
+ .../script-arabic/language-urdu/crulp/ligatures/5grams.txt  |   0
+ .../script-arabic/language-urdu/crulp/ligatures/6grams.txt  |   0
+ .../script-arabic/language-urdu/crulp/ligatures/7grams.txt  |   0
+ .../script-arabic/language-urdu/crulp/ligatures/8grams.txt  |   0
+ .../script-arabic/language-urdu/crulp/ligatures/LICENSE     |   0
+ .../script-arabic/language-urdu/crulp/ligatures/README      |   0
+ .../script-arabic/language-urdu/crulp/ligatures/SOURCES     |   0
+ .../script-arabic/misc/diacritics/lam-alef.txt              |   0
+ .../script-arabic/misc/diacritics/language-arabic.txt       |   0
+ .../script-arabic/misc/diacritics/language-persian.txt      |   0
+ .../script-arabic/misc/diacritics/language-urdu.txt         |   0
+ .../script-arabic/misc/diacritics/ligature-components.txt   |   0
+ .../script-arabic/misc/diacritics/ligature-diacritics.txt   |   0
+ .../script-arabic/misc/diacritics/mark-skipping.txt         |   0
+ .../in-house/shaper-arabic/script-mongolian/misc/misc.txt   |   0
+ .../shaper-arabic/script-mongolian/misc/non-joining.txt     |   0
+ .../in-house/shaper-arabic/script-mongolian/misc/poem.txt   |   0
+ .../script-mongolian/misc/variation-selectors.txt           |   0
+ .../texts/in-house/shaper-arabic/script-nko/misc/misc.txt   |   0
+ .../in-house/shaper-arabic/script-phags-pa/misc/misc.txt    |   0
+ .../shaper-arabic/script-syriac/misc/abbreviation-mark.txt  |   0
+ .../in-house/shaper-arabic/script-syriac/misc/alaph.txt     |   0
+ .../in-house/shaper-default/script-ethiopic/misc/misc.txt   |   0
+ .../in-house/shaper-default/script-han/misc/cjk-compat.txt  |   0
+ .../script-hiragana/misc/kazuraki-liga-lines.txt            |   0
+ .../shaper-default/script-hiragana/misc/kazuraki-liga.txt   |   0
+ .../in-house/shaper-default/script-linear-b/misc/misc.txt   |   0
+ .../in-house/shaper-default/script-tifinagh/misc/misc.txt   |   0
+ .../in-house/shaper-hangul/script-hangul/misc/misc.txt      |   0
+ .../shaper-hebrew/script-hebrew/misc/diacritics.txt         |   0
+ .../in-house/shaper-indic/script-assamese/utrrs/LICENSE     |   0
+ .../in-house/shaper-indic/script-assamese/utrrs/README      |   0
+ .../in-house/shaper-indic/script-assamese/utrrs/SOURCES     |   0
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt          |   0
+ .../codepoint/IndicFontFeatureCodepoint-Consonants.txt      |   0
+ .../codepoint/IndicFontFeatureCodepoint-DependentVowels.txt |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt    |   0
+ .../IndicFontFeatureCodepoint-IndependentVowels.txt         |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt  |   0
+ .../codepoint/IndicFontFeatureCodepoint-VariousSigns.txt    |   0
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt           |   0
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt           |   0
+ .../script-assamese/utrrs/gsub/IndicFontFeatureGSUB.txt     |   0
+ .../shaper-indic/script-bengali/bengali-vowel-letters.txt   |   0
+ .../in-house/shaper-indic/script-bengali/misc/misc.txt      |   0
+ .../in-house/shaper-indic/script-bengali/misc/reph.txt      |   0
+ .../in-house/shaper-indic/script-bengali/utrrs/LICENSE      |   0
+ .../texts/in-house/shaper-indic/script-bengali/utrrs/README |   0
+ .../in-house/shaper-indic/script-bengali/utrrs/SOURCES      |   0
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt          |   0
+ .../codepoint/IndicFontFeatureCodepoint-Consonants.txt      |   0
+ .../codepoint/IndicFontFeatureCodepoint-DependentVowels.txt |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt    |   0
+ .../IndicFontFeatureCodepoint-IndependentVowels.txt         |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt  |   0
+ .../codepoint/IndicFontFeatureCodepoint-VariousSigns.txt    |   0
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt           |   0
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt           |   0
+ .../script-bengali/utrrs/gsub/IndicFontFeatureGSUB.txt      |   0
+ .../script-devanagari/devanagari-atomic-consonants.txt      |   0
+ .../script-devanagari/devanagari-vowel-letters.txt          |   0
+ .../shaper-indic/script-devanagari/misc/dottedcircle.txt    |   0
+ .../shaper-indic/script-devanagari/misc/eyelash.txt         |   0
+ .../shaper-indic/script-devanagari/misc/joiners.txt         |   0
+ .../in-house/shaper-indic/script-devanagari/misc/misc.txt   |   0
+ .../shaper-indic/script-devanagari/misc/spec-deviations.txt |   0
+ .../script-devanagari/misc/tricky-reordering.txt            |   0
+ .../in-house/shaper-indic/script-devanagari/utrrs/LICENSE   |   0
+ .../in-house/shaper-indic/script-devanagari/utrrs/README    |   0
+ .../in-house/shaper-indic/script-devanagari/utrrs/SOURCES   |   0
+ .../IndicFontFeatureCodepoint-AdditionalConsonants.txt      |   0
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt          |   0
+ .../codepoint/IndicFontFeatureCodepoint-Consonants.txt      |   0
+ .../codepoint/IndicFontFeatureCodepoint-DependentVowels.txt |   0
+ .../IndicFontFeatureCodepoint-DevnagariSpecificAddition.txt |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt    |   0
+ .../IndicFontFeatureCodepoint-GenericPunctuation.txt        |   0
+ .../IndicFontFeatureCodepoint-IndependentVowels.txt         |   0
+ .../codepoint/IndicFontFeatureCodepoint-VariousSigns.txt    |   0
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt           |   0
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt           |   0
+ .../script-devanagari/utrrs/gsub/IndicFontFeatureGSUB.txt   |   0
+ .../shaper-indic/script-gujarati/gujarati-vowel-letters.txt |   0
+ .../in-house/shaper-indic/script-gujarati/utrrs/LICENSE     |   0
+ .../in-house/shaper-indic/script-gujarati/utrrs/README      |   0
+ .../in-house/shaper-indic/script-gujarati/utrrs/SOURCES     |   0
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt          |   0
+ .../codepoint/IndicFontFeatureCodepoint-Consonants.txt      |   0
+ .../codepoint/IndicFontFeatureCodepoint-DependentVowels.txt |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt    |   0
+ .../IndicFontFeatureCodepoint-IndependentVowels.txt         |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt  |   0
+ .../codepoint/IndicFontFeatureCodepoint-VariousSigns.txt    |   0
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt           |   0
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt           |   0
+ .../script-gujarati/utrrs/gsub/IndicFontFeatureGSUB.txt     |   0
+ .../shaper-indic/script-gurmukhi/gurmukhi-vowel-letters.txt |   0
+ .../in-house/shaper-indic/script-gurmukhi/misc/misc.txt     |   0
+ .../in-house/shaper-indic/script-gurmukhi/utrrs/LICENSE     |   0
+ .../in-house/shaper-indic/script-gurmukhi/utrrs/README      |   0
+ .../in-house/shaper-indic/script-gurmukhi/utrrs/SOURCES     |   0
+ .../codepoint/IndicFontFeatureCodepoint-Consonants.txt      |   0
+ .../codepoint/IndicFontFeatureCodepoint-DependentVowels.txt |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt    |   0
+ .../IndicFontFeatureCodepoint-GurmukhiSpecific.txt          |   0
+ .../IndicFontFeatureCodepoint-IndependentVowels.txt         |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt  |   0
+ .../codepoint/IndicFontFeatureCodepoint-VariousSigns.txt    |   0
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt           |   0
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt           |   0
+ .../script-gurmukhi/utrrs/gsub/IndicFontFeatureGSUB.txt     |   0
+ .../shaper-indic/script-kannada/kannada-vowel-letters.txt   |   0
+ .../in-house/shaper-indic/script-kannada/misc/misc.txt      |   0
+ .../shaper-indic/script-kannada/misc/right-matras.txt       |   0
+ .../in-house/shaper-indic/script-kannada/utrrs/LICENSE      |   0
+ .../texts/in-house/shaper-indic/script-kannada/utrrs/README |   0
+ .../in-house/shaper-indic/script-kannada/utrrs/SOURCES      |   0
+ .../IndicFontFeatureCodepoint-AdditionalConsonants.txt      |   0
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt          |   0
+ .../codepoint/IndicFontFeatureCodepoint-Consonants.txt      |   0
+ .../codepoint/IndicFontFeatureCodepoint-DependentVowels.txt |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt    |   0
+ .../IndicFontFeatureCodepoint-IndependentVowels.txt         |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt  |   0
+ .../codepoint/IndicFontFeatureCodepoint-VariousSigns.txt    |   0
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt           |   0
+ .../script-kannada/utrrs/gsub/IndicFontFeatureGSUB.txt      |   0
+ .../script-malayalam/malayalam-vowel-letters.txt            |   0
+ .../in-house/shaper-indic/script-malayalam/misc/cibu.txt    |   0
+ .../shaper-indic/script-malayalam/misc/dot-reph.txt         |   0
+ .../in-house/shaper-indic/script-malayalam/misc/misc.txt    |   0
+ .../in-house/shaper-indic/script-malayalam/utrrs/LICENSE    |   0
+ .../in-house/shaper-indic/script-malayalam/utrrs/README     |   0
+ .../in-house/shaper-indic/script-malayalam/utrrs/SOURCES    |   0
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt          |   0
+ .../codepoint/IndicFontFeatureCodepoint-Consonants.txt      |   0
+ .../codepoint/IndicFontFeatureCodepoint-DependentVowels.txt |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt    |   0
+ .../IndicFontFeatureCodepoint-IndependentVowels.txt         |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt  |   0
+ .../codepoint/IndicFontFeatureCodepoint-VariousSigns.txt    |   0
+ .../script-malayalam/utrrs/gsub/IndicFontFeatureGSUB.txt    |   0
+ .../texts/in-house/shaper-indic/script-oriya/misc/bindu.txt |   0
+ .../texts/in-house/shaper-indic/script-oriya/misc/misc.txt  |   0
+ .../shaper-indic/script-oriya/oriya-vowel-letters.txt       |   0
+ .../texts/in-house/shaper-indic/script-oriya/utrrs/LICENSE  |   0
+ .../texts/in-house/shaper-indic/script-oriya/utrrs/README   |   0
+ .../texts/in-house/shaper-indic/script-oriya/utrrs/SOURCES  |   0
+ .../IndicFontFeatureCodepoint-AdditionalConsonants.txt      |   0
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt          |   0
+ .../codepoint/IndicFontFeatureCodepoint-Consonants.txt      |   0
+ .../codepoint/IndicFontFeatureCodepoint-DependentVowels.txt |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt    |   0
+ .../IndicFontFeatureCodepoint-IndependentVowels.txt         |   0
+ .../codepoint/IndicFontFeatureCodepoint-OriyaSpecific.txt   |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt  |   0
+ .../codepoint/IndicFontFeatureCodepoint-VariousSigns.txt    |   0
+ .../script-oriya/utrrs/gsub/IndicFontFeatureGSUB.txt        |   0
+ .../in-house/shaper-indic/script-sinhala/misc/extensive.txt |   0
+ .../in-house/shaper-indic/script-sinhala/misc/misc.txt      |   0
+ .../in-house/shaper-indic/script-sinhala/misc/reph.txt      |   0
+ .../shaper-indic/script-sinhala/misc/split-matras.txt       |   0
+ .../in-house/shaper-indic/script-sinhala/utrrs/LICENSE      |   0
+ .../texts/in-house/shaper-indic/script-sinhala/utrrs/README |   0
+ .../in-house/shaper-indic/script-sinhala/utrrs/SOURCES      |   0
+ .../codepoint/IndicFontFeatureCodepoint-Consonants.txt      |   0
+ .../codepoint/IndicFontFeatureCodepoint-DependentVowels.txt |   0
+ .../IndicFontFeatureCodepoint-IndependentVowels.txt         |   0
+ .../codepoint/IndicFontFeatureCodepoint-Punctuation.txt     |   0
+ .../codepoint/IndicFontFeatureCodepoint-VariousSigns.txt    |   0
+ .../script-sinhala/utrrs/gpos/IndicFontFeatureGPOS.txt      |   0
+ .../utrrs/gsub/IndicFontFeatureGSUB-Conjunct.txt            |   0
+ .../utrrs/gsub/IndicFontFeatureGSUB-Rakaaraansaya.txt       |   0
+ .../utrrs/gsub/IndicFontFeatureGSUB-Repaya.txt              |   0
+ .../utrrs/gsub/IndicFontFeatureGSUB-Special-Cases.txt       |   0
+ .../utrrs/gsub/IndicFontFeatureGSUB-TouchingLetters.txt     |   0
+ .../utrrs/gsub/IndicFontFeatureGSUB-Yansaya.txt             |   0
+ .../script-sinhala/utrrs/gsub/IndicFontFeatureGSUB.txt      |   0
+ .../texts/in-house/shaper-indic/script-tamil/misc/misc.txt  |   0
+ .../texts/in-house/shaper-indic/script-tamil/utrrs/LICENSE  |   0
+ .../texts/in-house/shaper-indic/script-tamil/utrrs/README   |   0
+ .../texts/in-house/shaper-indic/script-tamil/utrrs/SOURCES  |   0
+ .../codepoint/IndicFontFeatureCodepoint-Consonants.txt      |   0
+ .../codepoint/IndicFontFeatureCodepoint-CurrencySymbols.txt |   0
+ .../codepoint/IndicFontFeatureCodepoint-DependentVowels.txt |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt    |   0
+ .../IndicFontFeatureCodepoint-IndependentVowels.txt         |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Numerics.txt  |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt  |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Symbols.txt   |   0
+ .../codepoint/IndicFontFeatureCodepoint-TamilSymbol.txt     |   0
+ .../codepoint/IndicFontFeatureCodepoint-VariousSigns.txt    |   0
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt           |   0
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt           |   0
+ .../script-tamil/utrrs/gsub/IndicFontFeatureGSUB.txt        |   0
+ .../texts/in-house/shaper-indic/script-telugu/misc/misc.txt |   0
+ .../shaper-indic/script-telugu/telugu-vowel-letters.txt     |   0
+ .../texts/in-house/shaper-indic/script-telugu/utrrs/LICENSE |   0
+ .../texts/in-house/shaper-indic/script-telugu/utrrs/README  |   0
+ .../texts/in-house/shaper-indic/script-telugu/utrrs/SOURCES |   0
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt          |   0
+ .../codepoint/IndicFontFeatureCodepoint-Consonants.txt      |   0
+ .../codepoint/IndicFontFeatureCodepoint-DependentVowels.txt |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt    |   0
+ .../IndicFontFeatureCodepoint-IndependentVowels.txt         |   0
+ .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt  |   0
+ .../codepoint/IndicFontFeatureCodepoint-VariousSigns.txt    |   0
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt           |   0
+ .../script-telugu/utrrs/gsub/IndicFontFeatureGSUB.txt       |   0
+ .../{shaping => shape}/texts/in-house/shaper-khmer/misc.txt |   0
+ .../texts/in-house/shaper-khmer/other-marks-invalid.txt     |   0
+ .../texts/in-house/shaper-khmer/other-marks.txt             |   0
+ .../in-house/shaper-myanmar/script-myanmar/misc/misc.txt    |   0
+ .../in-house/shaper-myanmar/script-myanmar/misc/otspec.txt  |   0
+ .../in-house/shaper-myanmar/script-myanmar/misc/utn11.txt   |   0
+ .../texts/in-house/shaper-thai/script-lao/misc/sara-am.txt  |   0
+ .../texts/in-house/shaper-thai/script-thai/misc/misc.txt    |   0
+ .../texts/in-house/shaper-thai/script-thai/misc/phinthu.txt |   0
+ .../in-house/shaper-thai/script-thai/misc/pua-shaping.txt   |   0
+ .../texts/in-house/shaper-thai/script-thai/misc/sara-am.txt |   0
+ .../shaper-tibetan/script-tibetan/misc/contractions.txt     |   0
+ .../in-house/shaper-tibetan/script-tibetan/misc/misc.txt    |   0
+ .../texts/in-house/shaper-use/script-batak/misc.txt         |   0
+ .../texts/in-house/shaper-use/script-buginese/misc.txt      |   0
+ .../texts/in-house/shaper-use/script-cham/misc.txt          |   0
+ .../texts/in-house/shaper-use/script-javanese/misc.txt      |   0
+ .../texts/in-house/shaper-use/script-kaithi/misc.txt        |   0
+ .../texts/in-house/shaper-use/script-kharoshti/misc.txt     |   0
+ .../texts/in-house/shaper-use/script-tai-tham/misc.txt      |   0
+ .../texts/in-house/shaper-use/script-tai-tham/torture.txt   |   0
+ 983 files changed, 8 insertions(+), 8 deletions(-)
+
+commit e4b33d9d360eeb80f7d841f7ad8921aa16836027
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 18:35:11 2021 -0600
+
+    [util] Use post_parse in face_options_t
+
+ util/face-options.hh | 37 ++++++++++++-------------------------
+ util/font-options.hh |  2 --
+ util/hb-subset.cc    |  2 +-
+ util/helper-cairo.hh |  2 +-
+ 4 files changed, 14 insertions(+), 29 deletions(-)
+
+commit c0ea4e2d33e613eb4936a9cce85453a6b7a43ae5
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 18:30:08 2021 -0600
+
+    [util] Use post_parse to validate
+
+ util/face-options.hh   | 21 +++++++++++----
+ util/font-options.hh   |  1 -
+ util/main-font-text.hh | 72 ++++++++++++++++++++++++++++++++++----------------
+ util/options.hh        | 33 +++++++++--------------
+ util/text-options.hh   |  3 +++
+ 5 files changed, 81 insertions(+), 49 deletions(-)
+
+commit f1226988104281b576878cd8c306d03cc91aa111
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Thu Aug 12 01:47:35 2021 +0200
+
+    [test] Improve generate-expected-outputs.py diff output
+
+ test/subset/generate-expected-outputs.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 9468e4699833b6f6376503d2724fa4a8abcc8ab2
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 16:46:04 2021 -0600
+
+    [util] Rename main_font_text back to main_font_text_t
+
+ util/hb-ot-shape-closure.cc | 2 +-
+ util/hb-shape.cc            | 2 +-
+ util/hb-subset.cc           | 2 +-
+ util/hb-view.cc             | 2 +-
+ util/main-font-text.hh      | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 6ac6a2b27b3abe42508828e7919c9ff55a7840d7
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Thu Aug 12 00:04:32 2021 +0200
+
+    [test] hb_ot_layout_language_get_feature_tags()
+
+ test/api/test-ot-layout.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 45 insertions(+)
+
+commit e9b743b26d9ac4a981ac519d85d975ad1d74f513
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Aug 11 23:51:12 2021 +0200
+
+    [test] hb_ot_layout_script_get_language_tags()
+
+ test/api/test-ot-layout.c | 40 ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 40 insertions(+)
+
+commit bf438b815f488afe97ae8442ec4a0989a8bc0c65
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Aug 11 23:23:51 2021 +0200
+
+    [test] hb_ot_layout_table_get_feature_tags()
+
+ test/api/test-ot-layout.c | 42 ++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 42 insertions(+)
+
+commit 2f88ea5a200a8c33ed307460ef153cf51d486683
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Aug 11 23:12:00 2021 +0200
+
+    [test] hb_ot_layout_table_find_script()
+
+ test/api/test-ot-layout.c | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+commit f60caad7ffd796c6dc1cc57f0cecee6fd643d827
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Aug 11 22:54:30 2021 +0200
+
+    [test] hb_ot_layout_table_get_script_tags()
+
+ test/api/Makefile.am      |  1 +
+ test/api/meson.build      |  1 +
+ test/api/test-ot-layout.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 79 insertions(+)
+
+commit 7e4fcf1be895b7c92d3d5e3498cf1b467708994c
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 12:12:49 2021 -0600
+
+    [util] Rename add_main_options
+
+ util/options.hh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 62fb102184b82ad1c7798c16fcb5f390ddf2ba91
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 12:03:07 2021 -0600
+
+    [util] Move add_main_options() invocation
+
+ util/options.hh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 9d8bbe3e531ded6419b2573c8b813596fff69745
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 11 11:53:32 2021 -0600
+
+    [util] Make main_font_text a struct again
+    
+    Going to move to G_OPTION_REMAINING.
+
+ util/batch.hh               |  8 +++---
+ util/hb-ot-shape-closure.cc |  2 +-
+ util/hb-shape.cc            |  4 +--
+ util/hb-subset.cc           |  4 +--
+ util/hb-view.cc             |  2 +-
+ util/main-font-text.hh      | 59 ++++++++++++++++++++++++---------------------
+ 6 files changed, 41 insertions(+), 38 deletions(-)
+
+commit 5bd463f130935df282cc2a484ef1bb6dbd047170
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Aug 10 14:26:48 2021 -0600
+
+    [util/hb-subset] Access input directly
+
+ util/hb-subset.cc      | 3 ---
+ util/subset-options.hh | 5 -----
+ 2 files changed, 8 deletions(-)
+
+commit 6905f6fa600c2565573952e9d347dfcf9f0d3770
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Aug 10 14:24:24 2021 -0600
+
+    [util/hb-subset] Use templated function to parse flags directly
+
+ util/subset-options.hh | 55 +++++++++++++++++++++++++-------------------------
+ 1 file changed, 27 insertions(+), 28 deletions(-)
+
+commit 3e3e1801a5a7916c3966c86b4deab225c3d63167
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Aug 10 13:59:46 2021 -0600
+
+    [util] Small tweaks in --help output
+
+ util/font-options.hh | 3 ++-
+ util/text-options.hh | 4 ++--
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+commit c08f1b89037b9a0277b8cef67ff2f38bcf253dfd
+Author: Garret Rieger <grieger at google.com>
+Date:   Tue Aug 10 12:29:32 2021 -0700
+
+    [map] fix incorrect population count in hash map.
+    
+    If the same key was set twice the population was being incorrectly incremented.
+
+ src/hb-map.hh                                      |   2 +-
+ test/api/test-map.c                                |  28 +++++++++++++++++++++
+ ...ase-minimized-hb-subset-fuzzer-5522792714993664 | Bin 0 -> 74 bytes
+ 3 files changed, 29 insertions(+), 1 deletion(-)
+
+commit e39c3bde7bf56a49848cba09cf7309ac6a359796
+Author: Garret Rieger <grieger at google.com>
+Date:   Tue Aug 10 11:41:55 2021 -0700
+
+    [subset] fix bug in parsing glyf flags.
+    
+    the bytes of the flag stream were being treated as signed integers instead of unsigned as specified in the spec.
+
+ src/hb-ot-glyf-table.hh                                  |   4 ++--
+ test/subset/data/Makefile.am                             |   1 +
+ test/subset/data/Makefile.sources                        |   1 +
+ ..._3131.drop-hints-retain-gids.63,64,65,6F,70,71,72.ttf | Bin 0 -> 1908 bytes
+ ..._3131.drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 0 -> 1908 bytes
+ .../glyf_bug_3131.retain-gids.63,64,65,6F,70,71,72.ttf   | Bin 0 -> 1928 bytes
+ .../glyf_bug_3131.retain-gids.retain-all-codepoint.ttf   | Bin 0 -> 1928 bytes
+ test/subset/data/fonts/glyf_bug_3131.ttf                 | Bin 0 -> 2600 bytes
+ test/subset/data/tests/glyf_bug_3131.tests               |  11 +++++++++++
+ test/subset/meson.build                                  |   1 +
+ 10 files changed, 16 insertions(+), 2 deletions(-)
+
+commit f5a8f747ffc4fa920d12db68f1f40c28627d720a
+Merge: d92ee726c f3acb977e
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Aug 10 11:21:08 2021 -0600
+
+    Merge pull request #3132 from harfbuzz/semicolon
+    
+    Use semicolon in shaping test suite
+
+commit f3acb977ec269dc735ab68aa477ada774873d5d4
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Aug 10 11:05:40 2021 -0600
+
+    [test/shaping;util] Use ';' instead of ':' to separate test fields
+    
+    Accept that in --batch mode. Also in batch mode don't send the 0th arg.
+    
+    Related discussion: https://github.com/harfbuzz/harfbuzz/pull/3102
+
+ test/shaping/data/aots/hb-aots-tester.cpp          |   18 +-
+ test/shaping/data/aots/tests/classdef1.tests       |    2 +-
+ test/shaping/data/aots/tests/classdef1_empty.tests |    2 +-
+ .../data/aots/tests/classdef1_multiple.tests       |    2 +-
+ .../shaping/data/aots/tests/classdef1_single.tests |    2 +-
+ test/shaping/data/aots/tests/classdef2.tests       |    2 +-
+ test/shaping/data/aots/tests/classdef2_empty.tests |    2 +-
+ .../data/aots/tests/classdef2_multiple.tests       |    2 +-
+ .../shaping/data/aots/tests/classdef2_single.tests |    2 +-
+ test/shaping/data/aots/tests/cmap0.tests           |    2 +-
+ test/shaping/data/aots/tests/cmap10.tests          |    4 +-
+ test/shaping/data/aots/tests/cmap12.tests          |    2 +-
+ test/shaping/data/aots/tests/cmap2.tests           |    2 +-
+ test/shaping/data/aots/tests/cmap4.tests           |   12 +-
+ test/shaping/data/aots/tests/cmap6.tests           |    4 +-
+ test/shaping/data/aots/tests/cmap8.tests           |    2 +-
+ .../data/aots/tests/gpos1_1_lookupflag.tests       |    2 +-
+ test/shaping/data/aots/tests/gpos1_1_simple.tests  |    8 +-
+ test/shaping/data/aots/tests/gpos1_2.tests         |    2 +-
+ .../data/aots/tests/gpos1_2_lookupflag.tests       |    2 +-
+ test/shaping/data/aots/tests/gpos2_1.tests         |    4 +-
+ .../data/aots/tests/gpos2_1_lookupflag.tests       |    4 +-
+ .../data/aots/tests/gpos2_1_next_glyph.tests       |    4 +-
+ test/shaping/data/aots/tests/gpos2_1_simple.tests  |    4 +-
+ test/shaping/data/aots/tests/gpos2_2.tests         |   10 +-
+ test/shaping/data/aots/tests/gpos3.tests           |   22 +-
+ .../shaping/data/aots/tests/gpos3_lookupflag.tests |    4 +-
+ .../shaping/data/aots/tests/gpos4_lookupflag.tests |    4 +-
+ .../data/aots/tests/gpos4_multiple_anchors.tests   |    2 +-
+ test/shaping/data/aots/tests/gpos4_simple.tests    |   10 +-
+ test/shaping/data/aots/tests/gpos5.tests           |    4 +-
+ test/shaping/data/aots/tests/gpos6.tests           |    6 +-
+ test/shaping/data/aots/tests/gpos7_1.tests         |    4 +-
+ test/shaping/data/aots/tests/gpos9.tests           |    4 +-
+ .../data/aots/tests/gpos_chaining1_boundary.tests  |    8 +-
+ .../aots/tests/gpos_chaining1_lookupflag.tests     |    2 +-
+ .../tests/gpos_chaining1_multiple_subrules.tests   |    4 +-
+ .../aots/tests/gpos_chaining1_next_glyph.tests     |    2 +-
+ .../data/aots/tests/gpos_chaining1_simple.tests    |   22 +-
+ .../aots/tests/gpos_chaining1_successive.tests     |    2 +-
+ .../data/aots/tests/gpos_chaining2_boundary.tests  |    8 +-
+ .../aots/tests/gpos_chaining2_lookupflag.tests     |    2 +-
+ .../tests/gpos_chaining2_multiple_subrules.tests   |    4 +-
+ .../aots/tests/gpos_chaining2_next_glyph.tests     |    2 +-
+ .../data/aots/tests/gpos_chaining2_simple.tests    |   22 +-
+ .../aots/tests/gpos_chaining2_successive.tests     |    2 +-
+ .../data/aots/tests/gpos_chaining3_boundary.tests  |    8 +-
+ .../aots/tests/gpos_chaining3_lookupflag.tests     |    2 +-
+ .../aots/tests/gpos_chaining3_next_glyph.tests     |    2 +-
+ .../data/aots/tests/gpos_chaining3_simple.tests    |   22 +-
+ .../aots/tests/gpos_chaining3_successive.tests     |    2 +-
+ .../data/aots/tests/gpos_context1_boundary.tests   |    4 +-
+ .../data/aots/tests/gpos_context1_expansion.tests  |    2 +-
+ .../data/aots/tests/gpos_context1_lookupflag.tests |    4 +-
+ .../tests/gpos_context1_multiple_subrules.tests    |    4 +-
+ .../data/aots/tests/gpos_context1_next_glyph.tests |    2 +-
+ .../data/aots/tests/gpos_context1_simple.tests     |    6 +-
+ .../data/aots/tests/gpos_context1_successive.tests |    2 +-
+ .../data/aots/tests/gpos_context2_boundary.tests   |    4 +-
+ .../data/aots/tests/gpos_context2_classes.tests    |    4 +-
+ .../data/aots/tests/gpos_context2_expansion.tests  |    2 +-
+ .../data/aots/tests/gpos_context2_lookupflag.tests |    4 +-
+ .../tests/gpos_context2_multiple_subrules.tests    |    4 +-
+ .../data/aots/tests/gpos_context2_next_glyph.tests |    2 +-
+ .../data/aots/tests/gpos_context2_simple.tests     |    6 +-
+ .../data/aots/tests/gpos_context2_successive.tests |    2 +-
+ .../data/aots/tests/gpos_context3_boundary.tests   |    4 +-
+ .../data/aots/tests/gpos_context3_lookupflag.tests |    4 +-
+ .../data/aots/tests/gpos_context3_next_glyph.tests |    2 +-
+ .../data/aots/tests/gpos_context3_simple.tests     |    4 +-
+ .../data/aots/tests/gpos_context3_successive.tests |    2 +-
+ .../data/aots/tests/gsub1_1_lookupflag.tests       |    2 +-
+ test/shaping/data/aots/tests/gsub1_1_modulo.tests  |    2 +-
+ test/shaping/data/aots/tests/gsub1_1_simple.tests  |    2 +-
+ .../data/aots/tests/gsub1_2_lookupflag.tests       |    2 +-
+ test/shaping/data/aots/tests/gsub1_2_simple.tests  |    2 +-
+ .../data/aots/tests/gsub2_1_lookupflag.tests       |    2 +-
+ .../aots/tests/gsub2_1_multiple_sequences.tests    |    2 +-
+ test/shaping/data/aots/tests/gsub2_1_simple.tests  |    4 +-
+ .../data/aots/tests/gsub3_1_lookupflag.tests       |    2 +-
+ .../shaping/data/aots/tests/gsub3_1_multiple.tests |    2 +-
+ test/shaping/data/aots/tests/gsub3_1_simple.tests  |    2 +-
+ .../data/aots/tests/gsub4_1_lookupflag.tests       |    2 +-
+ .../aots/tests/gsub4_1_multiple_ligatures.tests    |    4 +-
+ .../data/aots/tests/gsub4_1_multiple_ligsets.tests |    2 +-
+ test/shaping/data/aots/tests/gsub4_1_simple.tests  |    2 +-
+ test/shaping/data/aots/tests/gsub7.tests           |    4 +-
+ .../data/aots/tests/gsub_chaining1_boundary.tests  |    8 +-
+ .../aots/tests/gsub_chaining1_lookupflag.tests     |    2 +-
+ .../tests/gsub_chaining1_multiple_subrules.tests   |    4 +-
+ .../aots/tests/gsub_chaining1_next_glyph.tests     |    2 +-
+ .../data/aots/tests/gsub_chaining1_simple.tests    |   22 +-
+ .../aots/tests/gsub_chaining1_successive.tests     |    2 +-
+ .../data/aots/tests/gsub_chaining2_boundary.tests  |    8 +-
+ .../aots/tests/gsub_chaining2_lookupflag.tests     |    2 +-
+ .../tests/gsub_chaining2_multiple_subrules.tests   |    4 +-
+ .../aots/tests/gsub_chaining2_next_glyph.tests     |    2 +-
+ .../data/aots/tests/gsub_chaining2_simple.tests    |   22 +-
+ .../aots/tests/gsub_chaining2_successive.tests     |    2 +-
+ .../data/aots/tests/gsub_chaining3_boundary.tests  |    8 +-
+ .../aots/tests/gsub_chaining3_lookupflag.tests     |    2 +-
+ .../aots/tests/gsub_chaining3_next_glyph.tests     |    2 +-
+ .../data/aots/tests/gsub_chaining3_simple.tests    |   22 +-
+ .../aots/tests/gsub_chaining3_successive.tests     |    2 +-
+ .../data/aots/tests/gsub_context1_boundary.tests   |    4 +-
+ .../data/aots/tests/gsub_context1_expansion.tests  |    2 +-
+ .../data/aots/tests/gsub_context1_lookupflag.tests |    4 +-
+ .../tests/gsub_context1_multiple_subrules.tests    |    4 +-
+ .../data/aots/tests/gsub_context1_next_glyph.tests |    2 +-
+ .../data/aots/tests/gsub_context1_simple.tests     |    6 +-
+ .../data/aots/tests/gsub_context1_successive.tests |    2 +-
+ .../data/aots/tests/gsub_context2_boundary.tests   |    4 +-
+ .../data/aots/tests/gsub_context2_classes.tests    |    4 +-
+ .../data/aots/tests/gsub_context2_expansion.tests  |    2 +-
+ .../data/aots/tests/gsub_context2_lookupflag.tests |    4 +-
+ .../tests/gsub_context2_multiple_subrules.tests    |    4 +-
+ .../data/aots/tests/gsub_context2_next_glyph.tests |    2 +-
+ .../data/aots/tests/gsub_context2_simple.tests     |    6 +-
+ .../data/aots/tests/gsub_context2_successive.tests |    2 +-
+ .../data/aots/tests/gsub_context3_boundary.tests   |    4 +-
+ .../data/aots/tests/gsub_context3_lookupflag.tests |    4 +-
+ .../data/aots/tests/gsub_context3_next_glyph.tests |    2 +-
+ .../data/aots/tests/gsub_context3_simple.tests     |    4 +-
+ .../data/aots/tests/gsub_context3_successive.tests |    2 +-
+ .../data/aots/tests/lookupflag_ignore_attach.tests |   10 +-
+ .../data/aots/tests/lookupflag_ignore_base.tests   |    4 +-
+ .../aots/tests/lookupflag_ignore_combination.tests |    6 +-
+ .../aots/tests/lookupflag_ignore_ligatures.tests   |    6 +-
+ .../data/aots/tests/lookupflag_ignore_marks.tests  |    2 +-
+ test/shaping/data/in-house/tests/aat-morx.tests    |    2 +-
+ test/shaping/data/in-house/tests/aat-trak.tests    |   22 +-
+ .../in-house/tests/arabic-fallback-shaping.tests   |    2 +-
+ .../data/in-house/tests/arabic-feature-order.tests |    8 +-
+ .../data/in-house/tests/arabic-like-joining.tests  |    2 +-
+ .../data/in-house/tests/arabic-mark-attach.tests   |    2 +-
+ .../data/in-house/tests/arabic-mark-order.tests    |   12 +-
+ test/shaping/data/in-house/tests/arabic-stch.tests |    2 +-
+ .../data/in-house/tests/automatic-fractions.tests  |    6 +-
+ test/shaping/data/in-house/tests/cluster.tests     |    8 +-
+ test/shaping/data/in-house/tests/collections.tests |   12 +-
+ test/shaping/data/in-house/tests/color-fonts.tests |    4 +-
+ .../data/in-house/tests/context-matching.tests     |    6 +-
+ .../data/in-house/tests/cursive-positioning.tests  |   10 +-
+ .../data/in-house/tests/default-ignorables.tests   |   10 +-
+ test/shaping/data/in-house/tests/digits.tests      |   10 +-
+ .../data/in-house/tests/emoji-clusters.tests       | 6522 ++++++++++----------
+ test/shaping/data/in-house/tests/emoji.tests       |   10 +-
+ .../data/in-house/tests/fallback-positioning.tests |    4 +-
+ test/shaping/data/in-house/tests/hangul-jamo.tests |    4 +-
+ test/shaping/data/in-house/tests/hyphens.tests     |    4 +-
+ .../tests/indic-consonant-with-stacker.tests       |    8 +-
+ .../data/in-house/tests/indic-decompose.tests      |    2 +-
+ test/shaping/data/in-house/tests/indic-init.tests  |    2 +-
+ .../in-house/tests/indic-joiner-candrabindu.tests  |    4 +-
+ .../data/in-house/tests/indic-joiners.tests        |   12 +-
+ .../data/in-house/tests/indic-old-spec.tests       |    8 +-
+ .../data/in-house/tests/indic-pref-blocking.tests  |    4 +-
+ .../in-house/tests/indic-script-extensions.tests   |    4 +-
+ .../data/in-house/tests/indic-special-cases.tests  |    6 +-
+ .../data/in-house/tests/indic-syllable.tests       |   24 +-
+ .../tests/indic-vowel-letter-spoofing.tests        |  106 +-
+ .../shaping/data/in-house/tests/kern-format2.tests |    6 +-
+ .../data/in-house/tests/khmer-mark-order.tests     |   50 +-
+ test/shaping/data/in-house/tests/khmer-misc.tests  |  180 +-
+ .../data/in-house/tests/language-tags.tests        |   26 +-
+ test/shaping/data/in-house/tests/ligature-id.tests |   74 +-
+ test/shaping/data/in-house/tests/macos.tests       |  266 +-
+ .../data/in-house/tests/mark-attachment.tests      |    2 +-
+ .../data/in-house/tests/mark-filtering-sets.tests  |   10 +-
+ .../tests/mongolian-variation-selector.tests       |   38 +-
+ .../shaping/data/in-house/tests/myanmar-misc.tests |    2 +-
+ .../data/in-house/tests/myanmar-syllable.tests     |    2 +-
+ .../data/in-house/tests/myanmar-zawgyi.tests       |    2 +-
+ .../data/in-house/tests/none-directional.tests     |    6 +-
+ .../data/in-house/tests/positioning-features.tests |    6 +-
+ test/shaping/data/in-house/tests/rand.tests        |    6 +-
+ test/shaping/data/in-house/tests/reverse-sub.tests |    2 +-
+ test/shaping/data/in-house/tests/rotation.tests    |    8 +-
+ test/shaping/data/in-house/tests/simple.tests      |    4 +-
+ test/shaping/data/in-house/tests/sinhala.tests     |    2 +-
+ test/shaping/data/in-house/tests/spaces.tests      |   68 +-
+ .../in-house/tests/tibetan-contractions-1.tests    |  120 +-
+ .../in-house/tests/tibetan-contractions-2.tests    |  106 +-
+ .../data/in-house/tests/tibetan-vowels.tests       |   22 +-
+ .../shaping/data/in-house/tests/tt-kern-gpos.tests |    2 +-
+ test/shaping/data/in-house/tests/use-indic3.tests  |    2 +-
+ test/shaping/data/in-house/tests/use-marchen.tests |   70 +-
+ .../shaping/data/in-house/tests/use-syllable.tests |   44 +-
+ .../in-house/tests/use-vowel-letter-spoofing.tests |  188 +-
+ test/shaping/data/in-house/tests/use.tests         |   30 +-
+ .../data/in-house/tests/variations-rvrn.tests      |  200 +-
+ test/shaping/data/in-house/tests/variations.tests  |   10 +-
+ test/shaping/data/in-house/tests/vertical.tests    |    8 +-
+ .../data/in-house/tests/zero-width-marks.tests     |   22 +-
+ .../data/text-rendering-tests/tests/AVAR-1.tests   |   34 +-
+ .../data/text-rendering-tests/tests/CFF-1.tests    |   26 +-
+ .../data/text-rendering-tests/tests/CFF-2.tests    |   26 +-
+ .../data/text-rendering-tests/tests/CFF2-1.tests   |   18 +-
+ .../data/text-rendering-tests/tests/CMAP-1.tests   |    8 +-
+ .../data/text-rendering-tests/tests/CMAP-2.tests   |    4 +-
+ .../data/text-rendering-tests/tests/CMAP-3.tests   |   40 +-
+ .../data/text-rendering-tests/tests/CVAR-1.tests   |    6 +-
+ .../data/text-rendering-tests/tests/CVAR-2.tests   |    6 +-
+ .../data/text-rendering-tests/tests/GLYF-1.tests   |    2 +-
+ .../data/text-rendering-tests/tests/GPOS-1.tests   |   38 +-
+ .../data/text-rendering-tests/tests/GPOS-2.tests   |    6 +-
+ .../data/text-rendering-tests/tests/GPOS-3.tests   |    8 +-
+ .../data/text-rendering-tests/tests/GPOS-4.tests   |    8 +-
+ .../data/text-rendering-tests/tests/GPOS-5.tests   |   10 +-
+ .../data/text-rendering-tests/tests/GSUB-1.tests   |    2 +-
+ .../data/text-rendering-tests/tests/GSUB-2.tests   |   22 +-
+ .../data/text-rendering-tests/tests/GSUB-3.tests   |    2 +-
+ .../data/text-rendering-tests/tests/GVAR-1.tests   |   18 +-
+ .../data/text-rendering-tests/tests/GVAR-2.tests   |   18 +-
+ .../data/text-rendering-tests/tests/GVAR-3.tests   |   18 +-
+ .../data/text-rendering-tests/tests/GVAR-4.tests   |   22 +-
+ .../data/text-rendering-tests/tests/GVAR-5.tests   |   22 +-
+ .../data/text-rendering-tests/tests/GVAR-6.tests   |   22 +-
+ .../data/text-rendering-tests/tests/GVAR-7.tests   |   14 +-
+ .../data/text-rendering-tests/tests/GVAR-8.tests   |   12 +-
+ .../data/text-rendering-tests/tests/GVAR-9.tests   |   20 +-
+ .../data/text-rendering-tests/tests/HVAR-1.tests   |   12 +-
+ .../data/text-rendering-tests/tests/HVAR-2.tests   |   12 +-
+ .../data/text-rendering-tests/tests/KERN-1.tests   |    2 +-
+ .../data/text-rendering-tests/tests/KERN-2.tests   |    2 +-
+ .../data/text-rendering-tests/tests/MORX-1.tests   |    2 +-
+ .../data/text-rendering-tests/tests/MORX-10.tests  |    2 +-
+ .../data/text-rendering-tests/tests/MORX-11.tests  |    2 +-
+ .../data/text-rendering-tests/tests/MORX-12.tests  |    6 +-
+ .../data/text-rendering-tests/tests/MORX-13.tests  |    2 +-
+ .../data/text-rendering-tests/tests/MORX-14.tests  |    4 +-
+ .../data/text-rendering-tests/tests/MORX-16.tests  |    2 +-
+ .../data/text-rendering-tests/tests/MORX-17.tests  |    2 +-
+ .../data/text-rendering-tests/tests/MORX-18.tests  |    8 +-
+ .../data/text-rendering-tests/tests/MORX-19.tests  |    4 +-
+ .../data/text-rendering-tests/tests/MORX-2.tests   |   32 +-
+ .../data/text-rendering-tests/tests/MORX-20.tests  |   14 +-
+ .../data/text-rendering-tests/tests/MORX-21.tests  |    2 +-
+ .../data/text-rendering-tests/tests/MORX-22.tests  |    2 +-
+ .../data/text-rendering-tests/tests/MORX-23.tests  |    2 +-
+ .../data/text-rendering-tests/tests/MORX-24.tests  |    2 +-
+ .../data/text-rendering-tests/tests/MORX-25.tests  |   18 +-
+ .../data/text-rendering-tests/tests/MORX-26.tests  |    4 +-
+ .../data/text-rendering-tests/tests/MORX-27.tests  |    6 +-
+ .../data/text-rendering-tests/tests/MORX-28.tests  |   10 +-
+ .../data/text-rendering-tests/tests/MORX-29.tests  |    8 +-
+ .../data/text-rendering-tests/tests/MORX-3.tests   |   32 +-
+ .../data/text-rendering-tests/tests/MORX-30.tests  |    8 +-
+ .../data/text-rendering-tests/tests/MORX-31.tests  |   16 +-
+ .../data/text-rendering-tests/tests/MORX-32.tests  |    8 +-
+ .../data/text-rendering-tests/tests/MORX-33.tests  |    6 +-
+ .../data/text-rendering-tests/tests/MORX-34.tests  |    2 +-
+ .../data/text-rendering-tests/tests/MORX-35.tests  |    4 +-
+ .../data/text-rendering-tests/tests/MORX-36.tests  |    2 +-
+ .../data/text-rendering-tests/tests/MORX-37.tests  |    8 +-
+ .../data/text-rendering-tests/tests/MORX-38.tests  |    8 +-
+ .../data/text-rendering-tests/tests/MORX-39.tests  |    8 +-
+ .../data/text-rendering-tests/tests/MORX-4.tests   |   30 +-
+ .../data/text-rendering-tests/tests/MORX-40.tests  |    8 +-
+ .../data/text-rendering-tests/tests/MORX-41.tests  |    8 +-
+ .../data/text-rendering-tests/tests/MORX-5.tests   |   50 +-
+ .../data/text-rendering-tests/tests/MORX-6.tests   |    2 +-
+ .../data/text-rendering-tests/tests/MORX-7.tests   |    2 +-
+ .../data/text-rendering-tests/tests/MORX-8.tests   |    6 +-
+ .../data/text-rendering-tests/tests/MORX-9.tests   |    2 +-
+ .../data/text-rendering-tests/tests/SFNT-1.tests   |    4 +-
+ .../data/text-rendering-tests/tests/SFNT-2.tests   |    4 +-
+ .../data/text-rendering-tests/tests/SHARAN-1.tests |   12 +-
+ .../data/text-rendering-tests/tests/SHBALI-1.tests |   44 +-
+ .../data/text-rendering-tests/tests/SHBALI-2.tests |   24 +-
+ .../data/text-rendering-tests/tests/SHBALI-3.tests |   18 +-
+ .../data/text-rendering-tests/tests/SHKNDA-1.tests |   68 +-
+ .../data/text-rendering-tests/tests/SHKNDA-2.tests |   32 +-
+ .../data/text-rendering-tests/tests/SHKNDA-3.tests |   62 +-
+ .../data/text-rendering-tests/tests/SHLANA-1.tests |  104 +-
+ .../text-rendering-tests/tests/SHLANA-10.tests     |   94 +-
+ .../data/text-rendering-tests/tests/SHLANA-2.tests |   74 +-
+ .../data/text-rendering-tests/tests/SHLANA-3.tests |   26 +-
+ .../data/text-rendering-tests/tests/SHLANA-4.tests |    6 +-
+ .../data/text-rendering-tests/tests/SHLANA-5.tests |   26 +-
+ .../data/text-rendering-tests/tests/SHLANA-6.tests |   14 +-
+ .../data/text-rendering-tests/tests/SHLANA-7.tests |   36 +-
+ .../data/text-rendering-tests/tests/SHLANA-8.tests |   26 +-
+ .../data/text-rendering-tests/tests/SHLANA-9.tests |   12 +-
+ test/shaping/record-test.sh                        |    2 +-
+ test/shaping/run-tests.py                          |   16 +-
+ test/subset/run-repack-tests.py                    |    8 +-
+ test/subset/run-tests.py                           |    8 +-
+ util/batch.hh                                      |   10 +-
+ 289 files changed, 5277 insertions(+), 5279 deletions(-)
+
+commit b83fd3a564aaaa0311a1f8275b2ae5bbc8b94e2c
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Aug 10 02:21:05 2021 -0600
+
+    [util] Refactor batch-processing code into batch.hh
+
+ test/subset/run-repack-tests.py |  2 +-
+ test/subset/run-tests.py        |  2 +-
+ util/Makefile.sources           |  2 ++
+ util/batch.hh                   | 72 +++++++++++++++++++++++++++++++++++++++++
+ util/hb-shape.cc                | 34 ++-----------------
+ util/hb-subset.cc               | 34 ++-----------------
+ 6 files changed, 80 insertions(+), 66 deletions(-)
+
+commit d92ee726ce3b2fc2c249407d977433f0badcc918
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Aug 9 19:08:34 2021 -0600
+
+    [util/hb-shape] Treat as single-paragraph text other than provided by a file
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/3129
+
+ util/hb-shape.cc       |  4 ++--
+ util/hb-subset.cc      |  4 ++--
+ util/main-font-text.hh |  4 ++--
+ util/text-options.hh   | 39 +++++++++------------------------------
+ 4 files changed, 15 insertions(+), 36 deletions(-)
+
+commit 8940409e3c108e2c26c0f22679eb3c6cea4fee9d
+Merge: f5ba1fabc 7d2e9164a
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Aug 9 13:21:07 2021 -0600
+
+    Merge pull request #3121 from harfbuzz/subset-args
+    
+    Fix up `hb-subset --help-all`
+
+commit f5ba1fabced5b04615ece8938d950b098490fe97
+Author: Ben Wagner <bungeman at chromium.org>
+Date:   Sat Aug 7 16:05:51 2021 -0400
+
+    Fix documentation of hb_subset_flags_t defaults
+    
+    HB_SUBSET_FLAGS_DEFAULT is 0, and hb_subset_input_create_or_fail
+    initializes its flags to HB_SUBSET_FLAGS_DEFAULT, so currently all flags
+    are set to false by default. It has been decided that future flags will
+    also be false by default for simplicity (using NO_ in the name if
+    needed). Correct and simplify the documentation for hb_subset_flags_t to
+    reflect this.
+
+ src/hb-subset.h | 15 ++++++---------
+ 1 file changed, 6 insertions(+), 9 deletions(-)
+
+commit 7d2e9164ab6681bfd9fa0946a1150905a1aba283
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sat Aug 7 13:38:19 2021 -0600
+
+    [util] Move text options into text_options_t
+    
+    Remove now empty options.cc.
+
+ util/Makefile.sources                |   8 +--
+ util/hb-ot-shape-closure.cc          |   1 +
+ util/hb-shape.cc                     |   4 +-
+ util/hb-subset.cc                    |   1 +
+ util/hb-view.cc                      |   2 +
+ util/meson.build                     |   4 --
+ util/options.hh                      |  43 -------------
+ util/{options.cc => text-options.hh} | 120 ++++++++++++++++++++---------------
+ 8 files changed, 81 insertions(+), 102 deletions(-)
+
+commit 93bc62e9b24404d2af4042c4a9aa450af79be8dd
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sat Aug 7 13:13:58 2021 -0600
+
+    [util] Move output options into output-options.hh
+
+ util/Makefile.sources  |  15 +++---
+ util/hb-shape.cc       |   1 +
+ util/hb-subset.cc      |   1 +
+ util/helper-cairo.hh   |   4 +-
+ util/options.cc        |  50 --------------------
+ util/options.hh        |  40 ----------------
+ util/output-options.hh | 123 +++++++++++++++++++++++++++++++++++++++++++++++++
+ util/view-cairo.hh     |   1 +
+ 8 files changed, 137 insertions(+), 98 deletions(-)
+
+commit af9d2495dc68c4a64bab87a7cc0a60927d81fa53
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sat Aug 7 12:29:52 2021 -0600
+
+    [util] Use inheritance for output_options_t
+
+ util/hb-shape.cc   | 41 ++++++++++++++++++++---------------------
+ util/hb-subset.cc  |  9 +++------
+ util/view-cairo.hh | 12 ++++++------
+ 3 files changed, 29 insertions(+), 33 deletions(-)
+
+commit 9db0fd4821ab721bbf558e999044384726ba650e
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sat Aug 7 12:22:17 2021 -0600
+
+    [util] Don't show --output-format if no supported formats provided
+
+ util/options.cc | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+commit 5545eea7e575318d53aa42acbb09cf39e4b82134
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sat Aug 7 11:04:46 2021 -0600
+
+    [util] Remove main_font_text_t class, use bare function
+
+ util/hb-ot-shape-closure.cc |  3 +-
+ util/hb-shape.cc            |  8 ++---
+ util/hb-subset.cc           |  8 ++---
+ util/hb-view.cc             |  3 +-
+ util/main-font-text.hh      | 72 +++++++++++++++++----------------------------
+ util/options.hh             | 15 ++++++++++
+ 6 files changed, 50 insertions(+), 59 deletions(-)
+
+commit 58c223357b340ceb64af337b481fd4786152881e
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 23:45:59 2021 -0600
+
+    [util] Move face/font options into face/font-options.hh
+
+ util/Makefile.sources       |   7 +
+ util/face-options.hh        | 135 +++++++++++++++++++
+ util/font-options.hh        | 306 ++++++++++++++++++++++++++++++++++++++++++
+ util/hb-ot-shape-closure.cc |   3 +-
+ util/hb-shape.cc            |   2 +-
+ util/hb-subset.cc           |   7 +-
+ util/hb-view.cc             |   2 +-
+ util/main-font-text.hh      |   2 +-
+ util/options.cc             | 318 +-------------------------------------------
+ util/options.hh             |  63 ---------
+ util/shape-consumer.hh      |   1 +
+ 11 files changed, 457 insertions(+), 389 deletions(-)
+
+commit 6edd50ae7fa550c909fa32339537f6105002a07d
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 23:36:45 2021 -0600
+
+    [util] Move option_parser_t code into options.hh
+
+ util/options.cc | 83 --------------------------------------------------------
+ util/options.hh | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 83 insertions(+), 84 deletions(-)
+
+commit 798bb89c969288704c1cc534192eac9e6339d66a
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 23:29:29 2021 -0600
+
+    [util] Move shape format options into shape-format.hh
+
+ util/Makefile.sources |   1 +
+ util/hb-shape.cc      |   5 +-
+ util/hb-subset.cc     |   2 +-
+ util/hb-view.cc       |   2 +-
+ util/options.cc       | 135 -------------------------------
+ util/options.hh       |  42 ----------
+ util/shape-format.hh  | 214 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 7 files changed, 220 insertions(+), 181 deletions(-)
+
+commit c3599fded73882d5234a995b7f253baf0b4fa1e4
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 23:24:28 2021 -0600
+
+    [util] Move shape options into shape-options.hh
+
+ util/Makefile.sources       |   2 +
+ util/hb-ot-shape-closure.cc |   1 +
+ util/main-font-text.hh      |   1 -
+ util/options.cc             | 179 +---------------
+ util/options.hh             | 286 --------------------------
+ util/shape-consumer.hh      |   3 +-
+ util/shape-options.hh       | 490 ++++++++++++++++++++++++++++++++++++++++++++
+ 7 files changed, 496 insertions(+), 466 deletions(-)
+
+commit cfb2d6ad9e34f4b61ea3fedd27ac448a47ac4c09
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 23:14:30 2021 -0600
+
+    [util] Move view options into view-options.hh
+
+ util/Makefile.sources |  15 +++---
+ util/options.cc       |  64 --------------------------
+ util/options.hh       |  25 ----------
+ util/view-cairo.hh    |   4 +-
+ util/view-options.hh  | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 132 insertions(+), 99 deletions(-)
+
+commit 167f58a2ca1db5649a0724f88e033c28a3bbb844
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 23:03:30 2021 -0600
+
+    [util] Move subset options into subset-options.hh
+
+ util/Makefile.sources                         |  2 +-
+ util/hb-subset.cc                             |  3 +-
+ util/meson.build                              |  1 -
+ util/options.hh                               | 40 ------------------------
+ util/{options-subset.cc => subset-options.hh} | 45 +++++++++++++++++++++++++++
+ 5 files changed, 48 insertions(+), 43 deletions(-)
+
+commit 370e961faf28291def7f011f694bef1266adda99
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 22:59:50 2021 -0600
+
+    [util/hb-subset] Use hb-subset.h public API instead of poking inside
+    
+    Oops.
+
+ util/options-subset.cc | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+commit 4e97678ebb77be96765942051d8bb03ab8f74f1c
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 22:53:44 2021 -0600
+
+    [util] Use inheritence to embed inherent options of objects
+
+ util/hb-subset.cc      |  9 ++++-----
+ util/shape-consumer.hh | 15 +++++++--------
+ util/view-cairo.hh     | 33 ++++++++++++++++-----------------
+ 3 files changed, 27 insertions(+), 30 deletions(-)
+
+commit 06d661803c79e18bad3e943894a8a7bcba1352e8
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 19:20:47 2021 -0600
+
+    [util] Fix compiler error
+    
+    ../util/options.cc:588:3: error: narrowing conversion of ‘font_size_flags’ from ‘unsigned int’ to ‘gint {aka int}’ inside { } [-Werror=narrowing]
+
+ util/options.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit c5337c43e932f23c18380995fa1ec74e2d8eaeb7
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 19:19:50 2021 -0600
+
+    [util] Fold helper-cairo.cc into helper-cairo.hh
+
+ util/Makefile.sources |   1 -
+ util/helper-cairo.cc  | 668 --------------------------------------------------
+ util/helper-cairo.hh  | 636 ++++++++++++++++++++++++++++++++++++++++++++++-
+ util/meson.build      |   1 -
+ 4 files changed, 624 insertions(+), 682 deletions(-)
+
+commit c329ce1000ee202700582396b0a47918d815e22e
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 19:13:21 2021 -0600
+
+    [util] Also hide ppem settings in hb-ot-shape-closure
+    
+    Leaving ptem, as that can in theory change shape closure if we apply it
+    to optical-size axis (we currently don't).
+
+ util/options.cc | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+commit c40e00796c6ae900a9e540ad9e345a4514fdc4eb
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 19:04:27 2021 -0600
+
+    [util] Fold helper-cairo-ansi.cc into helper-cairo-ansi.hh
+
+ util/Makefile.sources     |   1 -
+ util/helper-cairo-ansi.cc | 202 ----------------------------------------------
+ util/helper-cairo-ansi.hh | 174 ++++++++++++++++++++++++++++++++++++++-
+ util/meson.build          |   1 -
+ 4 files changed, 172 insertions(+), 206 deletions(-)
+
+commit 4fe43ccbf172d633c17ea4d5c308310d4597062f
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 19:00:45 2021 -0600
+
+    [util] Fold ansi-print.cc into ansi-print.hh
+
+ util/Makefile.sources |   1 -
+ util/ansi-print.cc    | 427 --------------------------------------------------
+ util/ansi-print.hh    | 391 ++++++++++++++++++++++++++++++++++++++++++++-
+ util/meson.build      |   1 -
+ 4 files changed, 389 insertions(+), 431 deletions(-)
+
+commit b1db0e4a0f2c1aa1f64176b0da9ca4ea5585d0ee
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 18:55:40 2021 -0600
+
+    [util] Fold view-cairo.cc into view-cairo.hh
+
+ util/Makefile.sources |   1 -
+ util/meson.build      |   1 -
+ util/view-cairo.cc    | 140 --------------------------------------------------
+ util/view-cairo.hh    | 110 +++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 110 insertions(+), 142 deletions(-)
+
+commit 6500f68f1fd0614c7165fc9bea6d37a3cf17a8b4
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 18:46:31 2021 -0600
+
+    [util] Change hb-subset to use face_options_t instead of font_options_t
+
+ util/hb-subset.cc      | 9 +++++----
+ util/main-font-text.hh | 3 +--
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 869e20e09f96ba6cddc5db7e9aa6fde29d84ed78
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Aug 6 18:09:31 2021 -0600
+
+    [util] separate face options from font options
+
+ util/helper-cairo.cc |  2 +-
+ util/options.cc      | 87 +++++++++++++++++++++++++++++++++-------------------
+ util/options.hh      | 48 +++++++++++++++++------------
+ 3 files changed, 85 insertions(+), 52 deletions(-)
+
+commit b3a2f2bfcf483b525c55de211e3c644dba860e51
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 14:03:48 2021 -0600
+
+    [util/main-font-text] Simplify
+
+ util/main-font-text.hh | 21 ++++++++-------------
+ 1 file changed, 8 insertions(+), 13 deletions(-)
+
+commit 71440dbd90d77b2af35c69fac90e9342e9a9e439
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 13:48:59 2021 -0600
+
+    [util] Move font-size and upem to be extern variables
+
+ util/hb-ot-shape-closure.cc |  5 ++++-
+ util/hb-shape.cc            |  5 ++++-
+ util/hb-subset.cc           |  5 ++++-
+ util/hb-view.cc             |  6 +++---
+ util/main-font-text.hh      |  6 +-----
+ util/options.cc             |  6 +++---
+ util/options.hh             | 17 ++++++-----------
+ 7 files changed, 25 insertions(+), 25 deletions(-)
+
+commit fc0339eef0fa302f74ca9a3b90430288dac29df3
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 13:35:46 2021 -0600
+
+    [util] Simplify shape-consumer by removing buffer arg
+
+ util/hb-ot-shape-closure.cc | 5 ++---
+ util/hb-subset.cc           | 3 +--
+ util/main-font-text.hh      | 4 +---
+ util/shape-consumer.hh      | 5 ++---
+ 4 files changed, 6 insertions(+), 11 deletions(-)
+
+commit e014c6fa2d4b1cb341d065d582d1dd995c04e5b5
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 13:24:59 2021 -0600
+
+    [util/main-font-text] Move eol from template arg to main() arg
+
+ util/hb-shape.cc       | 11 +++++------
+ util/hb-subset.cc      | 11 +++++------
+ util/main-font-text.hh |  4 ++--
+ 3 files changed, 12 insertions(+), 14 deletions(-)
+
+commit 463411a1de4b9ca2e267a1ce0f9667da17a73d1e
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 11:44:35 2021 -0600
+
+    [util] Remove unused option_group_t
+
+ util/hb-ot-shape-closure.cc |  2 +-
+ util/options.hh             | 31 +++++++++++++------------------
+ 2 files changed, 14 insertions(+), 19 deletions(-)
+
+commit 8588173ee6ace5926e090120fbcad85e5be1fab5
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 11:43:25 2021 -0600
+
+    [util] Rework post_parse() handling
+
+ util/options.hh | 16 ++++++++++------
+ 1 file changed, 10 insertions(+), 6 deletions(-)
+
+commit 3362b48f5a5eee9fe6378787ffce3304b341e474
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 11:30:39 2021 -0600
+
+    [util] Templatize add_group logic
+
+ util/options.cc | 25 -------------------------
+ util/options.hh | 22 +++++++++++++++++++++-
+ 2 files changed, 21 insertions(+), 26 deletions(-)
+
+commit fe90fbeba3b9ddca20e1ecc0feb99ddb8132f961
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 11:22:20 2021 -0600
+
+    [util] Remove unused pre_parse callback logic
+
+ util/options.cc | 13 +------------
+ util/options.hh |  1 -
+ 2 files changed, 1 insertion(+), 13 deletions(-)
+
+commit 09e4d7dd306ceb58064b92ec3cfc3ad7900a7802
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 11:21:20 2021 -0600
+
+    [util] Simplify output_options_t
+
+ util/hb-ot-shape-closure.cc |  2 +-
+ util/hb-shape.cc            |  9 +++------
+ util/options.cc             |  3 ++-
+ util/options.hh             | 21 ++++++++-------------
+ util/view-cairo.hh          |  5 +----
+ 5 files changed, 15 insertions(+), 25 deletions(-)
+
+commit e109f9a6f9954f55a7ca2f336aa41a0235dca37b
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 11:05:51 2021 -0600
+
+    [util] Collect cmdline arg options outside of constructor
+
+ util/hb-ot-shape-closure.cc |  8 ++------
+ util/hb-shape.cc            | 11 ++++++++---
+ util/hb-subset.cc           | 13 +++++++------
+ util/main-font-text.hh      | 16 +++++++++++-----
+ util/options.hh             | 37 ++++++-------------------------------
+ util/shape-consumer.hh      |  9 +++++----
+ util/view-cairo.hh          | 11 ++++++++---
+ 7 files changed, 47 insertions(+), 58 deletions(-)
+
+commit e57dd6688937072ac1b5bf2cd45c8fb9e867abe1
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 10:33:31 2021 -0600
+
+    [util] Initialize struct members inline
+
+ util/hb-ot-shape-closure.cc |  13 ++-
+ util/hb-shape.cc            |  20 ++---
+ util/hb-subset.cc           |  10 ++-
+ util/options.hh             | 214 +++++++++++++++-----------------------------
+ util/shape-consumer.hh      |  14 ++-
+ util/view-cairo.hh          |  20 ++---
+ 6 files changed, 110 insertions(+), 181 deletions(-)
+
+commit 21f1054d4718213c5b4e4abba7fe74979e93febe
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 4 20:23:48 2021 -0600
+
+    [util/hb-subset] Keep face around instead of font
+
+ util/hb-subset.cc | 15 +++++++--------
+ 1 file changed, 7 insertions(+), 8 deletions(-)
+
+commit 8c0c217b5a1ded98ce62a3c7394942bcb3b95396
+Author: Garret Rieger <grieger at google.com>
+Date:   Fri Aug 6 10:45:38 2021 -0700
+
+    [subset] fail reference blob in face builder if allocation for table sorting fails.
+    
+    Fixes https://oss-fuzz.com/testcase-detail/5041767803125760
+
+ src/hb-face.cc                                             |   6 ++++++
+ ...zz-testcase-minimized-hb-subset-fuzzer-5041767803125760 | Bin 0 -> 29 bytes
+ 2 files changed, 6 insertions(+)
+
+commit e5bfd49ae5bc711a40e3fac9e3b8230f251e5d67
+Author: Garret Rieger <grieger at google.com>
+Date:   Thu Aug 5 14:03:25 2021 -0700
+
+    [subset] don't allow table adds for tag == -1.
+
+ src/hb-face.cc | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 222b74f08f8cc4a5e1b7c1582b28db5588ea11da
+Author: Garret Rieger <grieger at google.com>
+Date:   Thu Aug 5 11:39:26 2021 -0700
+
+    [subset] don't leak memory for duplicate tables.
+
+ src/hb-face.cc | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit f7a9c3ea9324caf83eaacd65a7493470d09198a3
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 13:05:07 2021 -0600
+
+    [open-file] Use hb_is_source_of instead of hb_is_iterator
+
+ src/hb-open-file.hh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit fa90cb8a3128d617d8a71b73085eb05af105f62c
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 12:31:06 2021 -0600
+
+    Whitespace again
+
+ src/hb-open-file.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a110a47eb5782cf35b6b042fd3c7565a204b6ff7
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 12:28:39 2021 -0600
+
+    Whitespace
+
+ src/hb-open-file.hh | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+commit 2cb8c928d75ae4c0ac491be60e65be4a77fe9705
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 12:27:22 2021 -0600
+
+    [face] Let hashmap derive invalid key/value types
+    
+    Works now with the previous two fixes.
+
+ src/hb-face.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 95c888e192909b18de6f38da8b6e4d8294416703
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 12:27:02 2021 -0600
+
+    [meta] Define hb_int_min for pointer types as nullptr
+
+ src/hb-meta.hh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 407a112e7b743e75053ed2278416cb1bd5c91fac
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 12:23:53 2021 -0600
+
+    [meta] Make hb_is_signed/hb_is_unsigned work on all types
+    
+    They were failing if type was non-scalar, eg. pointer.
+
+ src/hb-meta.hh | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+commit baf2166a24554ba26ac88f800fc6f124a0adf706
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 12:07:25 2021 -0600
+
+    [meta] Use hb_true_type/hb_false_type more
+
+ src/hb-meta.hh | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+commit 74ad5ddcd759140a1a35d38288d0e615538b66ca
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 11:51:54 2021 -0600
+
+    [face] Minor cleaning of previous commit
+
+ src/hb-face.cc | 17 ++++++++---------
+ 1 file changed, 8 insertions(+), 9 deletions(-)
+
+commit c2ee1fdd404e980303dd92882b1df816727a4b65
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Aug 4 16:42:49 2021 -0700
+
+    [subset] remove unsed table_entry struct.
+
+ src/hb-face.cc                                     |  48 ++++++++-------------
+ src/hb-open-file.hh                                |   5 +--
+ .../Comfortaa-Regular-new.default.61,62,63.ttf     | Bin 7060 -> 7060 bytes
+ .../basics/Comfortaa-Regular-new.default.61,63.ttf | Bin 6692 -> 6692 bytes
+ .../basics/Comfortaa-Regular-new.default.61.ttf    | Bin 6328 -> 6328 bytes
+ .../basics/Comfortaa-Regular-new.default.62.ttf    | Bin 6200 -> 6200 bytes
+ .../basics/Comfortaa-Regular-new.default.63.ttf    | Bin 6256 -> 6256 bytes
+ ...aa-Regular-new.default.retain-all-codepoint.ttf | Bin 222756 -> 222756 bytes
+ ...Regular-new.drop-hints-retain-gids.61,62,63.ttf | Bin 4608 -> 4608 bytes
+ ...aa-Regular-new.drop-hints-retain-gids.61,63.ttf | Bin 4312 -> 4312 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.61.ttf | Bin 3724 -> 3724 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.62.ttf | Bin 3900 -> 3900 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.63.ttf | Bin 3972 -> 3972 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 191632 -> 191632 bytes
+ .../Comfortaa-Regular-new.drop-hints.61,62,63.ttf  | Bin 2600 -> 2600 bytes
+ .../Comfortaa-Regular-new.drop-hints.61,63.ttf     | Bin 2296 -> 2296 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.61.ttf | Bin 1976 -> 1976 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.62.ttf | Bin 1900 -> 1900 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.63.ttf | Bin 1968 -> 1968 bytes
+ ...Regular-new.drop-hints.retain-all-codepoint.ttf | Bin 191584 -> 191584 bytes
+ .../basics/Comfortaa-Regular-new.gids.61,62,63.ttf | Bin 7988 -> 7988 bytes
+ .../basics/Comfortaa-Regular-new.gids.61,63.ttf    | Bin 7628 -> 7628 bytes
+ .../basics/Comfortaa-Regular-new.gids.61.ttf       | Bin 7256 -> 7256 bytes
+ .../basics/Comfortaa-Regular-new.gids.62.ttf       | Bin 7184 -> 7184 bytes
+ .../basics/Comfortaa-Regular-new.gids.63.ttf       | Bin 7180 -> 7180 bytes
+ ...ortaa-Regular-new.gids.retain-all-codepoint.ttf | Bin 222756 -> 222756 bytes
+ .../Comfortaa-Regular-new.glyph-names.61,62,63.ttf | Bin 7072 -> 7072 bytes
+ .../Comfortaa-Regular-new.glyph-names.61,63.ttf    | Bin 6700 -> 6700 bytes
+ .../Comfortaa-Regular-new.glyph-names.61.ttf       | Bin 6336 -> 6336 bytes
+ .../Comfortaa-Regular-new.glyph-names.62.ttf       | Bin 6208 -> 6208 bytes
+ .../Comfortaa-Regular-new.glyph-names.63.ttf       | Bin 6264 -> 6264 bytes
+ ...egular-new.glyph-names.retain-all-codepoint.ttf | Bin 229748 -> 229748 bytes
+ ...gular-new.keep-all-layout-features.61,62,63.ttf | Bin 7508 -> 7508 bytes
+ ...-Regular-new.keep-all-layout-features.61,63.ttf | Bin 7144 -> 7144 bytes
+ ...taa-Regular-new.keep-all-layout-features.61.ttf | Bin 6776 -> 6776 bytes
+ ...taa-Regular-new.keep-all-layout-features.62.ttf | Bin 6200 -> 6200 bytes
+ ...taa-Regular-new.keep-all-layout-features.63.ttf | Bin 6256 -> 6256 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttf | Bin 223452 -> 223452 bytes
+ ...fortaa-Regular-new.layout-features.61,62,63.ttf | Bin 7060 -> 7060 bytes
+ ...Comfortaa-Regular-new.layout-features.61,63.ttf | Bin 6692 -> 6692 bytes
+ .../Comfortaa-Regular-new.layout-features.61.ttf   | Bin 6328 -> 6328 bytes
+ .../Comfortaa-Regular-new.layout-features.62.ttf   | Bin 6200 -> 6200 bytes
+ .../Comfortaa-Regular-new.layout-features.63.ttf   | Bin 6256 -> 6256 bytes
+ ...ar-new.layout-features.retain-all-codepoint.ttf | Bin 220948 -> 220948 bytes
+ .../Comfortaa-Regular-new.name-ids.61,62,63.ttf    | Bin 6800 -> 6800 bytes
+ .../Comfortaa-Regular-new.name-ids.61,63.ttf       | Bin 6432 -> 6432 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.61.ttf   | Bin 6068 -> 6068 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.62.ttf   | Bin 5940 -> 5940 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.63.ttf   | Bin 5996 -> 5996 bytes
+ ...a-Regular-new.name-ids.retain-all-codepoint.ttf | Bin 222496 -> 222496 bytes
+ ...mfortaa-Regular-new.name-languages.61,62,63.ttf | Bin 7060 -> 7060 bytes
+ .../Comfortaa-Regular-new.name-languages.61,63.ttf | Bin 6692 -> 6692 bytes
+ .../Comfortaa-Regular-new.name-languages.61.ttf    | Bin 6328 -> 6328 bytes
+ .../Comfortaa-Regular-new.name-languages.62.ttf    | Bin 6200 -> 6200 bytes
+ .../Comfortaa-Regular-new.name-languages.63.ttf    | Bin 6256 -> 6256 bytes
+ ...lar-new.name-languages.retain-all-codepoint.ttf | Bin 222756 -> 222756 bytes
+ .../Comfortaa-Regular-new.name-legacy.61,62,63.ttf | Bin 7060 -> 7060 bytes
+ .../Comfortaa-Regular-new.name-legacy.61,63.ttf    | Bin 6692 -> 6692 bytes
+ .../Comfortaa-Regular-new.name-legacy.61.ttf       | Bin 6328 -> 6328 bytes
+ .../Comfortaa-Regular-new.name-legacy.62.ttf       | Bin 6200 -> 6200 bytes
+ .../Comfortaa-Regular-new.name-legacy.63.ttf       | Bin 6256 -> 6256 bytes
+ ...egular-new.name-legacy.retain-all-codepoint.ttf | Bin 222756 -> 222756 bytes
+ ...egular-new.no-prune-unicode-ranges.61,62,63.ttf | Bin 7060 -> 7060 bytes
+ ...a-Regular-new.no-prune-unicode-ranges.61,63.ttf | Bin 6692 -> 6692 bytes
+ ...rtaa-Regular-new.no-prune-unicode-ranges.61.ttf | Bin 6328 -> 6328 bytes
+ ...rtaa-Regular-new.no-prune-unicode-ranges.62.ttf | Bin 6200 -> 6200 bytes
+ ...rtaa-Regular-new.no-prune-unicode-ranges.63.ttf | Bin 6256 -> 6256 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf | Bin 222756 -> 222756 bytes
+ ...mfortaa-Regular-new.notdef-outline.61,62,63.ttf | Bin 7652 -> 7652 bytes
+ .../Comfortaa-Regular-new.notdef-outline.61,63.ttf | Bin 7284 -> 7284 bytes
+ .../Comfortaa-Regular-new.notdef-outline.61.ttf    | Bin 6920 -> 6920 bytes
+ .../Comfortaa-Regular-new.notdef-outline.62.ttf    | Bin 6796 -> 6796 bytes
+ .../Comfortaa-Regular-new.notdef-outline.63.ttf    | Bin 6844 -> 6844 bytes
+ ...lar-new.notdef-outline.retain-all-codepoint.ttf | Bin 223352 -> 223352 bytes
+ .../Comfortaa-Regular-new.retain-gids.61,62,63.ttf | Bin 9068 -> 9068 bytes
+ .../Comfortaa-Regular-new.retain-gids.61,63.ttf    | Bin 8708 -> 8708 bytes
+ .../Comfortaa-Regular-new.retain-gids.61.ttf       | Bin 8076 -> 8076 bytes
+ .../Comfortaa-Regular-new.retain-gids.62.ttf       | Bin 8200 -> 8200 bytes
+ .../Comfortaa-Regular-new.retain-gids.63.ttf       | Bin 8260 -> 8260 bytes
+ ...egular-new.retain-gids.retain-all-codepoint.ttf | Bin 222804 -> 222804 bytes
+ ...numMyeongjo-Regular-subset.default.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.default.61,63.ttf | Bin 3580 -> 3580 bytes
+ .../NanumMyeongjo-Regular-subset.default.61.ttf    | Bin 3156 -> 3156 bytes
+ .../NanumMyeongjo-Regular-subset.default.62.ttf    | Bin 3180 -> 3180 bytes
+ .../NanumMyeongjo-Regular-subset.default.63.ttf    | Bin 3048 -> 3048 bytes
+ ...Regular-subset.default.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...ular-subset.drop-hints-retain-gids.61,62,63.ttf | Bin 1452 -> 1452 bytes
+ ...Regular-subset.drop-hints-retain-gids.61,63.ttf | Bin 1284 -> 1284 bytes
+ ...jo-Regular-subset.drop-hints-retain-gids.61.ttf | Bin 1128 -> 1128 bytes
+ ...jo-Regular-subset.drop-hints-retain-gids.62.ttf | Bin 1144 -> 1144 bytes
+ ...jo-Regular-subset.drop-hints-retain-gids.63.ttf | Bin 1116 -> 1116 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 3536 -> 3536 bytes
+ ...Myeongjo-Regular-subset.drop-hints.61,62,63.ttf | Bin 1452 -> 1452 bytes
+ ...numMyeongjo-Regular-subset.drop-hints.61,63.ttf | Bin 1276 -> 1276 bytes
+ .../NanumMyeongjo-Regular-subset.drop-hints.61.ttf | Bin 1128 -> 1128 bytes
+ .../NanumMyeongjo-Regular-subset.drop-hints.62.ttf | Bin 1140 -> 1140 bytes
+ .../NanumMyeongjo-Regular-subset.drop-hints.63.ttf | Bin 1104 -> 1104 bytes
+ ...ular-subset.drop-hints.retain-all-codepoint.ttf | Bin 3536 -> 3536 bytes
+ .../NanumMyeongjo-Regular-subset.gids.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.61,63.ttf    | Bin 4128 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.61.ttf       | Bin 4128 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.62.ttf       | Bin 4128 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.63.ttf       | Bin 4128 -> 4128 bytes
+ ...jo-Regular-subset.gids.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...yeongjo-Regular-subset.glyph-names.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...umMyeongjo-Regular-subset.glyph-names.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.61.ttf | Bin 3156 -> 3156 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.62.ttf | Bin 3180 -> 3180 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.63.ttf | Bin 3048 -> 3048 bytes
+ ...lar-subset.glyph-names.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...ar-subset.keep-all-layout-features.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...gular-subset.keep-all-layout-features.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...-Regular-subset.keep-all-layout-features.61.ttf | Bin 3156 -> 3156 bytes
+ ...-Regular-subset.keep-all-layout-features.62.ttf | Bin 3180 -> 3180 bytes
+ ...-Regular-subset.keep-all-layout-features.63.ttf | Bin 3048 -> 3048 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...gjo-Regular-subset.layout-features.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...eongjo-Regular-subset.layout-features.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...mMyeongjo-Regular-subset.layout-features.61.ttf | Bin 3156 -> 3156 bytes
+ ...mMyeongjo-Regular-subset.layout-features.62.ttf | Bin 3180 -> 3180 bytes
+ ...mMyeongjo-Regular-subset.layout-features.63.ttf | Bin 3048 -> 3048 bytes
+ ...subset.layout-features.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...umMyeongjo-Regular-subset.name-ids.61,62,63.ttf | Bin 3924 -> 3924 bytes
+ ...NanumMyeongjo-Regular-subset.name-ids.61,63.ttf | Bin 3376 -> 3376 bytes
+ .../NanumMyeongjo-Regular-subset.name-ids.61.ttf   | Bin 2952 -> 2952 bytes
+ .../NanumMyeongjo-Regular-subset.name-ids.62.ttf   | Bin 2976 -> 2976 bytes
+ .../NanumMyeongjo-Regular-subset.name-ids.63.ttf   | Bin 2844 -> 2844 bytes
+ ...egular-subset.name-ids.retain-all-codepoint.ttf | Bin 9320 -> 9320 bytes
+ ...ngjo-Regular-subset.name-languages.61,62,63.ttf | Bin 4172 -> 4172 bytes
+ ...yeongjo-Regular-subset.name-languages.61,63.ttf | Bin 3624 -> 3624 bytes
+ ...umMyeongjo-Regular-subset.name-languages.61.ttf | Bin 3200 -> 3200 bytes
+ ...umMyeongjo-Regular-subset.name-languages.62.ttf | Bin 3224 -> 3224 bytes
+ ...umMyeongjo-Regular-subset.name-languages.63.ttf | Bin 3092 -> 3092 bytes
+ ...-subset.name-languages.retain-all-codepoint.ttf | Bin 9568 -> 9568 bytes
+ ...yeongjo-Regular-subset.name-legacy.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...umMyeongjo-Regular-subset.name-legacy.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...NanumMyeongjo-Regular-subset.name-legacy.61.ttf | Bin 3156 -> 3156 bytes
+ ...NanumMyeongjo-Regular-subset.name-legacy.62.ttf | Bin 3180 -> 3180 bytes
+ ...NanumMyeongjo-Regular-subset.name-legacy.63.ttf | Bin 3048 -> 3048 bytes
+ ...lar-subset.name-legacy.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...lar-subset.no-prune-unicode-ranges.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...egular-subset.no-prune-unicode-ranges.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...o-Regular-subset.no-prune-unicode-ranges.61.ttf | Bin 3156 -> 3156 bytes
+ ...o-Regular-subset.no-prune-unicode-ranges.62.ttf | Bin 3180 -> 3180 bytes
+ ...o-Regular-subset.no-prune-unicode-ranges.63.ttf | Bin 3048 -> 3048 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...ngjo-Regular-subset.notdef-outline.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...yeongjo-Regular-subset.notdef-outline.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.61.ttf | Bin 3156 -> 3156 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.62.ttf | Bin 3180 -> 3180 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.63.ttf | Bin 3048 -> 3048 bytes
+ ...-subset.notdef-outline.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...yeongjo-Regular-subset.retain-gids.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...umMyeongjo-Regular-subset.retain-gids.61,63.ttf | Bin 3588 -> 3588 bytes
+ ...NanumMyeongjo-Regular-subset.retain-gids.61.ttf | Bin 3156 -> 3156 bytes
+ ...NanumMyeongjo-Regular-subset.retain-gids.62.ttf | Bin 3184 -> 3184 bytes
+ ...NanumMyeongjo-Regular-subset.retain-gids.63.ttf | Bin 3060 -> 3060 bytes
+ ...lar-subset.retain-gids.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ .../basics/Roboto-Regular.abc.default.61,62,63.ttf | Bin 2412 -> 2412 bytes
+ .../basics/Roboto-Regular.abc.default.61,63.ttf    | Bin 2208 -> 2208 bytes
+ .../basics/Roboto-Regular.abc.default.61.ttf       | Bin 2008 -> 2008 bytes
+ .../basics/Roboto-Regular.abc.default.62.ttf       | Bin 1876 -> 1876 bytes
+ .../basics/Roboto-Regular.abc.default.63.ttf       | Bin 1932 -> 1932 bytes
+ ...to-Regular.abc.default.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ ...Regular.abc.drop-hints-retain-gids.61,62,63.ttf | Bin 1152 -> 1152 bytes
+ ...to-Regular.abc.drop-hints-retain-gids.61,63.ttf | Bin 1072 -> 1072 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.61.ttf | Bin 944 -> 944 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.62.ttf | Bin 840 -> 840 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.63.ttf | Bin 928 -> 928 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 1152 -> 1152 bytes
+ .../Roboto-Regular.abc.drop-hints.61,62,63.ttf     | Bin 1152 -> 1152 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.61,63.ttf | Bin 1056 -> 1056 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.61.ttf    | Bin 944 -> 944 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.62.ttf    | Bin 836 -> 836 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.63.ttf    | Bin 916 -> 916 bytes
+ ...Regular.abc.drop-hints.retain-all-codepoint.ttf | Bin 1152 -> 1152 bytes
+ .../basics/Roboto-Regular.abc.gids.61,62,63.ttf    | Bin 2412 -> 2412 bytes
+ .../basics/Roboto-Regular.abc.gids.61,63.ttf       | Bin 2412 -> 2412 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.61.ttf | Bin 2412 -> 2412 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.62.ttf | Bin 2412 -> 2412 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.63.ttf | Bin 2412 -> 2412 bytes
+ ...oboto-Regular.abc.gids.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.glyph-names.61,62,63.ttf    | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.glyph-names.61,63.ttf       | Bin 2208 -> 2208 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.61.ttf   | Bin 2008 -> 2008 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.62.ttf   | Bin 1876 -> 1876 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.63.ttf   | Bin 1932 -> 1932 bytes
+ ...egular.abc.glyph-names.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ ...gular.abc.keep-all-layout-features.61,62,63.ttf | Bin 2412 -> 2412 bytes
+ ...-Regular.abc.keep-all-layout-features.61,63.ttf | Bin 2208 -> 2208 bytes
+ ...oto-Regular.abc.keep-all-layout-features.61.ttf | Bin 2008 -> 2008 bytes
+ ...oto-Regular.abc.keep-all-layout-features.62.ttf | Bin 1876 -> 1876 bytes
+ ...oto-Regular.abc.keep-all-layout-features.63.ttf | Bin 1932 -> 1932 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ ...Roboto-Regular.abc.layout-features.61,62,63.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.layout-features.61,63.ttf   | Bin 2208 -> 2208 bytes
+ .../Roboto-Regular.abc.layout-features.61.ttf      | Bin 2008 -> 2008 bytes
+ .../Roboto-Regular.abc.layout-features.62.ttf      | Bin 1876 -> 1876 bytes
+ .../Roboto-Regular.abc.layout-features.63.ttf      | Bin 1932 -> 1932 bytes
+ ...ar.abc.layout-features.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.name-ids.61,62,63.ttf       | Bin 2412 -> 2412 bytes
+ .../basics/Roboto-Regular.abc.name-ids.61,63.ttf   | Bin 2208 -> 2208 bytes
+ .../basics/Roboto-Regular.abc.name-ids.61.ttf      | Bin 2008 -> 2008 bytes
+ .../basics/Roboto-Regular.abc.name-ids.62.ttf      | Bin 1876 -> 1876 bytes
+ .../basics/Roboto-Regular.abc.name-ids.63.ttf      | Bin 1932 -> 1932 bytes
+ ...o-Regular.abc.name-ids.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.name-languages.61,62,63.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.name-languages.61,63.ttf    | Bin 2208 -> 2208 bytes
+ .../Roboto-Regular.abc.name-languages.61.ttf       | Bin 2008 -> 2008 bytes
+ .../Roboto-Regular.abc.name-languages.62.ttf       | Bin 1876 -> 1876 bytes
+ .../Roboto-Regular.abc.name-languages.63.ttf       | Bin 1932 -> 1932 bytes
+ ...lar.abc.name-languages.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.name-legacy.61,62,63.ttf    | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.name-legacy.61,63.ttf       | Bin 2208 -> 2208 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.61.ttf   | Bin 2008 -> 2008 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.62.ttf   | Bin 1876 -> 1876 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.63.ttf   | Bin 1932 -> 1932 bytes
+ ...egular.abc.name-legacy.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ ...egular.abc.no-prune-unicode-ranges.61,62,63.ttf | Bin 2412 -> 2412 bytes
+ ...o-Regular.abc.no-prune-unicode-ranges.61,63.ttf | Bin 2208 -> 2208 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.61.ttf | Bin 2008 -> 2008 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.62.ttf | Bin 1876 -> 1876 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.63.ttf | Bin 1932 -> 1932 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.notdef-outline.61,62,63.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.notdef-outline.61,63.ttf    | Bin 2208 -> 2208 bytes
+ .../Roboto-Regular.abc.notdef-outline.61.ttf       | Bin 2008 -> 2008 bytes
+ .../Roboto-Regular.abc.notdef-outline.62.ttf       | Bin 1876 -> 1876 bytes
+ .../Roboto-Regular.abc.notdef-outline.63.ttf       | Bin 1932 -> 1932 bytes
+ ...lar.abc.notdef-outline.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.retain-gids.61,62,63.ttf    | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.retain-gids.61,63.ttf       | Bin 2224 -> 2224 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.61.ttf   | Bin 2008 -> 2008 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.62.ttf   | Bin 1884 -> 1884 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.63.ttf   | Bin 1948 -> 1948 bytes
+ ...egular.abc.retain-gids.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ .../cbdt/NotoColorEmoji.subset.default.2049.ttf    | Bin 3112 -> 3112 bytes
+ .../cbdt/NotoColorEmoji.subset.default.38,2049.ttf | Bin 4084 -> 4084 bytes
+ .../cbdt/NotoColorEmoji.subset.default.38,20E3.ttf | Bin 3568 -> 3568 bytes
+ ...rEmoji.subset.default.38,39,AE,2049,38,20E3.ttf | Bin 10124 -> 10124 bytes
+ .../NotoColorEmoji.subset.default.38,AE,2049.ttf   | Bin 7544 -> 7544 bytes
+ .../cbdt/NotoColorEmoji.subset.default.39.ttf      | Bin 1920 -> 1920 bytes
+ .../cbdt/NotoColorEmoji.subset.default.AE.ttf      | Bin 4412 -> 4412 bytes
+ ...lorEmoji.subset.drop-hints-retain-gids.2049.ttf | Bin 3136 -> 3136 bytes
+ ...Emoji.subset.drop-hints-retain-gids.38,2049.ttf | Bin 4108 -> 4108 bytes
+ ...Emoji.subset.drop-hints-retain-gids.38,20E3.ttf | Bin 3600 -> 3600 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 10124 -> 10124 bytes
+ ...ji.subset.drop-hints-retain-gids.38,AE,2049.ttf | Bin 7564 -> 7564 bytes
+ ...ColorEmoji.subset.drop-hints-retain-gids.39.ttf | Bin 1928 -> 1928 bytes
+ ...ColorEmoji.subset.drop-hints-retain-gids.AE.ttf | Bin 4428 -> 4428 bytes
+ .../cbdt/NotoColorEmoji.subset.drop-hints.2049.ttf | Bin 3112 -> 3112 bytes
+ .../NotoColorEmoji.subset.drop-hints.38,2049.ttf   | Bin 4084 -> 4084 bytes
+ .../NotoColorEmoji.subset.drop-hints.38,20E3.ttf   | Bin 3568 -> 3568 bytes
+ ...oji.subset.drop-hints.38,39,AE,2049,38,20E3.ttf | Bin 10124 -> 10124 bytes
+ ...NotoColorEmoji.subset.drop-hints.38,AE,2049.ttf | Bin 7544 -> 7544 bytes
+ .../cbdt/NotoColorEmoji.subset.drop-hints.39.ttf   | Bin 1920 -> 1920 bytes
+ .../cbdt/NotoColorEmoji.subset.drop-hints.AE.ttf   | Bin 4412 -> 4412 bytes
+ .../NotoColorEmoji.subset.gap.default.2049.ttf     | Bin 3112 -> 3112 bytes
+ .../NotoColorEmoji.subset.gap.default.38,2049.ttf  | Bin 4084 -> 4084 bytes
+ .../NotoColorEmoji.subset.gap.default.38,20E3.ttf  | Bin 3568 -> 3568 bytes
+ ...ji.subset.gap.default.38,39,AE,2049,38,20E3.ttf | Bin 9188 -> 9188 bytes
+ ...otoColorEmoji.subset.gap.default.38,AE,2049.ttf | Bin 7544 -> 7544 bytes
+ .../cbdt/NotoColorEmoji.subset.gap.default.39.ttf  | Bin 908 -> 908 bytes
+ .../cbdt/NotoColorEmoji.subset.gap.default.AE.ttf  | Bin 4412 -> 4412 bytes
+ ...moji.subset.gap.drop-hints-retain-gids.2049.ttf | Bin 3136 -> 3136 bytes
+ ...i.subset.gap.drop-hints-retain-gids.38,2049.ttf | Bin 4108 -> 4108 bytes
+ ...i.subset.gap.drop-hints-retain-gids.38,20E3.ttf | Bin 3600 -> 3600 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 9188 -> 9188 bytes
+ ...ubset.gap.drop-hints-retain-gids.38,AE,2049.ttf | Bin 7564 -> 7564 bytes
+ ...rEmoji.subset.gap.drop-hints-retain-gids.39.ttf | Bin 916 -> 916 bytes
+ ...rEmoji.subset.gap.drop-hints-retain-gids.AE.ttf | Bin 4428 -> 4428 bytes
+ .../NotoColorEmoji.subset.gap.drop-hints.2049.ttf  | Bin 3112 -> 3112 bytes
+ ...otoColorEmoji.subset.gap.drop-hints.38,2049.ttf | Bin 4084 -> 4084 bytes
+ ...otoColorEmoji.subset.gap.drop-hints.38,20E3.ttf | Bin 3568 -> 3568 bytes
+ ...subset.gap.drop-hints.38,39,AE,2049,38,20E3.ttf | Bin 9188 -> 9188 bytes
+ ...ColorEmoji.subset.gap.drop-hints.38,AE,2049.ttf | Bin 7544 -> 7544 bytes
+ .../NotoColorEmoji.subset.gap.drop-hints.39.ttf    | Bin 908 -> 908 bytes
+ .../NotoColorEmoji.subset.gap.drop-hints.AE.ttf    | Bin 4412 -> 4412 bytes
+ .../NotoColorEmoji.subset.gap.retain-gids.2049.ttf | Bin 3136 -> 3136 bytes
+ ...toColorEmoji.subset.gap.retain-gids.38,2049.ttf | Bin 4108 -> 4108 bytes
+ ...toColorEmoji.subset.gap.retain-gids.38,20E3.ttf | Bin 3600 -> 3600 bytes
+ ...ubset.gap.retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 9188 -> 9188 bytes
+ ...olorEmoji.subset.gap.retain-gids.38,AE,2049.ttf | Bin 7564 -> 7564 bytes
+ .../NotoColorEmoji.subset.gap.retain-gids.39.ttf   | Bin 916 -> 916 bytes
+ .../NotoColorEmoji.subset.gap.retain-gids.AE.ttf   | Bin 4428 -> 4428 bytes
+ ...olorEmoji.subset.index_format3.default.2049.ttf | Bin 3108 -> 3108 bytes
+ ...rEmoji.subset.index_format3.default.38,2049.ttf | Bin 4076 -> 4076 bytes
+ ...rEmoji.subset.index_format3.default.38,20E3.ttf | Bin 3560 -> 3560 bytes
+ ...index_format3.default.38,39,AE,2049,38,20E3.ttf | Bin 10112 -> 10112 bytes
+ ...oji.subset.index_format3.default.38,AE,2049.ttf | Bin 7536 -> 7536 bytes
+ ...oColorEmoji.subset.index_format3.default.39.ttf | Bin 1916 -> 1916 bytes
+ ...oColorEmoji.subset.index_format3.default.AE.ttf | Bin 4408 -> 4408 bytes
+ ...t.index_format3.drop-hints-retain-gids.2049.ttf | Bin 3132 -> 3132 bytes
+ ...ndex_format3.drop-hints-retain-gids.38,2049.ttf | Bin 4100 -> 4100 bytes
+ ...ndex_format3.drop-hints-retain-gids.38,20E3.ttf | Bin 3592 -> 3592 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 10112 -> 10112 bytes
+ ...x_format3.drop-hints-retain-gids.38,AE,2049.ttf | Bin 7552 -> 7552 bytes
+ ...set.index_format3.drop-hints-retain-gids.39.ttf | Bin 1924 -> 1924 bytes
+ ...set.index_format3.drop-hints-retain-gids.AE.ttf | Bin 4424 -> 4424 bytes
+ ...rEmoji.subset.index_format3.drop-hints.2049.ttf | Bin 3108 -> 3108 bytes
+ ...oji.subset.index_format3.drop-hints.38,2049.ttf | Bin 4076 -> 4076 bytes
+ ...oji.subset.index_format3.drop-hints.38,20E3.ttf | Bin 3560 -> 3560 bytes
+ ...ex_format3.drop-hints.38,39,AE,2049,38,20E3.ttf | Bin 10112 -> 10112 bytes
+ ....subset.index_format3.drop-hints.38,AE,2049.ttf | Bin 7536 -> 7536 bytes
+ ...lorEmoji.subset.index_format3.drop-hints.39.ttf | Bin 1916 -> 1916 bytes
+ ...lorEmoji.subset.index_format3.drop-hints.AE.ttf | Bin 4408 -> 4408 bytes
+ ...Emoji.subset.index_format3.retain-gids.2049.ttf | Bin 3132 -> 3132 bytes
+ ...ji.subset.index_format3.retain-gids.38,2049.ttf | Bin 4100 -> 4100 bytes
+ ...ji.subset.index_format3.retain-gids.38,20E3.ttf | Bin 3592 -> 3592 bytes
+ ...x_format3.retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 10112 -> 10112 bytes
+ ...subset.index_format3.retain-gids.38,AE,2049.ttf | Bin 7552 -> 7552 bytes
+ ...orEmoji.subset.index_format3.retain-gids.39.ttf | Bin 1924 -> 1924 bytes
+ ...orEmoji.subset.index_format3.retain-gids.AE.ttf | Bin 4424 -> 4424 bytes
+ ...ji.subset.multiple_size_tables.default.2049.ttf | Bin 5312 -> 5312 bytes
+ ...subset.multiple_size_tables.default.38,2049.ttf | Bin 7244 -> 7244 bytes
+ ...subset.multiple_size_tables.default.38,20E3.ttf | Bin 6212 -> 6212 bytes
+ ...e_size_tables.default.38,39,AE,2049,38,20E3.ttf | Bin 19280 -> 19280 bytes
+ ...set.multiple_size_tables.default.38,AE,2049.ttf | Bin 14140 -> 14140 bytes
+ ...moji.subset.multiple_size_tables.default.39.ttf | Bin 2928 -> 2928 bytes
+ ...moji.subset.multiple_size_tables.default.AE.ttf | Bin 7916 -> 7916 bytes
+ ...ple_size_tables.drop-hints-retain-gids.2049.ttf | Bin 5336 -> 5336 bytes
+ ..._size_tables.drop-hints-retain-gids.38,2049.ttf | Bin 7268 -> 7268 bytes
+ ..._size_tables.drop-hints-retain-gids.38,20E3.ttf | Bin 6244 -> 6244 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 19280 -> 19280 bytes
+ ...ze_tables.drop-hints-retain-gids.38,AE,2049.ttf | Bin 14164 -> 14164 bytes
+ ...tiple_size_tables.drop-hints-retain-gids.39.ttf | Bin 2936 -> 2936 bytes
+ ...tiple_size_tables.drop-hints-retain-gids.AE.ttf | Bin 7932 -> 7932 bytes
+ ...subset.multiple_size_tables.drop-hints.2049.ttf | Bin 5312 -> 5312 bytes
+ ...set.multiple_size_tables.drop-hints.38,2049.ttf | Bin 7244 -> 7244 bytes
+ ...set.multiple_size_tables.drop-hints.38,20E3.ttf | Bin 6212 -> 6212 bytes
+ ...ize_tables.drop-hints.38,39,AE,2049,38,20E3.ttf | Bin 19280 -> 19280 bytes
+ ....multiple_size_tables.drop-hints.38,AE,2049.ttf | Bin 14140 -> 14140 bytes
+ ...i.subset.multiple_size_tables.drop-hints.39.ttf | Bin 2928 -> 2928 bytes
+ ...i.subset.multiple_size_tables.drop-hints.AE.ttf | Bin 7916 -> 7916 bytes
+ ...ubset.multiple_size_tables.retain-gids.2049.ttf | Bin 5336 -> 5336 bytes
+ ...et.multiple_size_tables.retain-gids.38,2049.ttf | Bin 7268 -> 7268 bytes
+ ...et.multiple_size_tables.retain-gids.38,20E3.ttf | Bin 6244 -> 6244 bytes
+ ...ze_tables.retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 19280 -> 19280 bytes
+ ...multiple_size_tables.retain-gids.38,AE,2049.ttf | Bin 14164 -> 14164 bytes
+ ....subset.multiple_size_tables.retain-gids.39.ttf | Bin 2936 -> 2936 bytes
+ ....subset.multiple_size_tables.retain-gids.AE.ttf | Bin 7932 -> 7932 bytes
+ .../NotoColorEmoji.subset.retain-gids.2049.ttf     | Bin 3136 -> 3136 bytes
+ .../NotoColorEmoji.subset.retain-gids.38,2049.ttf  | Bin 4108 -> 4108 bytes
+ .../NotoColorEmoji.subset.retain-gids.38,20E3.ttf  | Bin 3600 -> 3600 bytes
+ ...ji.subset.retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 10124 -> 10124 bytes
+ ...otoColorEmoji.subset.retain-gids.38,AE,2049.ttf | Bin 7564 -> 7564 bytes
+ .../cbdt/NotoColorEmoji.subset.retain-gids.39.ttf  | Bin 1928 -> 1928 bytes
+ .../cbdt/NotoColorEmoji.subset.retain-gids.AE.ttf  | Bin 4428 -> 4428 bytes
+ ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 20128 -> 20128 bytes
+ ...outline-desubroutinize-retain-gids.61,62,63.otf | Bin 2280 -> 2280 bytes
+ ...e-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30448 -> 30448 bytes
+ ...f-outline-desubroutinize.1FC,21,41,20,62,63.otf | Bin 2356 -> 2356 bytes
+ ...ular.notdef-outline-desubroutinize.61,62,63.otf | Bin 2084 -> 2084 bytes
+ ...otdef-outline-desubroutinize.D7,D8,D9,DA,DE.otf | Bin 2252 -> 2252 bytes
+ ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 19960 -> 19960 bytes
+ ...p-hints-desubroutinize-retain-gids.61,62,63.otf | Bin 2156 -> 2156 bytes
+ ...s-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30280 -> 30280 bytes
+ ...rop-hints-desubroutinize.1FC,21,41,20,62,63.otf | Bin 2184 -> 2184 bytes
+ ...-outline-drop-hints-desubroutinize.61,62,63.otf | Bin 1960 -> 1960 bytes
+ ...ne-drop-hints-desubroutinize.D7,D8,D9,DA,DE.otf | Bin 2088 -> 2088 bytes
+ ...e-drop-hints-retain-gids.1FC,21,41,20,62,63.otf | Bin 20052 -> 20052 bytes
+ ...def-outline-drop-hints-retain-gids.61,62,63.otf | Bin 2196 -> 2196 bytes
+ ...tline-drop-hints-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30296 -> 30296 bytes
+ ...otdef-outline-drop-hints.1FC,21,41,20,62,63.otf | Bin 2268 -> 2268 bytes
+ ...-Regular.notdef-outline-drop-hints.61,62,63.otf | Bin 2028 -> 2028 bytes
+ ...ar.notdef-outline-drop-hints.D7,D8,D9,DA,DE.otf | Bin 2104 -> 2104 bytes
+ ...tdef-outline-retain-gids.1FC,21,41,20,62,63.otf | Bin 20284 -> 20284 bytes
+ ...Regular.notdef-outline-retain-gids.61,62,63.otf | Bin 2348 -> 2348 bytes
+ ...r.notdef-outline-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30464 -> 30464 bytes
+ ...o-Regular.notdef-outline.1FC,21,41,20,62,63.otf | Bin 2500 -> 2500 bytes
+ ...urceSansPro-Regular.notdef-outline.61,62,63.otf | Bin 2180 -> 2180 bytes
+ ...nsPro-Regular.notdef-outline.D7,D8,D9,DA,DE.otf | Bin 2272 -> 2272 bytes
+ ...ubset.default.3042,3044,3046,3048,304A,304B.otf | Bin 4820 -> 4820 bytes
+ ...ubset.default.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 6196 -> 6196 bytes
+ ...eHanSans-Regular_subset.default.61,63,65,6B.otf | Bin 2540 -> 2540 bytes
+ ...ubset.default.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6640 -> 6640 bytes
+ .../SourceHanSans-Regular_subset.default.660E.otf  | Bin 2444 -> 2444 bytes
+ ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 129820 -> 129820 bytes
+ ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 130840 -> 130840 bytes
+ ...bset.desubroutinize-retain-gids.61,63,65,6B.otf | Bin 3364 -> 3364 bytes
+ ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 121956 -> 121956 bytes
+ ...ular_subset.desubroutinize-retain-gids.660E.otf | Bin 50744 -> 50744 bytes
+ ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 4656 -> 4656 bytes
+ ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 5840 -> 5840 bytes
+ ...s-Regular_subset.desubroutinize.61,63,65,6B.otf | Bin 2472 -> 2472 bytes
+ ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6132 -> 6132 bytes
+ ...eHanSans-Regular_subset.desubroutinize.660E.otf | Bin 2428 -> 2428 bytes
+ ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 129376 -> 129376 bytes
+ ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 130220 -> 130220 bytes
+ ...ints-desubroutinize-retain-gids.61,63,65,6B.otf | Bin 3244 -> 3244 bytes
+ ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 121180 -> 121180 bytes
+ ....drop-hints-desubroutinize-retain-gids.660E.otf | Bin 50516 -> 50516 bytes
+ ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 4348 -> 4348 bytes
+ ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 5324 -> 5324 bytes
+ ...ubset.drop-hints-desubroutinize.61,63,65,6B.otf | Bin 2368 -> 2368 bytes
+ ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 5456 -> 5456 bytes
+ ...gular_subset.drop-hints-desubroutinize.660E.otf | Bin 2292 -> 2292 bytes
+ ...s-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 129516 -> 129516 bytes
+ ...s-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 130528 -> 130528 bytes
+ ...r_subset.drop-hints-retain-gids.61,63,65,6B.otf | Bin 3208 -> 3208 bytes
+ ...s-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 121680 -> 121680 bytes
+ ...-Regular_subset.drop-hints-retain-gids.660E.otf | Bin 50532 -> 50532 bytes
+ ...et.drop-hints.3042,3044,3046,3048,304A,304B.otf | Bin 4484 -> 4484 bytes
+ ...et.drop-hints.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 5628 -> 5628 bytes
+ ...nSans-Regular_subset.drop-hints.61,63,65,6B.otf | Bin 2400 -> 2400 bytes
+ ...et.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 5952 -> 5952 bytes
+ ...ourceHanSans-Regular_subset.drop-hints.660E.otf | Bin 2304 -> 2304 bytes
+ ...t.retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 129980 -> 129980 bytes
+ ...t.retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 131196 -> 131196 bytes
+ ...Sans-Regular_subset.retain-gids.61,63,65,6B.otf | Bin 3364 -> 3364 bytes
+ ...t.retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 122460 -> 122460 bytes
+ ...urceHanSans-Regular_subset.retain-gids.660E.otf | Bin 50760 -> 50760 bytes
+ ...otoSerifMyanmar-Regular.notdef-outline.1092.otf | Bin 1392 -> 1392 bytes
+ .../cmap/AdobeBlank-Regular.default.61,62.ttf      | Bin 1208 -> 1208 bytes
+ .../cmap/AdobeBlank-Regular.default.61,FEFA.ttf    | Bin 1264 -> 1264 bytes
+ .../cmap/AdobeBlank-Regular.default.FEE6,FECF.ttf  | Bin 1216 -> 1216 bytes
+ .../cmap/AdobeBlank-Regular.default.FEF9,FEFA.ttf  | Bin 1204 -> 1204 bytes
+ .../cmap/AdobeBlank-Regular.default.FEFA.ttf       | Bin 1184 -> 1184 bytes
+ ...eBlank-Regular.drop-hints-retain-gids.61,62.ttf | Bin 1424 -> 1424 bytes
+ ...lank-Regular.drop-hints-retain-gids.61,FEFA.ttf | Bin 8232 -> 8232 bytes
+ ...nk-Regular.drop-hints-retain-gids.FEE6,FECF.ttf | Bin 8104 -> 8104 bytes
+ ...nk-Regular.drop-hints-retain-gids.FEF9,FEFA.ttf | Bin 8172 -> 8172 bytes
+ ...beBlank-Regular.drop-hints-retain-gids.FEFA.ttf | Bin 8156 -> 8156 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.61,62.ttf   | Bin 1036 -> 1036 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.61,FEFA.ttf | Bin 1092 -> 1092 bytes
+ .../AdobeBlank-Regular.drop-hints.FEE6,FECF.ttf    | Bin 1044 -> 1044 bytes
+ .../AdobeBlank-Regular.drop-hints.FEF9,FEFA.ttf    | Bin 1032 -> 1032 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.FEFA.ttf    | Bin 1012 -> 1012 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.61,62.ttf     | Bin 956 -> 956 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.61,FEFA.ttf   | Bin 1012 -> 1012 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEE6,FECF.ttf | Bin 964 -> 964 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEF9,FEFA.ttf | Bin 952 -> 952 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEFA.ttf      | Bin 932 -> 932 bytes
+ .../cmap/AdobeBlank-Regular.retain-gids.61,62.ttf  | Bin 1596 -> 1596 bytes
+ .../AdobeBlank-Regular.retain-gids.61,FEFA.ttf     | Bin 8404 -> 8404 bytes
+ .../AdobeBlank-Regular.retain-gids.FEE6,FECF.ttf   | Bin 8276 -> 8276 bytes
+ .../AdobeBlank-Regular.retain-gids.FEF9,FEFA.ttf   | Bin 8344 -> 8344 bytes
+ .../cmap/AdobeBlank-Regular.retain-gids.FEFA.ttf   | Bin 8328 -> 8328 bytes
+ ...tline-drop-hints-retain-gids.4E00,4E02,4E03.otf | Bin 1404 -> 1404 bytes
+ ...ef-outline-drop-hints-retain-gids.4E00,4E03.otf | Bin 1292 -> 1292 bytes
+ ...tline-drop-hints-retain-gids.4E00,4E05,4E07.otf | Bin 1416 -> 1416 bytes
+ ...tline-drop-hints-retain-gids.4E02,4E03,4E08.otf | Bin 1736 -> 1736 bytes
+ ....notdef-outline-drop-hints-retain-gids.4E02.otf | Bin 1048 -> 1048 bytes
+ ....notdef-outline-drop-hints-retain-gids.4E03.otf | Bin 1140 -> 1140 bytes
+ ...-drop-hints-retain-gids.4E05,4E07,4E08,4E09.otf | Bin 2000 -> 2000 bytes
+ ...ef-outline-drop-hints-retain-gids.4E08,4E09.otf | Bin 1888 -> 1888 bytes
+ ....notdef-outline-drop-hints-retain-gids.4E08.otf | Bin 1560 -> 1560 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.otf | Bin 2452 -> 2452 bytes
+ ...t1.notdef-outline-drop-hints.4E00,4E02,4E03.otf | Bin 1308 -> 1308 bytes
+ ...4_font1.notdef-outline-drop-hints.4E00,4E03.otf | Bin 1188 -> 1188 bytes
+ ...t1.notdef-outline-drop-hints.4E00,4E05,4E07.otf | Bin 1280 -> 1280 bytes
+ ...t1.notdef-outline-drop-hints.4E02,4E03,4E08.otf | Bin 1528 -> 1528 bytes
+ ...cmap14_font1.notdef-outline-drop-hints.4E02.otf | Bin 944 -> 944 bytes
+ ...cmap14_font1.notdef-outline-drop-hints.4E03.otf | Bin 1028 -> 1028 bytes
+ ...tdef-outline-drop-hints.4E05,4E07,4E08,4E09.otf | Bin 1796 -> 1796 bytes
+ ...4_font1.notdef-outline-drop-hints.4E08,4E09.otf | Bin 1672 -> 1672 bytes
+ ...cmap14_font1.notdef-outline-drop-hints.4E08.otf | Bin 1336 -> 1336 bytes
+ ...def-outline-drop-hints.retain-all-codepoint.otf | Bin 2296 -> 2296 bytes
+ ...14_font1.notdef-outline-gids.4E00,4E02,4E03.otf | Bin 1408 -> 1408 bytes
+ .../cmap14_font1.notdef-outline-gids.4E00,4E03.otf | Bin 1396 -> 1396 bytes
+ ...14_font1.notdef-outline-gids.4E00,4E05,4E07.otf | Bin 1640 -> 1640 bytes
+ ...14_font1.notdef-outline-gids.4E02,4E03,4E08.otf | Bin 1760 -> 1760 bytes
+ .../cmap14_font1.notdef-outline-gids.4E02.otf      | Bin 1332 -> 1332 bytes
+ .../cmap14_font1.notdef-outline-gids.4E03.otf      | Bin 1372 -> 1372 bytes
+ ...nt1.notdef-outline-gids.4E05,4E07,4E08,4E09.otf | Bin 2184 -> 2184 bytes
+ .../cmap14_font1.notdef-outline-gids.4E08,4E09.otf | Bin 2056 -> 2056 bytes
+ .../cmap14_font1.notdef-outline-gids.4E08.otf      | Bin 1720 -> 1720 bytes
+ ...t1.notdef-outline-gids.retain-all-codepoint.otf | Bin 2400 -> 2400 bytes
+ ...ont1.notdef-outline-name-ids.4E00,4E02,4E03.otf | Bin 1308 -> 1308 bytes
+ ...p14_font1.notdef-outline-name-ids.4E00,4E03.otf | Bin 1184 -> 1184 bytes
+ ...ont1.notdef-outline-name-ids.4E00,4E05,4E07.otf | Bin 1280 -> 1280 bytes
+ ...ont1.notdef-outline-name-ids.4E02,4E03,4E08.otf | Bin 1528 -> 1528 bytes
+ .../cmap14_font1.notdef-outline-name-ids.4E02.otf  | Bin 944 -> 944 bytes
+ .../cmap14_font1.notdef-outline-name-ids.4E03.otf  | Bin 1028 -> 1028 bytes
+ ...notdef-outline-name-ids.4E05,4E07,4E08,4E09.otf | Bin 1796 -> 1796 bytes
+ ...p14_font1.notdef-outline-name-ids.4E08,4E09.otf | Bin 1668 -> 1668 bytes
+ .../cmap14_font1.notdef-outline-name-ids.4E08.otf  | Bin 1336 -> 1336 bytes
+ ...otdef-outline-name-ids.retain-all-codepoint.otf | Bin 2296 -> 2296 bytes
+ ...1.notdef-outline-retain-gids.4E00,4E02,4E03.otf | Bin 1472 -> 1472 bytes
+ ..._font1.notdef-outline-retain-gids.4E00,4E03.otf | Bin 1360 -> 1360 bytes
+ ...1.notdef-outline-retain-gids.4E00,4E05,4E07.otf | Bin 1480 -> 1480 bytes
+ ...1.notdef-outline-retain-gids.4E02,4E03,4E08.otf | Bin 1804 -> 1804 bytes
+ ...map14_font1.notdef-outline-retain-gids.4E02.otf | Bin 1116 -> 1116 bytes
+ ...map14_font1.notdef-outline-retain-gids.4E03.otf | Bin 1208 -> 1208 bytes
+ ...def-outline-retain-gids.4E05,4E07,4E08,4E09.otf | Bin 2068 -> 2068 bytes
+ ..._font1.notdef-outline-retain-gids.4E08,4E09.otf | Bin 1956 -> 1956 bytes
+ ...map14_font1.notdef-outline-retain-gids.4E08.otf | Bin 1628 -> 1628 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 2520 -> 2520 bytes
+ .../cmap14_font1.notdef-outline.4E00,4E02,4E03.otf | Bin 1376 -> 1376 bytes
+ .../cmap14_font1.notdef-outline.4E00,4E03.otf      | Bin 1252 -> 1252 bytes
+ .../cmap14_font1.notdef-outline.4E00,4E05,4E07.otf | Bin 1348 -> 1348 bytes
+ .../cmap14_font1.notdef-outline.4E02,4E03,4E08.otf | Bin 1596 -> 1596 bytes
+ .../cmap14/cmap14_font1.notdef-outline.4E02.otf    | Bin 1012 -> 1012 bytes
+ .../cmap14/cmap14_font1.notdef-outline.4E03.otf    | Bin 1096 -> 1096 bytes
+ ...14_font1.notdef-outline.4E05,4E07,4E08,4E09.otf | Bin 1864 -> 1864 bytes
+ .../cmap14_font1.notdef-outline.4E08,4E09.otf      | Bin 1736 -> 1736 bytes
+ .../cmap14/cmap14_font1.notdef-outline.4E08.otf    | Bin 1404 -> 1404 bytes
+ ...4_font1.notdef-outline.retain-all-codepoint.otf | Bin 2364 -> 2364 bytes
+ ...tline-drop-hints-retain-gids.4E00,4E02,4E03.otf | Bin 1404 -> 1404 bytes
+ ...ef-outline-drop-hints-retain-gids.4E00,4E03.otf | Bin 1292 -> 1292 bytes
+ ...tline-drop-hints-retain-gids.4E00,4E05,4E07.otf | Bin 1420 -> 1420 bytes
+ ...tline-drop-hints-retain-gids.4E02,4E03,4E08.otf | Bin 1736 -> 1736 bytes
+ ....notdef-outline-drop-hints-retain-gids.4E02.otf | Bin 1044 -> 1044 bytes
+ ....notdef-outline-drop-hints-retain-gids.4E03.otf | Bin 1136 -> 1136 bytes
+ ...-drop-hints-retain-gids.4E05,4E07,4E08,4E09.otf | Bin 2000 -> 2000 bytes
+ ...ef-outline-drop-hints-retain-gids.4E08,4E09.otf | Bin 1884 -> 1884 bytes
+ ....notdef-outline-drop-hints-retain-gids.4E08.otf | Bin 1556 -> 1556 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.otf | Bin 2448 -> 2448 bytes
+ ...t2.notdef-outline-drop-hints.4E00,4E02,4E03.otf | Bin 1308 -> 1308 bytes
+ ...4_font2.notdef-outline-drop-hints.4E00,4E03.otf | Bin 1188 -> 1188 bytes
+ ...t2.notdef-outline-drop-hints.4E00,4E05,4E07.otf | Bin 1284 -> 1284 bytes
+ ...t2.notdef-outline-drop-hints.4E02,4E03,4E08.otf | Bin 1528 -> 1528 bytes
+ ...cmap14_font2.notdef-outline-drop-hints.4E02.otf | Bin 940 -> 940 bytes
+ ...cmap14_font2.notdef-outline-drop-hints.4E03.otf | Bin 1024 -> 1024 bytes
+ ...tdef-outline-drop-hints.4E05,4E07,4E08,4E09.otf | Bin 1796 -> 1796 bytes
+ ...4_font2.notdef-outline-drop-hints.4E08,4E09.otf | Bin 1668 -> 1668 bytes
+ ...cmap14_font2.notdef-outline-drop-hints.4E08.otf | Bin 1332 -> 1332 bytes
+ ...def-outline-drop-hints.retain-all-codepoint.otf | Bin 2292 -> 2292 bytes
+ ...14_font2.notdef-outline-gids.4E00,4E02,4E03.otf | Bin 1408 -> 1408 bytes
+ .../cmap14_font2.notdef-outline-gids.4E00,4E03.otf | Bin 1396 -> 1396 bytes
+ ...14_font2.notdef-outline-gids.4E00,4E05,4E07.otf | Bin 1644 -> 1644 bytes
+ ...14_font2.notdef-outline-gids.4E02,4E03,4E08.otf | Bin 1760 -> 1760 bytes
+ .../cmap14_font2.notdef-outline-gids.4E02.otf      | Bin 1328 -> 1328 bytes
+ .../cmap14_font2.notdef-outline-gids.4E03.otf      | Bin 1368 -> 1368 bytes
+ ...nt2.notdef-outline-gids.4E05,4E07,4E08,4E09.otf | Bin 2184 -> 2184 bytes
+ .../cmap14_font2.notdef-outline-gids.4E08,4E09.otf | Bin 2052 -> 2052 bytes
+ .../cmap14_font2.notdef-outline-gids.4E08.otf      | Bin 1716 -> 1716 bytes
+ ...t2.notdef-outline-gids.retain-all-codepoint.otf | Bin 2396 -> 2396 bytes
+ ...ont2.notdef-outline-name-ids.4E00,4E02,4E03.otf | Bin 1308 -> 1308 bytes
+ ...p14_font2.notdef-outline-name-ids.4E00,4E03.otf | Bin 1184 -> 1184 bytes
+ ...ont2.notdef-outline-name-ids.4E00,4E05,4E07.otf | Bin 1284 -> 1284 bytes
+ ...ont2.notdef-outline-name-ids.4E02,4E03,4E08.otf | Bin 1528 -> 1528 bytes
+ .../cmap14_font2.notdef-outline-name-ids.4E02.otf  | Bin 940 -> 940 bytes
+ .../cmap14_font2.notdef-outline-name-ids.4E03.otf  | Bin 1024 -> 1024 bytes
+ ...notdef-outline-name-ids.4E05,4E07,4E08,4E09.otf | Bin 1796 -> 1796 bytes
+ ...p14_font2.notdef-outline-name-ids.4E08,4E09.otf | Bin 1664 -> 1664 bytes
+ .../cmap14_font2.notdef-outline-name-ids.4E08.otf  | Bin 1332 -> 1332 bytes
+ ...otdef-outline-name-ids.retain-all-codepoint.otf | Bin 2292 -> 2292 bytes
+ ...2.notdef-outline-retain-gids.4E00,4E02,4E03.otf | Bin 1472 -> 1472 bytes
+ ..._font2.notdef-outline-retain-gids.4E00,4E03.otf | Bin 1360 -> 1360 bytes
+ ...2.notdef-outline-retain-gids.4E00,4E05,4E07.otf | Bin 1484 -> 1484 bytes
+ ...2.notdef-outline-retain-gids.4E02,4E03,4E08.otf | Bin 1804 -> 1804 bytes
+ ...map14_font2.notdef-outline-retain-gids.4E02.otf | Bin 1112 -> 1112 bytes
+ ...map14_font2.notdef-outline-retain-gids.4E03.otf | Bin 1204 -> 1204 bytes
+ ...def-outline-retain-gids.4E05,4E07,4E08,4E09.otf | Bin 2068 -> 2068 bytes
+ ..._font2.notdef-outline-retain-gids.4E08,4E09.otf | Bin 1952 -> 1952 bytes
+ ...map14_font2.notdef-outline-retain-gids.4E08.otf | Bin 1624 -> 1624 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 2516 -> 2516 bytes
+ .../cmap14_font2.notdef-outline.4E00,4E02,4E03.otf | Bin 1376 -> 1376 bytes
+ .../cmap14_font2.notdef-outline.4E00,4E03.otf      | Bin 1252 -> 1252 bytes
+ .../cmap14_font2.notdef-outline.4E00,4E05,4E07.otf | Bin 1352 -> 1352 bytes
+ .../cmap14_font2.notdef-outline.4E02,4E03,4E08.otf | Bin 1596 -> 1596 bytes
+ .../cmap14/cmap14_font2.notdef-outline.4E02.otf    | Bin 1008 -> 1008 bytes
+ .../cmap14/cmap14_font2.notdef-outline.4E03.otf    | Bin 1092 -> 1092 bytes
+ ...14_font2.notdef-outline.4E05,4E07,4E08,4E09.otf | Bin 1864 -> 1864 bytes
+ .../cmap14_font2.notdef-outline.4E08,4E09.otf      | Bin 1732 -> 1732 bytes
+ .../cmap14/cmap14_font2.notdef-outline.4E08.otf    | Bin 1400 -> 1400 bytes
+ ...4_font2.notdef-outline.retain-all-codepoint.otf | Bin 2360 -> 2360 bytes
+ .../TwemojiMozilla.subset.default.32,3297,3299.ttf | Bin 1868 -> 1868 bytes
+ .../colr/TwemojiMozilla.subset.default.32,3297.ttf | Bin 1344 -> 1344 bytes
+ .../colr/TwemojiMozilla.subset.default.32,3299.ttf | Bin 1520 -> 1520 bytes
+ .../colr/TwemojiMozilla.subset.default.32.ttf      | Bin 888 -> 888 bytes
+ .../TwemojiMozilla.subset.default.3297,3299.ttf    | Bin 1860 -> 1860 bytes
+ .../colr/TwemojiMozilla.subset.default.3297.ttf    | Bin 1332 -> 1332 bytes
+ .../colr/TwemojiMozilla.subset.default.3299.ttf    | Bin 1508 -> 1508 bytes
+ ....subset.drop-hints-retain-gids.32,3297,3299.ttf | Bin 1848 -> 1848 bytes
+ ...zilla.subset.drop-hints-retain-gids.32,3297.ttf | Bin 1340 -> 1340 bytes
+ ...zilla.subset.drop-hints-retain-gids.32,3299.ttf | Bin 1520 -> 1520 bytes
+ ...ojiMozilla.subset.drop-hints-retain-gids.32.ttf | Bin 868 -> 868 bytes
+ ...lla.subset.drop-hints-retain-gids.3297,3299.ttf | Bin 1844 -> 1844 bytes
+ ...iMozilla.subset.drop-hints-retain-gids.3297.ttf | Bin 1328 -> 1328 bytes
+ ...iMozilla.subset.drop-hints-retain-gids.3299.ttf | Bin 1508 -> 1508 bytes
+ ...emojiMozilla.subset.drop-hints.32,3297,3299.ttf | Bin 1848 -> 1848 bytes
+ .../TwemojiMozilla.subset.drop-hints.32,3297.ttf   | Bin 1324 -> 1324 bytes
+ .../TwemojiMozilla.subset.drop-hints.32,3299.ttf   | Bin 1500 -> 1500 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.32.ttf   | Bin 868 -> 868 bytes
+ .../TwemojiMozilla.subset.drop-hints.3297,3299.ttf | Bin 1840 -> 1840 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.3297.ttf | Bin 1312 -> 1312 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.3299.ttf | Bin 1488 -> 1488 bytes
+ ...mojiMozilla.subset.retain-gids.32,3297,3299.ttf | Bin 1868 -> 1868 bytes
+ .../TwemojiMozilla.subset.retain-gids.32,3297.ttf  | Bin 1360 -> 1360 bytes
+ .../TwemojiMozilla.subset.retain-gids.32,3299.ttf  | Bin 1540 -> 1540 bytes
+ .../colr/TwemojiMozilla.subset.retain-gids.32.ttf  | Bin 888 -> 888 bytes
+ ...TwemojiMozilla.subset.retain-gids.3297,3299.ttf | Bin 1864 -> 1864 bytes
+ .../TwemojiMozilla.subset.retain-gids.3297.ttf     | Bin 1348 -> 1348 bytes
+ .../TwemojiMozilla.subset.retain-gids.3299.ttf     | Bin 1528 -> 1528 bytes
+ .../colr_with_components/colr-table.default.6B.ttf | Bin 4260 -> 4260 bytes
+ .../colr-table.drop-hints-retain-gids.6B.ttf       | Bin 4984 -> 4984 bytes
+ .../colr-table.drop-hints.6B.ttf                   | Bin 4260 -> 4260 bytes
+ .../colr-table.retain-gids.6B.ttf                  | Bin 4984 -> 4984 bytes
+ .../Roboto-Regular.default.1FC,21,41,20,62,63.ttf  | Bin 3004 -> 3004 bytes
+ .../full-font/Roboto-Regular.default.61,62,63.ttf  | Bin 2632 -> 2632 bytes
+ .../Roboto-Regular.default.D7,D8,D9,DA,DE.ttf      | Bin 2960 -> 2960 bytes
+ ...oboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf | Bin 1556 -> 1556 bytes
+ .../Roboto-Regular.drop-hints.61,62,63.ttf         | Bin 1372 -> 1372 bytes
+ .../Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf   | Bin 1584 -> 1584 bytes
+ ...ifVariable-Roman.default.1FC,21,41,20,62,63.ttf | Bin 3888 -> 3888 bytes
+ .../SourceSerifVariable-Roman.default.61,62,63.ttf | Bin 3784 -> 3784 bytes
+ ...eSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf | Bin 4324 -> 4324 bytes
+ ...ariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf | Bin 3876 -> 3876 bytes
+ ...urceSerifVariable-Roman.drop-hints.61,62,63.ttf | Bin 3784 -> 3784 bytes
+ ...rifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 4324 -> 4324 bytes
+ .../Mplus1p-Regular.default.1D715,1D7D8,41,42.ttf  | Bin 2340 -> 2340 bytes
+ .../japanese/Mplus1p-Regular.default.25771.ttf     | Bin 1988 -> 1988 bytes
+ ...gular.default.3042,3044,3046,3048,304A,304B.ttf | Bin 2616 -> 2616 bytes
+ ...gular.default.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2848 -> 2848 bytes
+ .../Mplus1p-Regular.default.61,63,65,6B.ttf        | Bin 2248 -> 2248 bytes
+ ...gular.default.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 3144 -> 3144 bytes
+ .../japanese/Mplus1p-Regular.default.660E.ttf      | Bin 1944 -> 1944 bytes
+ ...plus1p-Regular.drop-hints.1D715,1D7D8,41,42.ttf | Bin 1612 -> 1612 bytes
+ .../japanese/Mplus1p-Regular.drop-hints.25771.ttf  | Bin 1260 -> 1260 bytes
+ ...ar.drop-hints.3042,3044,3046,3048,304A,304B.ttf | Bin 1888 -> 1888 bytes
+ ...ar.drop-hints.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2120 -> 2120 bytes
+ .../Mplus1p-Regular.drop-hints.61,63,65,6B.ttf     | Bin 1520 -> 1520 bytes
+ ...ar.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 2416 -> 2416 bytes
+ .../japanese/Mplus1p-Regular.drop-hints.660E.ttf   | Bin 1216 -> 1216 bytes
+ ...Mplus1p-Regular.keep-gdef.1D715,1D7D8,41,42.ttf | Bin 2340 -> 2340 bytes
+ .../japanese/Mplus1p-Regular.keep-gdef.25771.ttf   | Bin 1988 -> 1988 bytes
+ ...lar.keep-gdef.3042,3044,3046,3048,304A,304B.ttf | Bin 2616 -> 2616 bytes
+ ...lar.keep-gdef.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2848 -> 2848 bytes
+ .../Mplus1p-Regular.keep-gdef.61,63,65,6B.ttf      | Bin 2248 -> 2248 bytes
+ ...lar.keep-gdef.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 3144 -> 3144 bytes
+ .../japanese/Mplus1p-Regular.keep-gdef.660E.ttf    | Bin 1944 -> 1944 bytes
+ ...ules_f1.notdef-outline-retain-gids.41,42,43.otf | Bin 2016 -> 2016 bytes
+ ...ubrules_f1.notdef-outline-retain-gids.41,42.otf | Bin 1912 -> 1912 bytes
+ ...ubrules_f1.notdef-outline-retain-gids.41,43.otf | Bin 2020 -> 2020 bytes
+ ...e_subrules_f1.notdef-outline-retain-gids.41.otf | Bin 1896 -> 1896 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3876 -> 3876 bytes
+ ...ultiple_subrules_f1.notdef-outline.41,42,43.otf | Bin 1304 -> 1304 bytes
+ ...1_multiple_subrules_f1.notdef-outline.41,42.otf | Bin 1204 -> 1204 bytes
+ ...1_multiple_subrules_f1.notdef-outline.41,43.otf | Bin 1300 -> 1300 bytes
+ ...ext1_multiple_subrules_f1.notdef-outline.41.otf | Bin 1192 -> 1192 bytes
+ ...ules_f1.notdef-outline.retain-all-codepoint.otf | Bin 3876 -> 3876 bytes
+ ...ules_f1.notdef-outline-retain-gids.41,42,43.otf | Bin 2016 -> 2016 bytes
+ ...ubrules_f1.notdef-outline-retain-gids.41,42.otf | Bin 1912 -> 1912 bytes
+ ...ubrules_f1.notdef-outline-retain-gids.41,43.otf | Bin 2020 -> 2020 bytes
+ ...e_subrules_f1.notdef-outline-retain-gids.41.otf | Bin 1896 -> 1896 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3876 -> 3876 bytes
+ ...ultiple_subrules_f1.notdef-outline.41,42,43.otf | Bin 1304 -> 1304 bytes
+ ...2_multiple_subrules_f1.notdef-outline.41,42.otf | Bin 1204 -> 1204 bytes
+ ...2_multiple_subrules_f1.notdef-outline.41,43.otf | Bin 1300 -> 1300 bytes
+ ...ext2_multiple_subrules_f1.notdef-outline.41.otf | Bin 1192 -> 1192 bytes
+ ...ules_f1.notdef-outline.retain-all-codepoint.otf | Bin 3876 -> 3876 bytes
+ ...mple_f1.notdef-outline-retain-gids.41,42,43.otf | Bin 1996 -> 1996 bytes
+ ..._simple_f1.notdef-outline-retain-gids.41,42.otf | Bin 1892 -> 1892 bytes
+ ..._simple_f1.notdef-outline-retain-gids.41,43.otf | Bin 2000 -> 2000 bytes
+ ...xt3_simple_f1.notdef-outline-retain-gids.41.otf | Bin 1876 -> 1876 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3856 -> 3856 bytes
+ ..._context3_simple_f1.notdef-outline.41,42,43.otf | Bin 1284 -> 1284 bytes
+ ...pos_context3_simple_f1.notdef-outline.41,42.otf | Bin 1184 -> 1184 bytes
+ ...pos_context3_simple_f1.notdef-outline.41,43.otf | Bin 1280 -> 1280 bytes
+ .../gpos_context3_simple_f1.notdef-outline.41.otf  | Bin 1172 -> 1172 bytes
+ ...mple_f1.notdef-outline.retain-all-codepoint.otf | Bin 3856 -> 3856 bytes
+ .../IndicTestJalandhar-Regular.default.A01.ttf     | Bin 4172 -> 4172 bytes
+ .../IndicTestJalandhar-Regular.default.A05,A06.ttf | Bin 4748 -> 4748 bytes
+ .../IndicTestJalandhar-Regular.default.A07,A1B.ttf | Bin 4720 -> 4720 bytes
+ ...andhar-Regular.default.retain-all-codepoint.ttf | Bin 49248 -> 49248 bytes
+ .../IndicTestJalandhar-Regular.drop-hints.A01.ttf  | Bin 1032 -> 1032 bytes
+ ...dicTestJalandhar-Regular.drop-hints.A05,A06.ttf | Bin 1340 -> 1340 bytes
+ ...dicTestJalandhar-Regular.drop-hints.A07,A1B.ttf | Bin 1340 -> 1340 bytes
+ ...har-Regular.drop-hints.retain-all-codepoint.ttf | Bin 29468 -> 29468 bytes
+ .../IndicTestJalandhar-Regular.keep-gdef.A01.ttf   | Bin 4172 -> 4172 bytes
+ ...ndicTestJalandhar-Regular.keep-gdef.A05,A06.ttf | Bin 4748 -> 4748 bytes
+ ...ndicTestJalandhar-Regular.keep-gdef.A07,A1B.ttf | Bin 4720 -> 4720 bytes
+ ...dhar-Regular.keep-gdef.retain-all-codepoint.ttf | Bin 49248 -> 49248 bytes
+ ...otype.notdef-outline-drop-hints.41,42,43,57.otf | Bin 5272 -> 5272 bytes
+ ...rototype.notdef-outline-drop-hints.41,42,43.otf | Bin 4740 -> 4740 bytes
+ ...VFPrototype.notdef-outline-drop-hints.41,42.otf | Bin 4264 -> 4264 bytes
+ ...rototype.notdef-outline-drop-hints.41,56,57.otf | Bin 4408 -> 4408 bytes
+ ...obeVFPrototype.notdef-outline-drop-hints.41.otf | Bin 3560 -> 3560 bytes
+ ...VFPrototype.notdef-outline-drop-hints.42,57.otf | Bin 4396 -> 4396 bytes
+ ...AdobeVFPrototype.notdef-outline.41,42,43,57.otf | Bin 5460 -> 5460 bytes
+ .../AdobeVFPrototype.notdef-outline.41,42,43.otf   | Bin 4928 -> 4928 bytes
+ .../AdobeVFPrototype.notdef-outline.41,42.otf      | Bin 4448 -> 4448 bytes
+ .../AdobeVFPrototype.notdef-outline.41,56,57.otf   | Bin 4596 -> 4596 bytes
+ .../AdobeVFPrototype.notdef-outline.41.otf         | Bin 3748 -> 3748 bytes
+ .../AdobeVFPrototype.notdef-outline.42,57.otf      | Bin 4580 -> 4580 bytes
+ .../Roboto-Regular.default.1E00,303.ttf            | Bin 2472 -> 2472 bytes
+ .../layout.gdef/Roboto-Regular.default.303.ttf     | Bin 2076 -> 2076 bytes
+ .../Roboto-Regular.default.309,20,30F.ttf          | Bin 2148 -> 2148 bytes
+ .../layout.gdef/Roboto-Regular.default.323.ttf     | Bin 1968 -> 1968 bytes
+ .../Roboto-Regular.default.41,42,43.ttf            | Bin 2532 -> 2532 bytes
+ .../Roboto-Regular.drop-hints.1E00,303.ttf         | Bin 1328 -> 1328 bytes
+ .../layout.gdef/Roboto-Regular.drop-hints.303.ttf  | Bin 1072 -> 1072 bytes
+ .../Roboto-Regular.drop-hints.309,20,30F.ttf       | Bin 1108 -> 1108 bytes
+ .../layout.gdef/Roboto-Regular.drop-hints.323.ttf  | Bin 1016 -> 1016 bytes
+ .../Roboto-Regular.drop-hints.41,42,43.ttf         | Bin 1348 -> 1348 bytes
+ .../Roboto-Regular.keep-gdef-gpos.1E00,303.ttf     | Bin 2472 -> 2472 bytes
+ .../Roboto-Regular.keep-gdef-gpos.303.ttf          | Bin 2076 -> 2076 bytes
+ .../Roboto-Regular.keep-gdef-gpos.309,20,30F.ttf   | Bin 2148 -> 2148 bytes
+ .../Roboto-Regular.keep-gdef-gpos.323.ttf          | Bin 1968 -> 1968 bytes
+ .../Roboto-Regular.keep-gdef-gpos.41,42,43.ttf     | Bin 2532 -> 2532 bytes
+ ...os1_2_font.notdef-outline-retain-gids.41,43.otf | Bin 1980 -> 1980 bytes
+ ...os1_2_font.notdef-outline-retain-gids.41,46.otf | Bin 2140 -> 2140 bytes
+ .../gpos1_2_font.notdef-outline-retain-gids.41.otf | Bin 1856 -> 1856 bytes
+ ...os1_2_font.notdef-outline-retain-gids.42,44.otf | Bin 1964 -> 1964 bytes
+ ...os1_2_font.notdef-outline-retain-gids.43,46.otf | Bin 2004 -> 2004 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3780 -> 3780 bytes
+ .../gpos1_2_font.notdef-outline.41,43.otf          | Bin 1260 -> 1260 bytes
+ .../gpos1_2_font.notdef-outline.41,46.otf          | Bin 1388 -> 1388 bytes
+ .../layout.gpos/gpos1_2_font.notdef-outline.41.otf | Bin 1152 -> 1152 bytes
+ .../gpos1_2_font.notdef-outline.42,44.otf          | Bin 1232 -> 1232 bytes
+ .../gpos1_2_font.notdef-outline.43,46.otf          | Bin 1252 -> 1252 bytes
+ ..._2_font.notdef-outline.retain-all-codepoint.otf | Bin 3780 -> 3780 bytes
+ ...1_font7.notdef-outline-retain-gids.21,23,25.otf | Bin 1656 -> 1656 bytes
+ ...s2_1_font7.notdef-outline-retain-gids.21,23.otf | Bin 1532 -> 1532 bytes
+ ...s2_1_font7.notdef-outline-retain-gids.2E,23.otf | Bin 1912 -> 1912 bytes
+ ...1_font7.notdef-outline-retain-gids.41,42,43.otf | Bin 1976 -> 1976 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3780 -> 3780 bytes
+ .../gpos2_1_font7.notdef-outline.21,23,25.otf      | Bin 1312 -> 1312 bytes
+ .../gpos2_1_font7.notdef-outline.21,23.otf         | Bin 1204 -> 1204 bytes
+ .../gpos2_1_font7.notdef-outline.2E,23.otf         | Bin 1476 -> 1476 bytes
+ .../gpos2_1_font7.notdef-outline.41,42,43.otf      | Bin 1264 -> 1264 bytes
+ ...1_font7.notdef-outline.retain-all-codepoint.otf | Bin 3780 -> 3780 bytes
+ ...2_font5.notdef-outline-retain-gids.21,23,25.otf | Bin 1656 -> 1656 bytes
+ ...s2_2_font5.notdef-outline-retain-gids.21,23.otf | Bin 1532 -> 1532 bytes
+ ...s2_2_font5.notdef-outline-retain-gids.2E,23.otf | Bin 1912 -> 1912 bytes
+ ...2_font5.notdef-outline-retain-gids.41,42,43.otf | Bin 1976 -> 1976 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3780 -> 3780 bytes
+ .../gpos2_2_font5.notdef-outline.21,23,25.otf      | Bin 1312 -> 1312 bytes
+ .../gpos2_2_font5.notdef-outline.21,23.otf         | Bin 1204 -> 1204 bytes
+ .../gpos2_2_font5.notdef-outline.2E,23.otf         | Bin 1476 -> 1476 bytes
+ .../gpos2_2_font5.notdef-outline.41,42,43.otf      | Bin 1264 -> 1264 bytes
+ ...2_font5.notdef-outline.retain-all-codepoint.otf | Bin 3780 -> 3780 bytes
+ ...pos3_font3.notdef-outline-retain-gids.28,29.otf | Bin 1616 -> 1616 bytes
+ ...pos3_font3.notdef-outline-retain-gids.28,2B.otf | Bin 1752 -> 1752 bytes
+ ...pos3_font3.notdef-outline-retain-gids.29,2B.otf | Bin 1664 -> 1664 bytes
+ ...3_font3.notdef-outline-retain-gids.41,42,43.otf | Bin 1972 -> 1972 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3812 -> 3812 bytes
+ .../gpos3_font3.notdef-outline.28,29.otf           | Bin 1224 -> 1224 bytes
+ .../gpos3_font3.notdef-outline.28,2B.otf           | Bin 1344 -> 1344 bytes
+ .../gpos3_font3.notdef-outline.29,2B.otf           | Bin 1256 -> 1256 bytes
+ .../gpos3_font3.notdef-outline.41,42,43.otf        | Bin 1260 -> 1260 bytes
+ ...3_font3.notdef-outline.retain-all-codepoint.otf | Bin 3812 -> 3812 bytes
+ ...rs_1.notdef-outline-retain-gids.41,42,43,44.otf | Bin 2208 -> 2208 bytes
+ ...rs_1.notdef-outline-retain-gids.41,42,43,45.otf | Bin 2220 -> 2220 bytes
+ ...chors_1.notdef-outline-retain-gids.41,42,43.otf | Bin 1996 -> 1996 bytes
+ ..._anchors_1.notdef-outline-retain-gids.41,42.otf | Bin 1892 -> 1892 bytes
+ ...1.notdef-outline-retain-gids.41,43,44,45,46.otf | Bin 2560 -> 2560 bytes
+ ...chors_1.notdef-outline-retain-gids.41,43,44.otf | Bin 2216 -> 2216 bytes
+ ...chors_1.notdef-outline-retain-gids.41,43,45.otf | Bin 2224 -> 2224 bytes
+ ..._anchors_1.notdef-outline-retain-gids.41,43.otf | Bin 2000 -> 2000 bytes
+ ...ple_anchors_1.notdef-outline-retain-gids.41.otf | Bin 1876 -> 1876 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3844 -> 3844 bytes
+ ...ltiple_anchors_1.notdef-outline.41,42,43,44.otf | Bin 1492 -> 1492 bytes
+ ...ltiple_anchors_1.notdef-outline.41,42,43,45.otf | Bin 1488 -> 1488 bytes
+ ..._multiple_anchors_1.notdef-outline.41,42,43.otf | Bin 1284 -> 1284 bytes
+ ...os4_multiple_anchors_1.notdef-outline.41,42.otf | Bin 1184 -> 1184 bytes
+ ...ple_anchors_1.notdef-outline.41,43,44,45,46.otf | Bin 1832 -> 1832 bytes
+ ..._multiple_anchors_1.notdef-outline.41,43,44.otf | Bin 1492 -> 1492 bytes
+ ..._multiple_anchors_1.notdef-outline.41,43,45.otf | Bin 1488 -> 1488 bytes
+ ...os4_multiple_anchors_1.notdef-outline.41,43.otf | Bin 1280 -> 1280 bytes
+ .../gpos4_multiple_anchors_1.notdef-outline.41.otf | Bin 1172 -> 1172 bytes
+ ...chors_1.notdef-outline.retain-all-codepoint.otf | Bin 3844 -> 3844 bytes
+ ...ont1.notdef-outline-retain-gids.41,42,43,44.otf | Bin 2224 -> 2224 bytes
+ ...ont1.notdef-outline-retain-gids.41,42,43,45.otf | Bin 2236 -> 2236 bytes
+ ...5_font1.notdef-outline-retain-gids.41,42,43.otf | Bin 2012 -> 2012 bytes
+ ...5_font1.notdef-outline-retain-gids.41,42,44.otf | Bin 2144 -> 2144 bytes
+ ...5_font1.notdef-outline-retain-gids.41,42,45.otf | Bin 2144 -> 2144 bytes
+ ...pos5_font1.notdef-outline-retain-gids.41,42.otf | Bin 1908 -> 1908 bytes
+ ...pos5_font1.notdef-outline-retain-gids.41,43.otf | Bin 2016 -> 2016 bytes
+ .../gpos5_font1.notdef-outline-retain-gids.41.otf  | Bin 1892 -> 1892 bytes
+ .../gpos5_font1.notdef-outline-retain-gids.42.otf  | Bin 1764 -> 1764 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3860 -> 3860 bytes
+ .../gpos5_font1.notdef-outline.41,42,43,44.otf     | Bin 1508 -> 1508 bytes
+ .../gpos5_font1.notdef-outline.41,42,43,45.otf     | Bin 1504 -> 1504 bytes
+ .../gpos5_font1.notdef-outline.41,42,43.otf        | Bin 1300 -> 1300 bytes
+ .../gpos5_font1.notdef-outline.41,42,44.otf        | Bin 1420 -> 1420 bytes
+ .../gpos5_font1.notdef-outline.41,42,45.otf        | Bin 1408 -> 1408 bytes
+ .../gpos5_font1.notdef-outline.41,42.otf           | Bin 1200 -> 1200 bytes
+ .../gpos5_font1.notdef-outline.41,43.otf           | Bin 1296 -> 1296 bytes
+ .../layout.gpos5/gpos5_font1.notdef-outline.41.otf | Bin 1188 -> 1188 bytes
+ .../layout.gpos5/gpos5_font1.notdef-outline.42.otf | Bin 1048 -> 1048 bytes
+ ...5_font1.notdef-outline.retain-all-codepoint.otf | Bin 3860 -> 3860 bytes
+ ...ont1.notdef-outline-retain-gids.41,42,43,44.otf | Bin 2184 -> 2184 bytes
+ ...ont1.notdef-outline-retain-gids.41,42,43,45.otf | Bin 2196 -> 2196 bytes
+ ...6_font1.notdef-outline-retain-gids.41,42,43.otf | Bin 1972 -> 1972 bytes
+ ...pos6_font1.notdef-outline-retain-gids.41,42.otf | Bin 1868 -> 1868 bytes
+ ...1.notdef-outline-retain-gids.41,43,44,45,46.otf | Bin 2536 -> 2536 bytes
+ ...6_font1.notdef-outline-retain-gids.41,43,44.otf | Bin 2192 -> 2192 bytes
+ ...6_font1.notdef-outline-retain-gids.41,43,45.otf | Bin 2200 -> 2200 bytes
+ ...pos6_font1.notdef-outline-retain-gids.41,43.otf | Bin 1976 -> 1976 bytes
+ .../gpos6_font1.notdef-outline-retain-gids.41.otf  | Bin 1852 -> 1852 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3820 -> 3820 bytes
+ .../gpos6_font1.notdef-outline.41,42,43,44.otf     | Bin 1468 -> 1468 bytes
+ .../gpos6_font1.notdef-outline.41,42,43,45.otf     | Bin 1464 -> 1464 bytes
+ .../gpos6_font1.notdef-outline.41,42,43.otf        | Bin 1260 -> 1260 bytes
+ .../gpos6_font1.notdef-outline.41,42.otf           | Bin 1160 -> 1160 bytes
+ .../gpos6_font1.notdef-outline.41,43,44,45,46.otf  | Bin 1808 -> 1808 bytes
+ .../gpos6_font1.notdef-outline.41,43,44.otf        | Bin 1468 -> 1468 bytes
+ .../gpos6_font1.notdef-outline.41,43,45.otf        | Bin 1464 -> 1464 bytes
+ .../gpos6_font1.notdef-outline.41,43.otf           | Bin 1256 -> 1256 bytes
+ .../layout.gpos6/gpos6_font1.notdef-outline.41.otf | Bin 1148 -> 1148 bytes
+ ...6_font1.notdef-outline.retain-all-codepoint.otf | Bin 3820 -> 3820 bytes
+ ...ular.default.627,644,623,62D,644,627,645,2E.ttf | Bin 12592 -> 12592 bytes
+ .../Amiri-Regular.default.627,644,62D,628.ttf      | Bin 9924 -> 9924 bytes
+ .../Amiri-Regular.default.627,644.ttf              | Bin 4112 -> 4112 bytes
+ ...-Regular.default.633,645,627,621,20,644,627.ttf | Bin 9424 -> 9424 bytes
+ .../Amiri-Regular.default.63A,64A,631.ttf          | Bin 7256 -> 7256 bytes
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttf | Bin 47920 -> 47920 bytes
+ .../Amiri-Regular.retain-gids.627,644,62D,628.ttf  | Bin 42572 -> 42572 bytes
+ .../Amiri-Regular.retain-gids.627,644.ttf          | Bin 36640 -> 36640 bytes
+ ...ular.retain-gids.633,645,627,621,20,644,627.ttf | Bin 45816 -> 45816 bytes
+ .../Amiri-Regular.retain-gids.63A,64A,631.ttf      | Bin 37920 -> 37920 bytes
+ ...s_f1.notdef-outline-retain-gids.30,31,32,33.otf | Bin 2292 -> 2292 bytes
+ ...ules_f1.notdef-outline-retain-gids.41,42,43.otf | Bin 2020 -> 2020 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3880 -> 3880 bytes
+ ...iple_subrules_f1.notdef-outline.30,31,32,33.otf | Bin 1820 -> 1820 bytes
+ ...ultiple_subrules_f1.notdef-outline.41,42,43.otf | Bin 1308 -> 1308 bytes
+ ...ules_f1.notdef-outline.retain-all-codepoint.otf | Bin 3880 -> 3880 bytes
+ ...s_f1.notdef-outline-retain-gids.30,31,32,33.otf | Bin 2292 -> 2292 bytes
+ ...ules_f1.notdef-outline-retain-gids.41,42,43.otf | Bin 2020 -> 2020 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3880 -> 3880 bytes
+ ...iple_subrules_f1.notdef-outline.30,31,32,33.otf | Bin 1820 -> 1820 bytes
+ ...ultiple_subrules_f1.notdef-outline.41,42,43.otf | Bin 1308 -> 1308 bytes
+ ...ules_f1.notdef-outline.retain-all-codepoint.otf | Bin 3880 -> 3880 bytes
+ ...e_f1.notdef-outline-retain-gids.30,31,32,33.otf | Bin 2268 -> 2268 bytes
+ ...mple_f1.notdef-outline-retain-gids.41,42,43.otf | Bin 1996 -> 1996 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3856 -> 3856 bytes
+ ...ining3_simple_f1.notdef-outline.30,31,32,33.otf | Bin 1796 -> 1796 bytes
+ ...chaining3_simple_f1.notdef-outline.41,42,43.otf | Bin 1284 -> 1284 bytes
+ ...mple_f1.notdef-outline.retain-all-codepoint.otf | Bin 3856 -> 3856 bytes
+ ...pos9_font2.notdef-outline-retain-gids.41,42.otf | Bin 1868 -> 1868 bytes
+ .../gpos9_font2.notdef-outline-retain-gids.41.otf  | Bin 1852 -> 1852 bytes
+ .../gpos9_font2.notdef-outline-retain-gids.42.otf  | Bin 1724 -> 1724 bytes
+ .../gpos9_font2.notdef-outline.41,42.otf           | Bin 1160 -> 1160 bytes
+ .../layout.gpos9/gpos9_font2.notdef-outline.41.otf | Bin 1148 -> 1148 bytes
+ .../layout.gpos9/gpos9_font2.notdef-outline.42.otf | Bin 1008 -> 1008 bytes
+ ...ub_alternate_substitution.default.53A9,53F1.otf | Bin 4316 -> 4316 bytes
+ .../gsub_alternate_substitution.default.53A9.otf   | Bin 3884 -> 3884 bytes
+ .../gsub_alternate_substitution.default.53F1.otf   | Bin 2440 -> 2440 bytes
+ ...e_substitution.default.retain-all-codepoint.otf | Bin 5984 -> 5984 bytes
+ ...lternate_substitution.retain-gids.53A9,53F1.otf | Bin 4440 -> 4440 bytes
+ ...sub_alternate_substitution.retain-gids.53A9.otf | Bin 4036 -> 4036 bytes
+ ...sub_alternate_substitution.retain-gids.53F1.otf | Bin 2632 -> 2632 bytes
+ ...bstitution.retain-gids.retain-all-codepoint.otf | Bin 6076 -> 6076 bytes
+ ...ules_f2.notdef-outline-retain-gids.41,42,43.otf | Bin 2028 -> 2028 bytes
+ ...ubrules_f2.notdef-outline-retain-gids.41,42.otf | Bin 1924 -> 1924 bytes
+ ...ubrules_f2.notdef-outline-retain-gids.41,43.otf | Bin 2032 -> 2032 bytes
+ ...e_subrules_f2.notdef-outline-retain-gids.41.otf | Bin 1908 -> 1908 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3888 -> 3888 bytes
+ ...ultiple_subrules_f2.notdef-outline.41,42,43.otf | Bin 1316 -> 1316 bytes
+ ...1_multiple_subrules_f2.notdef-outline.41,42.otf | Bin 1216 -> 1216 bytes
+ ...1_multiple_subrules_f2.notdef-outline.41,43.otf | Bin 1312 -> 1312 bytes
+ ...ext1_multiple_subrules_f2.notdef-outline.41.otf | Bin 1204 -> 1204 bytes
+ ...ules_f2.notdef-outline.retain-all-codepoint.otf | Bin 3888 -> 3888 bytes
+ ...ules_f2.notdef-outline-retain-gids.41,42,43.otf | Bin 2028 -> 2028 bytes
+ ...ubrules_f2.notdef-outline-retain-gids.41,42.otf | Bin 1924 -> 1924 bytes
+ ...ubrules_f2.notdef-outline-retain-gids.41,43.otf | Bin 2032 -> 2032 bytes
+ ...e_subrules_f2.notdef-outline-retain-gids.41.otf | Bin 1908 -> 1908 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3888 -> 3888 bytes
+ ...ultiple_subrules_f2.notdef-outline.41,42,43.otf | Bin 1316 -> 1316 bytes
+ ...2_multiple_subrules_f2.notdef-outline.41,42.otf | Bin 1216 -> 1216 bytes
+ ...2_multiple_subrules_f2.notdef-outline.41,43.otf | Bin 1312 -> 1312 bytes
+ ...ext2_multiple_subrules_f2.notdef-outline.41.otf | Bin 1204 -> 1204 bytes
+ ...ules_f2.notdef-outline.retain-all-codepoint.otf | Bin 3888 -> 3888 bytes
+ ...sive_f1.notdef-outline-retain-gids.41,42,43.otf | Bin 2016 -> 2016 bytes
+ ...cessive_f1.notdef-outline-retain-gids.41,42.otf | Bin 1912 -> 1912 bytes
+ ...cessive_f1.notdef-outline-retain-gids.41,43.otf | Bin 2020 -> 2020 bytes
+ ...successive_f1.notdef-outline-retain-gids.41.otf | Bin 1896 -> 1896 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3876 -> 3876 bytes
+ ...text3_successive_f1.notdef-outline.41,42,43.otf | Bin 1304 -> 1304 bytes
+ ...context3_successive_f1.notdef-outline.41,42.otf | Bin 1204 -> 1204 bytes
+ ...context3_successive_f1.notdef-outline.41,43.otf | Bin 1300 -> 1300 bytes
+ ...ub_context3_successive_f1.notdef-outline.41.otf | Bin 1192 -> 1192 bytes
+ ...sive_f1.notdef-outline.retain-all-codepoint.otf | Bin 3876 -> 3876 bytes
+ ...s_f1.notdef-outline-retain-gids.30,31,32,33.otf | Bin 2304 -> 2304 bytes
+ ...ules_f1.notdef-outline-retain-gids.41,42,43.otf | Bin 2032 -> 2032 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3892 -> 3892 bytes
+ ...iple_subrules_f1.notdef-outline.30,31,32,33.otf | Bin 1832 -> 1832 bytes
+ ...ultiple_subrules_f1.notdef-outline.41,42,43.otf | Bin 1320 -> 1320 bytes
+ ...ules_f1.notdef-outline.retain-all-codepoint.otf | Bin 3892 -> 3892 bytes
+ ...s_f1.notdef-outline-retain-gids.30,31,32,33.otf | Bin 2304 -> 2304 bytes
+ ...ules_f1.notdef-outline-retain-gids.41,42,43.otf | Bin 2032 -> 2032 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3892 -> 3892 bytes
+ ...iple_subrules_f1.notdef-outline.30,31,32,33.otf | Bin 1832 -> 1832 bytes
+ ...ultiple_subrules_f1.notdef-outline.41,42,43.otf | Bin 1320 -> 1320 bytes
+ ...ules_f1.notdef-outline.retain-all-codepoint.otf | Bin 3892 -> 3892 bytes
+ ...e_f2.notdef-outline-retain-gids.30,31,32,33.otf | Bin 2280 -> 2280 bytes
+ ...mple_f2.notdef-outline-retain-gids.41,42,43.otf | Bin 2008 -> 2008 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3868 -> 3868 bytes
+ ...ining3_simple_f2.notdef-outline.30,31,32,33.otf | Bin 1808 -> 1808 bytes
+ ...chaining3_simple_f2.notdef-outline.41,42,43.otf | Bin 1296 -> 1296 bytes
+ ...mple_f2.notdef-outline.retain-all-codepoint.otf | Bin 3868 -> 3868 bytes
+ ...line-retain-gids.41,42,43,44,45,46,47,48,49.otf | Bin 2916 -> 2916 bytes
+ ...ef-outline-retain-gids.41,42,43,44,45,46,47.otf | Bin 2624 -> 2624 bytes
+ ...ef-outline-retain-gids.41,42,43,44,45,46,4D.otf | Bin 2668 -> 2668 bytes
+ ...ef-outline-retain-gids.41,42,43,44,45,46,51.otf | Bin 2792 -> 2792 bytes
+ ...otdef-outline-retain-gids.41,42,43,44,45,46.otf | Bin 2564 -> 2564 bytes
+ ...created.notdef-outline-retain-gids.41,42,43.otf | Bin 2008 -> 2008 bytes
+ ...ually_created.notdef-outline-retain-gids.41.otf | Bin 1888 -> 1888 bytes
+ ...ually_created.notdef-outline-retain-gids.61.otf | Bin 2292 -> 2292 bytes
+ ...ef-outline-retain-gids.retain-all-codepoint.otf | Bin 3868 -> 3868 bytes
+ ...d.notdef-outline.41,42,43,44,45,46,47,48,49.otf | Bin 2188 -> 2188 bytes
+ ...created.notdef-outline.41,42,43,44,45,46,47.otf | Bin 1904 -> 1904 bytes
+ ...created.notdef-outline.41,42,43,44,45,46,4D.otf | Bin 1868 -> 1868 bytes
+ ...created.notdef-outline.41,42,43,44,45,46,51.otf | Bin 1948 -> 1948 bytes
+ ...ly_created.notdef-outline.41,42,43,44,45,46.otf | Bin 1844 -> 1844 bytes
+ ...b8_manually_created.notdef-outline.41,42,43.otf | Bin 1296 -> 1296 bytes
+ .../gsub8_manually_created.notdef-outline.41.otf   | Bin 1184 -> 1184 bytes
+ .../gsub8_manually_created.notdef-outline.61.otf   | Bin 1236 -> 1236 bytes
+ ...created.notdef-outline.retain-all-codepoint.otf | Bin 3868 -> 3868 bytes
+ .../expected/layout.khmer/Khmer.default.1780.ttf   | Bin 4200 -> 4200 bytes
+ ...ult.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf | Bin 6408 -> 6408 bytes
+ .../expected/layout.khmer/Khmer.default.31.ttf     | Bin 4136 -> 4136 bytes
+ .../layout.khmer/Khmer.retain-gids.1780.ttf        | Bin 4460 -> 4460 bytes
+ ...ids.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf | Bin 7844 -> 7844 bytes
+ .../expected/layout.khmer/Khmer.retain-gids.31.ttf | Bin 4252 -> 4252 bytes
+ ...Bold.default.627,644,623,62D,644,627,645,2E.ttf | Bin 11388 -> 11388 bytes
+ ...toNastaliqUrdu-Bold.default.627,644,62D,628.ttf | Bin 17688 -> 17688 bytes
+ .../NotoNastaliqUrdu-Bold.default.627,644.ttf      | Bin 3520 -> 3520 bytes
+ ...rdu-Bold.default.633,645,627,621,20,644,627.ttf | Bin 12380 -> 12380 bytes
+ .../NotoNastaliqUrdu-Bold.default.63A,64A,631.ttf  | Bin 19380 -> 19380 bytes
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttf | Bin 18224 -> 18224 bytes
+ ...staliqUrdu-Bold.retain-gids.627,644,62D,628.ttf | Bin 23748 -> 23748 bytes
+ .../NotoNastaliqUrdu-Bold.retain-gids.627,644.ttf  | Bin 9164 -> 9164 bytes
+ ...Bold.retain-gids.633,645,627,621,20,644,627.ttf | Bin 18184 -> 18184 bytes
+ ...toNastaliqUrdu-Bold.retain-gids.63A,64A,631.ttf | Bin 25432 -> 25432 bytes
+ .../Roboto-Regular.smallcaps.default.41,42,43.ttf  | Bin 2424 -> 2424 bytes
+ .../Roboto-Regular.smallcaps.default.41,43.ttf     | Bin 2232 -> 2232 bytes
+ .../layout/Roboto-Regular.smallcaps.default.41.ttf | Bin 2044 -> 2044 bytes
+ .../layout/Roboto-Regular.smallcaps.default.43.ttf | Bin 2076 -> 2076 bytes
+ .../Roboto-Regular.smallcaps.default.CA,CB.ttf     | Bin 2348 -> 2348 bytes
+ ...boto-Regular.smallcaps.retain-gids.41,42,43.ttf | Bin 2676 -> 2676 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.41,43.ttf | Bin 2496 -> 2496 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.41.ttf    | Bin 2296 -> 2296 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.43.ttf    | Bin 2344 -> 2344 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.CA,CB.ttf | Bin 6436 -> 6436 bytes
+ .../data/expected/sbix/sbix.default.58,59.ttf      | Bin 193528 -> 193528 bytes
+ test/subset/data/expected/sbix/sbix.default.58.ttf | Bin 121168 -> 121168 bytes
+ test/subset/data/expected/sbix/sbix.default.59.ttf | Bin 89364 -> 89364 bytes
+ .../sbix/sbix.drop-hints-retain-gids.58,59.ttf     | Bin 193528 -> 193528 bytes
+ .../sbix/sbix.drop-hints-retain-gids.58.ttf        | Bin 121168 -> 121168 bytes
+ .../sbix/sbix.drop-hints-retain-gids.59.ttf        | Bin 89404 -> 89404 bytes
+ .../data/expected/sbix/sbix.drop-hints.58,59.ttf   | Bin 193528 -> 193528 bytes
+ .../data/expected/sbix/sbix.drop-hints.58.ttf      | Bin 121168 -> 121168 bytes
+ .../data/expected/sbix/sbix.drop-hints.59.ttf      | Bin 89364 -> 89364 bytes
+ .../data/expected/sbix/sbix.retain-gids.58,59.ttf  | Bin 193528 -> 193528 bytes
+ .../data/expected/sbix/sbix.retain-gids.58.ttf     | Bin 121168 -> 121168 bytes
+ .../data/expected/sbix/sbix.retain-gids.59.ttf     | Bin 89404 -> 89404 bytes
+ .../variable/Fraunces.default.26,66,69,124,125.ttf | Bin 15856 -> 15856 bytes
+ .../data/expected/variable/Fraunces.default.61.ttf | Bin 4232 -> 4232 bytes
+ 942 files changed, 21 insertions(+), 32 deletions(-)
+
+commit dea0fe5717a0ce72484bf6b827f5a871f816d4a2
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Aug 4 16:36:20 2021 -0700
+
+    [subset] discard extra copies of a table in face builder.
+    
+    Fixes #2361. Stores tables in the builder in a hashmap so you end up with at most one copy of each table. Table serialization order is now based on tag sort order instead of order of insertion into the builder.
+
+ src/hb-face.cc                                     |  44 +++++++++++++--------
+ src/hb-open-file.hh                                |  23 ++++++-----
+ .../Comfortaa-Regular-new.default.61,62,63.ttf     | Bin 7060 -> 7060 bytes
+ .../basics/Comfortaa-Regular-new.default.61,63.ttf | Bin 6692 -> 6692 bytes
+ .../basics/Comfortaa-Regular-new.default.61.ttf    | Bin 6328 -> 6328 bytes
+ .../basics/Comfortaa-Regular-new.default.62.ttf    | Bin 6200 -> 6200 bytes
+ .../basics/Comfortaa-Regular-new.default.63.ttf    | Bin 6256 -> 6256 bytes
+ ...aa-Regular-new.default.retain-all-codepoint.ttf | Bin 222756 -> 222756 bytes
+ ...Regular-new.drop-hints-retain-gids.61,62,63.ttf | Bin 4608 -> 4608 bytes
+ ...aa-Regular-new.drop-hints-retain-gids.61,63.ttf | Bin 4312 -> 4312 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.61.ttf | Bin 3724 -> 3724 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.62.ttf | Bin 3900 -> 3900 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.63.ttf | Bin 3972 -> 3972 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 191632 -> 191632 bytes
+ .../Comfortaa-Regular-new.drop-hints.61,62,63.ttf  | Bin 2600 -> 2600 bytes
+ .../Comfortaa-Regular-new.drop-hints.61,63.ttf     | Bin 2296 -> 2296 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.61.ttf | Bin 1976 -> 1976 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.62.ttf | Bin 1900 -> 1900 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.63.ttf | Bin 1968 -> 1968 bytes
+ ...Regular-new.drop-hints.retain-all-codepoint.ttf | Bin 191584 -> 191584 bytes
+ .../basics/Comfortaa-Regular-new.gids.61,62,63.ttf | Bin 7988 -> 7988 bytes
+ .../basics/Comfortaa-Regular-new.gids.61,63.ttf    | Bin 7628 -> 7628 bytes
+ .../basics/Comfortaa-Regular-new.gids.61.ttf       | Bin 7256 -> 7256 bytes
+ .../basics/Comfortaa-Regular-new.gids.62.ttf       | Bin 7184 -> 7184 bytes
+ .../basics/Comfortaa-Regular-new.gids.63.ttf       | Bin 7180 -> 7180 bytes
+ ...ortaa-Regular-new.gids.retain-all-codepoint.ttf | Bin 222756 -> 222756 bytes
+ .../Comfortaa-Regular-new.glyph-names.61,62,63.ttf | Bin 7072 -> 7072 bytes
+ .../Comfortaa-Regular-new.glyph-names.61,63.ttf    | Bin 6700 -> 6700 bytes
+ .../Comfortaa-Regular-new.glyph-names.61.ttf       | Bin 6336 -> 6336 bytes
+ .../Comfortaa-Regular-new.glyph-names.62.ttf       | Bin 6208 -> 6208 bytes
+ .../Comfortaa-Regular-new.glyph-names.63.ttf       | Bin 6264 -> 6264 bytes
+ ...egular-new.glyph-names.retain-all-codepoint.ttf | Bin 229748 -> 229748 bytes
+ ...gular-new.keep-all-layout-features.61,62,63.ttf | Bin 7508 -> 7508 bytes
+ ...-Regular-new.keep-all-layout-features.61,63.ttf | Bin 7144 -> 7144 bytes
+ ...taa-Regular-new.keep-all-layout-features.61.ttf | Bin 6776 -> 6776 bytes
+ ...taa-Regular-new.keep-all-layout-features.62.ttf | Bin 6200 -> 6200 bytes
+ ...taa-Regular-new.keep-all-layout-features.63.ttf | Bin 6256 -> 6256 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttf | Bin 223452 -> 223452 bytes
+ ...fortaa-Regular-new.layout-features.61,62,63.ttf | Bin 7060 -> 7060 bytes
+ ...Comfortaa-Regular-new.layout-features.61,63.ttf | Bin 6692 -> 6692 bytes
+ .../Comfortaa-Regular-new.layout-features.61.ttf   | Bin 6328 -> 6328 bytes
+ .../Comfortaa-Regular-new.layout-features.62.ttf   | Bin 6200 -> 6200 bytes
+ .../Comfortaa-Regular-new.layout-features.63.ttf   | Bin 6256 -> 6256 bytes
+ ...ar-new.layout-features.retain-all-codepoint.ttf | Bin 220948 -> 220948 bytes
+ .../Comfortaa-Regular-new.name-ids.61,62,63.ttf    | Bin 6800 -> 6800 bytes
+ .../Comfortaa-Regular-new.name-ids.61,63.ttf       | Bin 6432 -> 6432 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.61.ttf   | Bin 6068 -> 6068 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.62.ttf   | Bin 5940 -> 5940 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.63.ttf   | Bin 5996 -> 5996 bytes
+ ...a-Regular-new.name-ids.retain-all-codepoint.ttf | Bin 222496 -> 222496 bytes
+ ...mfortaa-Regular-new.name-languages.61,62,63.ttf | Bin 7060 -> 7060 bytes
+ .../Comfortaa-Regular-new.name-languages.61,63.ttf | Bin 6692 -> 6692 bytes
+ .../Comfortaa-Regular-new.name-languages.61.ttf    | Bin 6328 -> 6328 bytes
+ .../Comfortaa-Regular-new.name-languages.62.ttf    | Bin 6200 -> 6200 bytes
+ .../Comfortaa-Regular-new.name-languages.63.ttf    | Bin 6256 -> 6256 bytes
+ ...lar-new.name-languages.retain-all-codepoint.ttf | Bin 222756 -> 222756 bytes
+ .../Comfortaa-Regular-new.name-legacy.61,62,63.ttf | Bin 7060 -> 7060 bytes
+ .../Comfortaa-Regular-new.name-legacy.61,63.ttf    | Bin 6692 -> 6692 bytes
+ .../Comfortaa-Regular-new.name-legacy.61.ttf       | Bin 6328 -> 6328 bytes
+ .../Comfortaa-Regular-new.name-legacy.62.ttf       | Bin 6200 -> 6200 bytes
+ .../Comfortaa-Regular-new.name-legacy.63.ttf       | Bin 6256 -> 6256 bytes
+ ...egular-new.name-legacy.retain-all-codepoint.ttf | Bin 222756 -> 222756 bytes
+ ...egular-new.no-prune-unicode-ranges.61,62,63.ttf | Bin 7060 -> 7060 bytes
+ ...a-Regular-new.no-prune-unicode-ranges.61,63.ttf | Bin 6692 -> 6692 bytes
+ ...rtaa-Regular-new.no-prune-unicode-ranges.61.ttf | Bin 6328 -> 6328 bytes
+ ...rtaa-Regular-new.no-prune-unicode-ranges.62.ttf | Bin 6200 -> 6200 bytes
+ ...rtaa-Regular-new.no-prune-unicode-ranges.63.ttf | Bin 6256 -> 6256 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf | Bin 222756 -> 222756 bytes
+ ...mfortaa-Regular-new.notdef-outline.61,62,63.ttf | Bin 7652 -> 7652 bytes
+ .../Comfortaa-Regular-new.notdef-outline.61,63.ttf | Bin 7284 -> 7284 bytes
+ .../Comfortaa-Regular-new.notdef-outline.61.ttf    | Bin 6920 -> 6920 bytes
+ .../Comfortaa-Regular-new.notdef-outline.62.ttf    | Bin 6796 -> 6796 bytes
+ .../Comfortaa-Regular-new.notdef-outline.63.ttf    | Bin 6844 -> 6844 bytes
+ ...lar-new.notdef-outline.retain-all-codepoint.ttf | Bin 223352 -> 223352 bytes
+ .../Comfortaa-Regular-new.retain-gids.61,62,63.ttf | Bin 9068 -> 9068 bytes
+ .../Comfortaa-Regular-new.retain-gids.61,63.ttf    | Bin 8708 -> 8708 bytes
+ .../Comfortaa-Regular-new.retain-gids.61.ttf       | Bin 8076 -> 8076 bytes
+ .../Comfortaa-Regular-new.retain-gids.62.ttf       | Bin 8200 -> 8200 bytes
+ .../Comfortaa-Regular-new.retain-gids.63.ttf       | Bin 8260 -> 8260 bytes
+ ...egular-new.retain-gids.retain-all-codepoint.ttf | Bin 222804 -> 222804 bytes
+ ...numMyeongjo-Regular-subset.default.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.default.61,63.ttf | Bin 3580 -> 3580 bytes
+ .../NanumMyeongjo-Regular-subset.default.61.ttf    | Bin 3156 -> 3156 bytes
+ .../NanumMyeongjo-Regular-subset.default.62.ttf    | Bin 3180 -> 3180 bytes
+ .../NanumMyeongjo-Regular-subset.default.63.ttf    | Bin 3048 -> 3048 bytes
+ ...Regular-subset.default.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...ular-subset.drop-hints-retain-gids.61,62,63.ttf | Bin 1452 -> 1452 bytes
+ ...Regular-subset.drop-hints-retain-gids.61,63.ttf | Bin 1284 -> 1284 bytes
+ ...jo-Regular-subset.drop-hints-retain-gids.61.ttf | Bin 1128 -> 1128 bytes
+ ...jo-Regular-subset.drop-hints-retain-gids.62.ttf | Bin 1144 -> 1144 bytes
+ ...jo-Regular-subset.drop-hints-retain-gids.63.ttf | Bin 1116 -> 1116 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 3536 -> 3536 bytes
+ ...Myeongjo-Regular-subset.drop-hints.61,62,63.ttf | Bin 1452 -> 1452 bytes
+ ...numMyeongjo-Regular-subset.drop-hints.61,63.ttf | Bin 1276 -> 1276 bytes
+ .../NanumMyeongjo-Regular-subset.drop-hints.61.ttf | Bin 1128 -> 1128 bytes
+ .../NanumMyeongjo-Regular-subset.drop-hints.62.ttf | Bin 1140 -> 1140 bytes
+ .../NanumMyeongjo-Regular-subset.drop-hints.63.ttf | Bin 1104 -> 1104 bytes
+ ...ular-subset.drop-hints.retain-all-codepoint.ttf | Bin 3536 -> 3536 bytes
+ .../NanumMyeongjo-Regular-subset.gids.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.61,63.ttf    | Bin 4128 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.61.ttf       | Bin 4128 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.62.ttf       | Bin 4128 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.63.ttf       | Bin 4128 -> 4128 bytes
+ ...jo-Regular-subset.gids.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...yeongjo-Regular-subset.glyph-names.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...umMyeongjo-Regular-subset.glyph-names.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.61.ttf | Bin 3156 -> 3156 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.62.ttf | Bin 3180 -> 3180 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.63.ttf | Bin 3048 -> 3048 bytes
+ ...lar-subset.glyph-names.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...ar-subset.keep-all-layout-features.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...gular-subset.keep-all-layout-features.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...-Regular-subset.keep-all-layout-features.61.ttf | Bin 3156 -> 3156 bytes
+ ...-Regular-subset.keep-all-layout-features.62.ttf | Bin 3180 -> 3180 bytes
+ ...-Regular-subset.keep-all-layout-features.63.ttf | Bin 3048 -> 3048 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...gjo-Regular-subset.layout-features.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...eongjo-Regular-subset.layout-features.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...mMyeongjo-Regular-subset.layout-features.61.ttf | Bin 3156 -> 3156 bytes
+ ...mMyeongjo-Regular-subset.layout-features.62.ttf | Bin 3180 -> 3180 bytes
+ ...mMyeongjo-Regular-subset.layout-features.63.ttf | Bin 3048 -> 3048 bytes
+ ...subset.layout-features.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...umMyeongjo-Regular-subset.name-ids.61,62,63.ttf | Bin 3924 -> 3924 bytes
+ ...NanumMyeongjo-Regular-subset.name-ids.61,63.ttf | Bin 3376 -> 3376 bytes
+ .../NanumMyeongjo-Regular-subset.name-ids.61.ttf   | Bin 2952 -> 2952 bytes
+ .../NanumMyeongjo-Regular-subset.name-ids.62.ttf   | Bin 2976 -> 2976 bytes
+ .../NanumMyeongjo-Regular-subset.name-ids.63.ttf   | Bin 2844 -> 2844 bytes
+ ...egular-subset.name-ids.retain-all-codepoint.ttf | Bin 9320 -> 9320 bytes
+ ...ngjo-Regular-subset.name-languages.61,62,63.ttf | Bin 4172 -> 4172 bytes
+ ...yeongjo-Regular-subset.name-languages.61,63.ttf | Bin 3624 -> 3624 bytes
+ ...umMyeongjo-Regular-subset.name-languages.61.ttf | Bin 3200 -> 3200 bytes
+ ...umMyeongjo-Regular-subset.name-languages.62.ttf | Bin 3224 -> 3224 bytes
+ ...umMyeongjo-Regular-subset.name-languages.63.ttf | Bin 3092 -> 3092 bytes
+ ...-subset.name-languages.retain-all-codepoint.ttf | Bin 9568 -> 9568 bytes
+ ...yeongjo-Regular-subset.name-legacy.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...umMyeongjo-Regular-subset.name-legacy.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...NanumMyeongjo-Regular-subset.name-legacy.61.ttf | Bin 3156 -> 3156 bytes
+ ...NanumMyeongjo-Regular-subset.name-legacy.62.ttf | Bin 3180 -> 3180 bytes
+ ...NanumMyeongjo-Regular-subset.name-legacy.63.ttf | Bin 3048 -> 3048 bytes
+ ...lar-subset.name-legacy.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...lar-subset.no-prune-unicode-ranges.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...egular-subset.no-prune-unicode-ranges.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...o-Regular-subset.no-prune-unicode-ranges.61.ttf | Bin 3156 -> 3156 bytes
+ ...o-Regular-subset.no-prune-unicode-ranges.62.ttf | Bin 3180 -> 3180 bytes
+ ...o-Regular-subset.no-prune-unicode-ranges.63.ttf | Bin 3048 -> 3048 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...ngjo-Regular-subset.notdef-outline.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...yeongjo-Regular-subset.notdef-outline.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.61.ttf | Bin 3156 -> 3156 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.62.ttf | Bin 3180 -> 3180 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.63.ttf | Bin 3048 -> 3048 bytes
+ ...-subset.notdef-outline.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...yeongjo-Regular-subset.retain-gids.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...umMyeongjo-Regular-subset.retain-gids.61,63.ttf | Bin 3588 -> 3588 bytes
+ ...NanumMyeongjo-Regular-subset.retain-gids.61.ttf | Bin 3156 -> 3156 bytes
+ ...NanumMyeongjo-Regular-subset.retain-gids.62.ttf | Bin 3184 -> 3184 bytes
+ ...NanumMyeongjo-Regular-subset.retain-gids.63.ttf | Bin 3060 -> 3060 bytes
+ ...lar-subset.retain-gids.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ .../basics/Roboto-Regular.abc.default.61,62,63.ttf | Bin 2412 -> 2412 bytes
+ .../basics/Roboto-Regular.abc.default.61,63.ttf    | Bin 2208 -> 2208 bytes
+ .../basics/Roboto-Regular.abc.default.61.ttf       | Bin 2008 -> 2008 bytes
+ .../basics/Roboto-Regular.abc.default.62.ttf       | Bin 1876 -> 1876 bytes
+ .../basics/Roboto-Regular.abc.default.63.ttf       | Bin 1932 -> 1932 bytes
+ ...to-Regular.abc.default.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ ...Regular.abc.drop-hints-retain-gids.61,62,63.ttf | Bin 1152 -> 1152 bytes
+ ...to-Regular.abc.drop-hints-retain-gids.61,63.ttf | Bin 1072 -> 1072 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.61.ttf | Bin 944 -> 944 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.62.ttf | Bin 840 -> 840 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.63.ttf | Bin 928 -> 928 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 1152 -> 1152 bytes
+ .../Roboto-Regular.abc.drop-hints.61,62,63.ttf     | Bin 1152 -> 1152 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.61,63.ttf | Bin 1056 -> 1056 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.61.ttf    | Bin 944 -> 944 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.62.ttf    | Bin 836 -> 836 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.63.ttf    | Bin 916 -> 916 bytes
+ ...Regular.abc.drop-hints.retain-all-codepoint.ttf | Bin 1152 -> 1152 bytes
+ .../basics/Roboto-Regular.abc.gids.61,62,63.ttf    | Bin 2412 -> 2412 bytes
+ .../basics/Roboto-Regular.abc.gids.61,63.ttf       | Bin 2412 -> 2412 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.61.ttf | Bin 2412 -> 2412 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.62.ttf | Bin 2412 -> 2412 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.63.ttf | Bin 2412 -> 2412 bytes
+ ...oboto-Regular.abc.gids.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.glyph-names.61,62,63.ttf    | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.glyph-names.61,63.ttf       | Bin 2208 -> 2208 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.61.ttf   | Bin 2008 -> 2008 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.62.ttf   | Bin 1876 -> 1876 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.63.ttf   | Bin 1932 -> 1932 bytes
+ ...egular.abc.glyph-names.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ ...gular.abc.keep-all-layout-features.61,62,63.ttf | Bin 2412 -> 2412 bytes
+ ...-Regular.abc.keep-all-layout-features.61,63.ttf | Bin 2208 -> 2208 bytes
+ ...oto-Regular.abc.keep-all-layout-features.61.ttf | Bin 2008 -> 2008 bytes
+ ...oto-Regular.abc.keep-all-layout-features.62.ttf | Bin 1876 -> 1876 bytes
+ ...oto-Regular.abc.keep-all-layout-features.63.ttf | Bin 1932 -> 1932 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ ...Roboto-Regular.abc.layout-features.61,62,63.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.layout-features.61,63.ttf   | Bin 2208 -> 2208 bytes
+ .../Roboto-Regular.abc.layout-features.61.ttf      | Bin 2008 -> 2008 bytes
+ .../Roboto-Regular.abc.layout-features.62.ttf      | Bin 1876 -> 1876 bytes
+ .../Roboto-Regular.abc.layout-features.63.ttf      | Bin 1932 -> 1932 bytes
+ ...ar.abc.layout-features.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.name-ids.61,62,63.ttf       | Bin 2412 -> 2412 bytes
+ .../basics/Roboto-Regular.abc.name-ids.61,63.ttf   | Bin 2208 -> 2208 bytes
+ .../basics/Roboto-Regular.abc.name-ids.61.ttf      | Bin 2008 -> 2008 bytes
+ .../basics/Roboto-Regular.abc.name-ids.62.ttf      | Bin 1876 -> 1876 bytes
+ .../basics/Roboto-Regular.abc.name-ids.63.ttf      | Bin 1932 -> 1932 bytes
+ ...o-Regular.abc.name-ids.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.name-languages.61,62,63.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.name-languages.61,63.ttf    | Bin 2208 -> 2208 bytes
+ .../Roboto-Regular.abc.name-languages.61.ttf       | Bin 2008 -> 2008 bytes
+ .../Roboto-Regular.abc.name-languages.62.ttf       | Bin 1876 -> 1876 bytes
+ .../Roboto-Regular.abc.name-languages.63.ttf       | Bin 1932 -> 1932 bytes
+ ...lar.abc.name-languages.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.name-legacy.61,62,63.ttf    | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.name-legacy.61,63.ttf       | Bin 2208 -> 2208 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.61.ttf   | Bin 2008 -> 2008 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.62.ttf   | Bin 1876 -> 1876 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.63.ttf   | Bin 1932 -> 1932 bytes
+ ...egular.abc.name-legacy.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ ...egular.abc.no-prune-unicode-ranges.61,62,63.ttf | Bin 2412 -> 2412 bytes
+ ...o-Regular.abc.no-prune-unicode-ranges.61,63.ttf | Bin 2208 -> 2208 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.61.ttf | Bin 2008 -> 2008 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.62.ttf | Bin 1876 -> 1876 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.63.ttf | Bin 1932 -> 1932 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.notdef-outline.61,62,63.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.notdef-outline.61,63.ttf    | Bin 2208 -> 2208 bytes
+ .../Roboto-Regular.abc.notdef-outline.61.ttf       | Bin 2008 -> 2008 bytes
+ .../Roboto-Regular.abc.notdef-outline.62.ttf       | Bin 1876 -> 1876 bytes
+ .../Roboto-Regular.abc.notdef-outline.63.ttf       | Bin 1932 -> 1932 bytes
+ ...lar.abc.notdef-outline.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.retain-gids.61,62,63.ttf    | Bin 2412 -> 2412 bytes
+ .../Roboto-Regular.abc.retain-gids.61,63.ttf       | Bin 2224 -> 2224 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.61.ttf   | Bin 2008 -> 2008 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.62.ttf   | Bin 1884 -> 1884 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.63.ttf   | Bin 1948 -> 1948 bytes
+ ...egular.abc.retain-gids.retain-all-codepoint.ttf | Bin 2412 -> 2412 bytes
+ .../cmap/AdobeBlank-Regular.default.61,62.ttf      | Bin 1208 -> 1208 bytes
+ .../cmap/AdobeBlank-Regular.default.61,FEFA.ttf    | Bin 1264 -> 1264 bytes
+ .../cmap/AdobeBlank-Regular.default.FEE6,FECF.ttf  | Bin 1216 -> 1216 bytes
+ .../cmap/AdobeBlank-Regular.default.FEF9,FEFA.ttf  | Bin 1204 -> 1204 bytes
+ .../cmap/AdobeBlank-Regular.default.FEFA.ttf       | Bin 1184 -> 1184 bytes
+ ...eBlank-Regular.drop-hints-retain-gids.61,62.ttf | Bin 1424 -> 1424 bytes
+ ...lank-Regular.drop-hints-retain-gids.61,FEFA.ttf | Bin 8232 -> 8232 bytes
+ ...nk-Regular.drop-hints-retain-gids.FEE6,FECF.ttf | Bin 8104 -> 8104 bytes
+ ...nk-Regular.drop-hints-retain-gids.FEF9,FEFA.ttf | Bin 8172 -> 8172 bytes
+ ...beBlank-Regular.drop-hints-retain-gids.FEFA.ttf | Bin 8156 -> 8156 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.61,62.ttf   | Bin 1036 -> 1036 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.61,FEFA.ttf | Bin 1092 -> 1092 bytes
+ .../AdobeBlank-Regular.drop-hints.FEE6,FECF.ttf    | Bin 1044 -> 1044 bytes
+ .../AdobeBlank-Regular.drop-hints.FEF9,FEFA.ttf    | Bin 1032 -> 1032 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.FEFA.ttf    | Bin 1012 -> 1012 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.61,62.ttf     | Bin 956 -> 956 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.61,FEFA.ttf   | Bin 1012 -> 1012 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEE6,FECF.ttf | Bin 964 -> 964 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEF9,FEFA.ttf | Bin 952 -> 952 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEFA.ttf      | Bin 932 -> 932 bytes
+ .../cmap/AdobeBlank-Regular.retain-gids.61,62.ttf  | Bin 1596 -> 1596 bytes
+ .../AdobeBlank-Regular.retain-gids.61,FEFA.ttf     | Bin 8404 -> 8404 bytes
+ .../AdobeBlank-Regular.retain-gids.FEE6,FECF.ttf   | Bin 8276 -> 8276 bytes
+ .../AdobeBlank-Regular.retain-gids.FEF9,FEFA.ttf   | Bin 8344 -> 8344 bytes
+ .../cmap/AdobeBlank-Regular.retain-gids.FEFA.ttf   | Bin 8328 -> 8328 bytes
+ .../TwemojiMozilla.subset.default.32,3297,3299.ttf | Bin 1868 -> 1868 bytes
+ .../colr/TwemojiMozilla.subset.default.32,3297.ttf | Bin 1344 -> 1344 bytes
+ .../colr/TwemojiMozilla.subset.default.32,3299.ttf | Bin 1520 -> 1520 bytes
+ .../colr/TwemojiMozilla.subset.default.32.ttf      | Bin 888 -> 888 bytes
+ .../TwemojiMozilla.subset.default.3297,3299.ttf    | Bin 1860 -> 1860 bytes
+ .../colr/TwemojiMozilla.subset.default.3297.ttf    | Bin 1332 -> 1332 bytes
+ .../colr/TwemojiMozilla.subset.default.3299.ttf    | Bin 1508 -> 1508 bytes
+ ....subset.drop-hints-retain-gids.32,3297,3299.ttf | Bin 1848 -> 1848 bytes
+ ...zilla.subset.drop-hints-retain-gids.32,3297.ttf | Bin 1340 -> 1340 bytes
+ ...zilla.subset.drop-hints-retain-gids.32,3299.ttf | Bin 1520 -> 1520 bytes
+ ...ojiMozilla.subset.drop-hints-retain-gids.32.ttf | Bin 868 -> 868 bytes
+ ...lla.subset.drop-hints-retain-gids.3297,3299.ttf | Bin 1844 -> 1844 bytes
+ ...iMozilla.subset.drop-hints-retain-gids.3297.ttf | Bin 1328 -> 1328 bytes
+ ...iMozilla.subset.drop-hints-retain-gids.3299.ttf | Bin 1508 -> 1508 bytes
+ ...emojiMozilla.subset.drop-hints.32,3297,3299.ttf | Bin 1848 -> 1848 bytes
+ .../TwemojiMozilla.subset.drop-hints.32,3297.ttf   | Bin 1324 -> 1324 bytes
+ .../TwemojiMozilla.subset.drop-hints.32,3299.ttf   | Bin 1500 -> 1500 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.32.ttf   | Bin 868 -> 868 bytes
+ .../TwemojiMozilla.subset.drop-hints.3297,3299.ttf | Bin 1840 -> 1840 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.3297.ttf | Bin 1312 -> 1312 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.3299.ttf | Bin 1488 -> 1488 bytes
+ ...mojiMozilla.subset.retain-gids.32,3297,3299.ttf | Bin 1868 -> 1868 bytes
+ .../TwemojiMozilla.subset.retain-gids.32,3297.ttf  | Bin 1360 -> 1360 bytes
+ .../TwemojiMozilla.subset.retain-gids.32,3299.ttf  | Bin 1540 -> 1540 bytes
+ .../colr/TwemojiMozilla.subset.retain-gids.32.ttf  | Bin 888 -> 888 bytes
+ ...TwemojiMozilla.subset.retain-gids.3297,3299.ttf | Bin 1864 -> 1864 bytes
+ .../TwemojiMozilla.subset.retain-gids.3297.ttf     | Bin 1348 -> 1348 bytes
+ .../TwemojiMozilla.subset.retain-gids.3299.ttf     | Bin 1528 -> 1528 bytes
+ .../colr_with_components/colr-table.default.6B.ttf | Bin 4260 -> 4260 bytes
+ .../colr-table.drop-hints-retain-gids.6B.ttf       | Bin 4984 -> 4984 bytes
+ .../colr-table.drop-hints.6B.ttf                   | Bin 4260 -> 4260 bytes
+ .../colr-table.retain-gids.6B.ttf                  | Bin 4984 -> 4984 bytes
+ .../Roboto-Regular.default.1FC,21,41,20,62,63.ttf  | Bin 3004 -> 3004 bytes
+ .../full-font/Roboto-Regular.default.61,62,63.ttf  | Bin 2632 -> 2632 bytes
+ .../Roboto-Regular.default.D7,D8,D9,DA,DE.ttf      | Bin 2960 -> 2960 bytes
+ ...oboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf | Bin 1556 -> 1556 bytes
+ .../Roboto-Regular.drop-hints.61,62,63.ttf         | Bin 1372 -> 1372 bytes
+ .../Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf   | Bin 1584 -> 1584 bytes
+ ...ifVariable-Roman.default.1FC,21,41,20,62,63.ttf | Bin 3888 -> 3888 bytes
+ .../SourceSerifVariable-Roman.default.61,62,63.ttf | Bin 3784 -> 3784 bytes
+ ...eSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf | Bin 4324 -> 4324 bytes
+ ...ariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf | Bin 3876 -> 3876 bytes
+ ...urceSerifVariable-Roman.drop-hints.61,62,63.ttf | Bin 3784 -> 3784 bytes
+ ...rifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 4324 -> 4324 bytes
+ .../Mplus1p-Regular.default.1D715,1D7D8,41,42.ttf  | Bin 2340 -> 2340 bytes
+ .../japanese/Mplus1p-Regular.default.25771.ttf     | Bin 1988 -> 1988 bytes
+ ...gular.default.3042,3044,3046,3048,304A,304B.ttf | Bin 2616 -> 2616 bytes
+ ...gular.default.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2848 -> 2848 bytes
+ .../Mplus1p-Regular.default.61,63,65,6B.ttf        | Bin 2248 -> 2248 bytes
+ ...gular.default.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 3144 -> 3144 bytes
+ .../japanese/Mplus1p-Regular.default.660E.ttf      | Bin 1944 -> 1944 bytes
+ ...plus1p-Regular.drop-hints.1D715,1D7D8,41,42.ttf | Bin 1612 -> 1612 bytes
+ .../japanese/Mplus1p-Regular.drop-hints.25771.ttf  | Bin 1260 -> 1260 bytes
+ ...ar.drop-hints.3042,3044,3046,3048,304A,304B.ttf | Bin 1888 -> 1888 bytes
+ ...ar.drop-hints.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2120 -> 2120 bytes
+ .../Mplus1p-Regular.drop-hints.61,63,65,6B.ttf     | Bin 1520 -> 1520 bytes
+ ...ar.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 2416 -> 2416 bytes
+ .../japanese/Mplus1p-Regular.drop-hints.660E.ttf   | Bin 1216 -> 1216 bytes
+ ...Mplus1p-Regular.keep-gdef.1D715,1D7D8,41,42.ttf | Bin 2340 -> 2340 bytes
+ .../japanese/Mplus1p-Regular.keep-gdef.25771.ttf   | Bin 1988 -> 1988 bytes
+ ...lar.keep-gdef.3042,3044,3046,3048,304A,304B.ttf | Bin 2616 -> 2616 bytes
+ ...lar.keep-gdef.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2848 -> 2848 bytes
+ .../Mplus1p-Regular.keep-gdef.61,63,65,6B.ttf      | Bin 2248 -> 2248 bytes
+ ...lar.keep-gdef.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 3144 -> 3144 bytes
+ .../japanese/Mplus1p-Regular.keep-gdef.660E.ttf    | Bin 1944 -> 1944 bytes
+ .../IndicTestJalandhar-Regular.default.A01.ttf     | Bin 4172 -> 4172 bytes
+ .../IndicTestJalandhar-Regular.default.A05,A06.ttf | Bin 4748 -> 4748 bytes
+ .../IndicTestJalandhar-Regular.default.A07,A1B.ttf | Bin 4720 -> 4720 bytes
+ ...andhar-Regular.default.retain-all-codepoint.ttf | Bin 49248 -> 49248 bytes
+ .../IndicTestJalandhar-Regular.drop-hints.A01.ttf  | Bin 1032 -> 1032 bytes
+ ...dicTestJalandhar-Regular.drop-hints.A05,A06.ttf | Bin 1340 -> 1340 bytes
+ ...dicTestJalandhar-Regular.drop-hints.A07,A1B.ttf | Bin 1340 -> 1340 bytes
+ ...har-Regular.drop-hints.retain-all-codepoint.ttf | Bin 29468 -> 29468 bytes
+ .../IndicTestJalandhar-Regular.keep-gdef.A01.ttf   | Bin 4172 -> 4172 bytes
+ ...ndicTestJalandhar-Regular.keep-gdef.A05,A06.ttf | Bin 4748 -> 4748 bytes
+ ...ndicTestJalandhar-Regular.keep-gdef.A07,A1B.ttf | Bin 4720 -> 4720 bytes
+ ...dhar-Regular.keep-gdef.retain-all-codepoint.ttf | Bin 49248 -> 49248 bytes
+ .../Roboto-Regular.default.1E00,303.ttf            | Bin 2472 -> 2472 bytes
+ .../layout.gdef/Roboto-Regular.default.303.ttf     | Bin 2076 -> 2076 bytes
+ .../Roboto-Regular.default.309,20,30F.ttf          | Bin 2148 -> 2148 bytes
+ .../layout.gdef/Roboto-Regular.default.323.ttf     | Bin 1968 -> 1968 bytes
+ .../Roboto-Regular.default.41,42,43.ttf            | Bin 2532 -> 2532 bytes
+ .../Roboto-Regular.drop-hints.1E00,303.ttf         | Bin 1328 -> 1328 bytes
+ .../layout.gdef/Roboto-Regular.drop-hints.303.ttf  | Bin 1072 -> 1072 bytes
+ .../Roboto-Regular.drop-hints.309,20,30F.ttf       | Bin 1108 -> 1108 bytes
+ .../layout.gdef/Roboto-Regular.drop-hints.323.ttf  | Bin 1016 -> 1016 bytes
+ .../Roboto-Regular.drop-hints.41,42,43.ttf         | Bin 1348 -> 1348 bytes
+ .../Roboto-Regular.keep-gdef-gpos.1E00,303.ttf     | Bin 2472 -> 2472 bytes
+ .../Roboto-Regular.keep-gdef-gpos.303.ttf          | Bin 2076 -> 2076 bytes
+ .../Roboto-Regular.keep-gdef-gpos.309,20,30F.ttf   | Bin 2148 -> 2148 bytes
+ .../Roboto-Regular.keep-gdef-gpos.323.ttf          | Bin 1968 -> 1968 bytes
+ .../Roboto-Regular.keep-gdef-gpos.41,42,43.ttf     | Bin 2532 -> 2532 bytes
+ ...ular.default.627,644,623,62D,644,627,645,2E.ttf | Bin 12592 -> 12592 bytes
+ .../Amiri-Regular.default.627,644,62D,628.ttf      | Bin 9924 -> 9924 bytes
+ .../Amiri-Regular.default.627,644.ttf              | Bin 4112 -> 4112 bytes
+ ...-Regular.default.633,645,627,621,20,644,627.ttf | Bin 9424 -> 9424 bytes
+ .../Amiri-Regular.default.63A,64A,631.ttf          | Bin 7256 -> 7256 bytes
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttf | Bin 47920 -> 47920 bytes
+ .../Amiri-Regular.retain-gids.627,644,62D,628.ttf  | Bin 42572 -> 42572 bytes
+ .../Amiri-Regular.retain-gids.627,644.ttf          | Bin 36640 -> 36640 bytes
+ ...ular.retain-gids.633,645,627,621,20,644,627.ttf | Bin 45816 -> 45816 bytes
+ .../Amiri-Regular.retain-gids.63A,64A,631.ttf      | Bin 37920 -> 37920 bytes
+ .../expected/layout.khmer/Khmer.default.1780.ttf   | Bin 4200 -> 4200 bytes
+ ...ult.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf | Bin 6408 -> 6408 bytes
+ .../expected/layout.khmer/Khmer.default.31.ttf     | Bin 4136 -> 4136 bytes
+ .../layout.khmer/Khmer.retain-gids.1780.ttf        | Bin 4460 -> 4460 bytes
+ ...ids.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf | Bin 7844 -> 7844 bytes
+ .../expected/layout.khmer/Khmer.retain-gids.31.ttf | Bin 4252 -> 4252 bytes
+ ...Bold.default.627,644,623,62D,644,627,645,2E.ttf | Bin 11388 -> 11388 bytes
+ ...toNastaliqUrdu-Bold.default.627,644,62D,628.ttf | Bin 17688 -> 17688 bytes
+ .../NotoNastaliqUrdu-Bold.default.627,644.ttf      | Bin 3520 -> 3520 bytes
+ ...rdu-Bold.default.633,645,627,621,20,644,627.ttf | Bin 12380 -> 12380 bytes
+ .../NotoNastaliqUrdu-Bold.default.63A,64A,631.ttf  | Bin 19380 -> 19380 bytes
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttf | Bin 18224 -> 18224 bytes
+ ...staliqUrdu-Bold.retain-gids.627,644,62D,628.ttf | Bin 23748 -> 23748 bytes
+ .../NotoNastaliqUrdu-Bold.retain-gids.627,644.ttf  | Bin 9164 -> 9164 bytes
+ ...Bold.retain-gids.633,645,627,621,20,644,627.ttf | Bin 18184 -> 18184 bytes
+ ...toNastaliqUrdu-Bold.retain-gids.63A,64A,631.ttf | Bin 25432 -> 25432 bytes
+ .../Roboto-Regular.smallcaps.default.41,42,43.ttf  | Bin 2424 -> 2424 bytes
+ .../Roboto-Regular.smallcaps.default.41,43.ttf     | Bin 2232 -> 2232 bytes
+ .../layout/Roboto-Regular.smallcaps.default.41.ttf | Bin 2044 -> 2044 bytes
+ .../layout/Roboto-Regular.smallcaps.default.43.ttf | Bin 2076 -> 2076 bytes
+ .../Roboto-Regular.smallcaps.default.CA,CB.ttf     | Bin 2348 -> 2348 bytes
+ ...boto-Regular.smallcaps.retain-gids.41,42,43.ttf | Bin 2676 -> 2676 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.41,43.ttf | Bin 2496 -> 2496 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.41.ttf    | Bin 2296 -> 2296 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.43.ttf    | Bin 2344 -> 2344 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.CA,CB.ttf | Bin 6436 -> 6436 bytes
+ .../data/expected/sbix/sbix.default.58,59.ttf      | Bin 193528 -> 193528 bytes
+ test/subset/data/expected/sbix/sbix.default.58.ttf | Bin 121168 -> 121168 bytes
+ test/subset/data/expected/sbix/sbix.default.59.ttf | Bin 89364 -> 89364 bytes
+ .../sbix/sbix.drop-hints-retain-gids.58,59.ttf     | Bin 193528 -> 193528 bytes
+ .../sbix/sbix.drop-hints-retain-gids.58.ttf        | Bin 121168 -> 121168 bytes
+ .../sbix/sbix.drop-hints-retain-gids.59.ttf        | Bin 89404 -> 89404 bytes
+ .../data/expected/sbix/sbix.drop-hints.58,59.ttf   | Bin 193528 -> 193528 bytes
+ .../data/expected/sbix/sbix.drop-hints.58.ttf      | Bin 121168 -> 121168 bytes
+ .../data/expected/sbix/sbix.drop-hints.59.ttf      | Bin 89364 -> 89364 bytes
+ .../data/expected/sbix/sbix.retain-gids.58,59.ttf  | Bin 193528 -> 193528 bytes
+ .../data/expected/sbix/sbix.retain-gids.58.ttf     | Bin 121168 -> 121168 bytes
+ .../data/expected/sbix/sbix.retain-gids.59.ttf     | Bin 89404 -> 89404 bytes
+ .../variable/Fraunces.default.26,66,69,124,125.ttf | Bin 15856 -> 15856 bytes
+ .../data/expected/variable/Fraunces.default.61.ttf | Bin 4232 -> 4232 bytes
+ 403 files changed, 41 insertions(+), 26 deletions(-)
+
+commit 368e9578873798e2d17ed78a0474dec7d4e9d6c0
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Aug 5 10:16:13 2021 -0600
+
+    [ot-shape] Add comment re `vert` feature
+
+ src/hb-ot-shape.cc | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 2c024dc3cba60eee67fb004e3258cd8e47bd9593
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Aug 4 11:38:38 2021 -0700
+
+    [subset] prune redundant cmap12 subtables.
+    
+    If the post subset cmap12 table is equivalent to another cmap subtable don't include the 12 table in the final subset. Matches change https://github.com/fonttools/fonttools/pull/2146 from fontTools.
+
+ src/hb-ot-cmap-table.hh                            |  96 ++++++++++++++++++++-
+ test/api/fonts/Roboto-Regular.D7,D8,D9,DA,DE.ttf   | Bin 2532 -> 2472 bytes
+ test/api/fonts/Roboto-Regular.abc.ttf              | Bin 2168 -> 2132 bytes
+ test/api/fonts/Roboto-Regular.ac.ttf               | Bin 1988 -> 1940 bytes
+ test/subset/data/Makefile.am                       |   6 +-
+ .../basics/Roboto-Regular.abc.default.61,62,63.ttf | Bin 2448 -> 2412 bytes
+ .../basics/Roboto-Regular.abc.default.61,63.ttf    | Bin 2256 -> 2208 bytes
+ .../basics/Roboto-Regular.abc.default.61.ttf       | Bin 2044 -> 2008 bytes
+ .../basics/Roboto-Regular.abc.default.62.ttf       | Bin 1912 -> 1876 bytes
+ .../basics/Roboto-Regular.abc.default.63.ttf       | Bin 1968 -> 1932 bytes
+ ...to-Regular.abc.default.retain-all-codepoint.ttf | Bin 2448 -> 2412 bytes
+ ...Regular.abc.drop-hints-retain-gids.61,62,63.ttf | Bin 1188 -> 1152 bytes
+ ...to-Regular.abc.drop-hints-retain-gids.61,63.ttf | Bin 1120 -> 1072 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.61.ttf | Bin 980 -> 944 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.62.ttf | Bin 876 -> 840 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.63.ttf | Bin 964 -> 928 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 1188 -> 1152 bytes
+ .../Roboto-Regular.abc.drop-hints.61,62,63.ttf     | Bin 1188 -> 1152 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.61,63.ttf | Bin 1104 -> 1056 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.61.ttf    | Bin 980 -> 944 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.62.ttf    | Bin 872 -> 836 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.63.ttf    | Bin 952 -> 916 bytes
+ ...Regular.abc.drop-hints.retain-all-codepoint.ttf | Bin 1188 -> 1152 bytes
+ .../basics/Roboto-Regular.abc.gids.61,62,63.ttf    | Bin 2448 -> 2412 bytes
+ .../basics/Roboto-Regular.abc.gids.61,63.ttf       | Bin 2448 -> 2412 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.61.ttf | Bin 2448 -> 2412 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.62.ttf | Bin 2448 -> 2412 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.63.ttf | Bin 2448 -> 2412 bytes
+ ...oboto-Regular.abc.gids.retain-all-codepoint.ttf | Bin 2448 -> 2412 bytes
+ .../Roboto-Regular.abc.glyph-names.61,62,63.ttf    | Bin 2448 -> 2412 bytes
+ .../Roboto-Regular.abc.glyph-names.61,63.ttf       | Bin 2256 -> 2208 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.61.ttf   | Bin 2044 -> 2008 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.62.ttf   | Bin 1912 -> 1876 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.63.ttf   | Bin 1968 -> 1932 bytes
+ ...egular.abc.glyph-names.retain-all-codepoint.ttf | Bin 2448 -> 2412 bytes
+ ...gular.abc.keep-all-layout-features.61,62,63.ttf | Bin 2448 -> 2412 bytes
+ ...-Regular.abc.keep-all-layout-features.61,63.ttf | Bin 2256 -> 2208 bytes
+ ...oto-Regular.abc.keep-all-layout-features.61.ttf | Bin 2044 -> 2008 bytes
+ ...oto-Regular.abc.keep-all-layout-features.62.ttf | Bin 1912 -> 1876 bytes
+ ...oto-Regular.abc.keep-all-layout-features.63.ttf | Bin 1968 -> 1932 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttf | Bin 2448 -> 2412 bytes
+ ...Roboto-Regular.abc.layout-features.61,62,63.ttf | Bin 2448 -> 2412 bytes
+ .../Roboto-Regular.abc.layout-features.61,63.ttf   | Bin 2256 -> 2208 bytes
+ .../Roboto-Regular.abc.layout-features.61.ttf      | Bin 2044 -> 2008 bytes
+ .../Roboto-Regular.abc.layout-features.62.ttf      | Bin 1912 -> 1876 bytes
+ .../Roboto-Regular.abc.layout-features.63.ttf      | Bin 1968 -> 1932 bytes
+ ...ar.abc.layout-features.retain-all-codepoint.ttf | Bin 2448 -> 2412 bytes
+ .../Roboto-Regular.abc.name-ids.61,62,63.ttf       | Bin 2448 -> 2412 bytes
+ .../basics/Roboto-Regular.abc.name-ids.61,63.ttf   | Bin 2256 -> 2208 bytes
+ .../basics/Roboto-Regular.abc.name-ids.61.ttf      | Bin 2044 -> 2008 bytes
+ .../basics/Roboto-Regular.abc.name-ids.62.ttf      | Bin 1912 -> 1876 bytes
+ .../basics/Roboto-Regular.abc.name-ids.63.ttf      | Bin 1968 -> 1932 bytes
+ ...o-Regular.abc.name-ids.retain-all-codepoint.ttf | Bin 2448 -> 2412 bytes
+ .../Roboto-Regular.abc.name-languages.61,62,63.ttf | Bin 2448 -> 2412 bytes
+ .../Roboto-Regular.abc.name-languages.61,63.ttf    | Bin 2256 -> 2208 bytes
+ .../Roboto-Regular.abc.name-languages.61.ttf       | Bin 2044 -> 2008 bytes
+ .../Roboto-Regular.abc.name-languages.62.ttf       | Bin 1912 -> 1876 bytes
+ .../Roboto-Regular.abc.name-languages.63.ttf       | Bin 1968 -> 1932 bytes
+ ...lar.abc.name-languages.retain-all-codepoint.ttf | Bin 2448 -> 2412 bytes
+ .../Roboto-Regular.abc.name-legacy.61,62,63.ttf    | Bin 2448 -> 2412 bytes
+ .../Roboto-Regular.abc.name-legacy.61,63.ttf       | Bin 2256 -> 2208 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.61.ttf   | Bin 2044 -> 2008 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.62.ttf   | Bin 1912 -> 1876 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.63.ttf   | Bin 1968 -> 1932 bytes
+ ...egular.abc.name-legacy.retain-all-codepoint.ttf | Bin 2448 -> 2412 bytes
+ ...egular.abc.no-prune-unicode-ranges.61,62,63.ttf | Bin 2448 -> 2412 bytes
+ ...o-Regular.abc.no-prune-unicode-ranges.61,63.ttf | Bin 2256 -> 2208 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.61.ttf | Bin 2044 -> 2008 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.62.ttf | Bin 1912 -> 1876 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.63.ttf | Bin 1968 -> 1932 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf | Bin 2448 -> 2412 bytes
+ .../Roboto-Regular.abc.notdef-outline.61,62,63.ttf | Bin 2448 -> 2412 bytes
+ .../Roboto-Regular.abc.notdef-outline.61,63.ttf    | Bin 2256 -> 2208 bytes
+ .../Roboto-Regular.abc.notdef-outline.61.ttf       | Bin 2044 -> 2008 bytes
+ .../Roboto-Regular.abc.notdef-outline.62.ttf       | Bin 1912 -> 1876 bytes
+ .../Roboto-Regular.abc.notdef-outline.63.ttf       | Bin 1968 -> 1932 bytes
+ ...lar.abc.notdef-outline.retain-all-codepoint.ttf | Bin 2448 -> 2412 bytes
+ .../Roboto-Regular.abc.retain-gids.61,62,63.ttf    | Bin 2448 -> 2412 bytes
+ .../Roboto-Regular.abc.retain-gids.61,63.ttf       | Bin 2272 -> 2224 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.61.ttf   | Bin 2044 -> 2008 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.62.ttf   | Bin 1920 -> 1884 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.63.ttf   | Bin 1984 -> 1948 bytes
+ ...egular.abc.retain-gids.retain-all-codepoint.ttf | Bin 2448 -> 2412 bytes
+ ...-Regular.drop-hints-desubroutinize.61,62,63.otf | Bin 2004 -> 0 bytes
+ ...ubroutinize-retain-gids.1FC,21,41,20,62,63.otf} | Bin 20220 -> 20128 bytes
+ ...utline-desubroutinize-retain-gids.61,62,63.otf} | Bin 2324 -> 2280 bytes
+ ...-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf} | Bin 30528 -> 30448 bytes
+ ...-outline-desubroutinize.1FC,21,41,20,62,63.otf} | Bin 2448 -> 2356 bytes
+ ...lar.notdef-outline-desubroutinize.61,62,63.otf} | Bin 2128 -> 2084 bytes
+ ...tdef-outline-desubroutinize.D7,D8,D9,DA,DE.otf} | Bin 2320 -> 2252 bytes
+ ...ubroutinize-retain-gids.1FC,21,41,20,62,63.otf} | Bin 20052 -> 19960 bytes
+ ...-hints-desubroutinize-retain-gids.61,62,63.otf} | Bin 2200 -> 2156 bytes
+ ...-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf} | Bin 30360 -> 30280 bytes
+ ...op-hints-desubroutinize.1FC,21,41,20,62,63.otf} | Bin 2276 -> 2184 bytes
+ ...-outline-drop-hints-desubroutinize.61,62,63.otf | Bin 0 -> 1960 bytes
+ ...e-drop-hints-desubroutinize.D7,D8,D9,DA,DE.otf} | Bin 2156 -> 2088 bytes
+ ...-drop-hints-retain-gids.1FC,21,41,20,62,63.otf} | Bin 20144 -> 20052 bytes
+ ...ef-outline-drop-hints-retain-gids.61,62,63.otf} | Bin 2240 -> 2196 bytes
+ ...line-drop-hints-retain-gids.D7,D8,D9,DA,DE.otf} | Bin 30376 -> 30296 bytes
+ ...tdef-outline-drop-hints.1FC,21,41,20,62,63.otf} | Bin 2360 -> 2268 bytes
+ ...Regular.notdef-outline-drop-hints.61,62,63.otf} | Bin 2072 -> 2028 bytes
+ ...r.notdef-outline-drop-hints.D7,D8,D9,DA,DE.otf} | Bin 2172 -> 2104 bytes
+ ...def-outline-retain-gids.1FC,21,41,20,62,63.otf} | Bin 20376 -> 20284 bytes
+ ...egular.notdef-outline-retain-gids.61,62,63.otf} | Bin 2392 -> 2348 bytes
+ ....notdef-outline-retain-gids.D7,D8,D9,DA,DE.otf} | Bin 30544 -> 30464 bytes
+ ...-Regular.notdef-outline.1FC,21,41,20,62,63.otf} | Bin 2592 -> 2500 bytes
+ ...rceSansPro-Regular.notdef-outline.61,62,63.otf} | Bin 2224 -> 2180 bytes
+ ...sPro-Regular.notdef-outline.D7,D8,D9,DA,DE.otf} | Bin 2340 -> 2272 bytes
+ ...ubset.default.3042,3044,3046,3048,304A,304B.otf | Bin 4912 -> 4820 bytes
+ ...ubset.default.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 6300 -> 6196 bytes
+ ...eHanSans-Regular_subset.default.61,63,65,6B.otf | Bin 2620 -> 2540 bytes
+ ...ubset.default.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6744 -> 6640 bytes
+ .../SourceHanSans-Regular_subset.default.660E.otf  | Bin 2488 -> 2444 bytes
+ ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 129912 -> 129820 bytes
+ ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 130944 -> 130840 bytes
+ ...bset.desubroutinize-retain-gids.61,63,65,6B.otf | Bin 3444 -> 3364 bytes
+ ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 122060 -> 121956 bytes
+ ...ular_subset.desubroutinize-retain-gids.660E.otf | Bin 50788 -> 50744 bytes
+ ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 4748 -> 4656 bytes
+ ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 5944 -> 5840 bytes
+ ...s-Regular_subset.desubroutinize.61,63,65,6B.otf | Bin 2552 -> 2472 bytes
+ ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6236 -> 6132 bytes
+ ...eHanSans-Regular_subset.desubroutinize.660E.otf | Bin 2472 -> 2428 bytes
+ ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 129468 -> 129376 bytes
+ ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 130324 -> 130220 bytes
+ ...ints-desubroutinize-retain-gids.61,63,65,6B.otf | Bin 3324 -> 3244 bytes
+ ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 121284 -> 121180 bytes
+ ....drop-hints-desubroutinize-retain-gids.660E.otf | Bin 50560 -> 50516 bytes
+ ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 4440 -> 4348 bytes
+ ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 5428 -> 5324 bytes
+ ...ubset.drop-hints-desubroutinize.61,63,65,6B.otf | Bin 2448 -> 2368 bytes
+ ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 5560 -> 5456 bytes
+ ...gular_subset.drop-hints-desubroutinize.660E.otf | Bin 2336 -> 2292 bytes
+ ...s-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 129608 -> 129516 bytes
+ ...s-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 130632 -> 130528 bytes
+ ...r_subset.drop-hints-retain-gids.61,63,65,6B.otf | Bin 3288 -> 3208 bytes
+ ...s-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 121784 -> 121680 bytes
+ ...-Regular_subset.drop-hints-retain-gids.660E.otf | Bin 50576 -> 50532 bytes
+ ...et.drop-hints.3042,3044,3046,3048,304A,304B.otf | Bin 4576 -> 4484 bytes
+ ...et.drop-hints.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 5732 -> 5628 bytes
+ ...nSans-Regular_subset.drop-hints.61,63,65,6B.otf | Bin 2480 -> 2400 bytes
+ ...et.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6056 -> 5952 bytes
+ ...ourceHanSans-Regular_subset.drop-hints.660E.otf | Bin 2348 -> 2304 bytes
+ ...t.retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 130072 -> 129980 bytes
+ ...t.retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 131300 -> 131196 bytes
+ ...Sans-Regular_subset.retain-gids.61,63,65,6B.otf | Bin 3444 -> 3364 bytes
+ ...t.retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 122564 -> 122460 bytes
+ ...urceHanSans-Regular_subset.retain-gids.660E.otf | Bin 50804 -> 50760 bytes
+ ...039,1005,100A,103A,1038,1010,103D,1031,104A.otf | Bin 7724 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.default.61,62.ttf      | Bin 1252 -> 1208 bytes
+ ...eBlank-Regular.drop-hints-retain-gids.61,62.ttf | Bin 1468 -> 1424 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.61,62.ttf   | Bin 1080 -> 1036 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.61,62.ttf     | Bin 1000 -> 956 bytes
+ .../cmap/AdobeBlank-Regular.retain-gids.61,62.ttf  | Bin 1640 -> 1596 bytes
+ ...line-drop-hints-retain-gids.4E00,4E02,4E03.otf} | Bin
+ ...f-outline-drop-hints-retain-gids.4E00,4E03.otf} | Bin
+ ...line-drop-hints-retain-gids.4E00,4E05,4E07.otf} | Bin
+ ...line-drop-hints-retain-gids.4E02,4E03,4E08.otf} | Bin
+ ...notdef-outline-drop-hints-retain-gids.4E02.otf} | Bin
+ ...notdef-outline-drop-hints-retain-gids.4E03.otf} | Bin
+ ...drop-hints-retain-gids.4E05,4E07,4E08,4E09.otf} | Bin
+ ...f-outline-drop-hints-retain-gids.4E08,4E09.otf} | Bin
+ ...notdef-outline-drop-hints-retain-gids.4E08.otf} | Bin
+ ...rop-hints-retain-gids.retain-all-codepoint.otf} | Bin
+ ...1.notdef-outline-drop-hints.4E00,4E02,4E03.otf} | Bin
+ ..._font1.notdef-outline-drop-hints.4E00,4E03.otf} | Bin
+ ...1.notdef-outline-drop-hints.4E00,4E05,4E07.otf} | Bin
+ ...1.notdef-outline-drop-hints.4E02,4E03,4E08.otf} | Bin
+ ...map14_font1.notdef-outline-drop-hints.4E02.otf} | Bin
+ ...map14_font1.notdef-outline-drop-hints.4E03.otf} | Bin
+ ...def-outline-drop-hints.4E05,4E07,4E08,4E09.otf} | Bin
+ ..._font1.notdef-outline-drop-hints.4E08,4E09.otf} | Bin
+ ...map14_font1.notdef-outline-drop-hints.4E08.otf} | Bin
+ ...ef-outline-drop-hints.retain-all-codepoint.otf} | Bin
+ ...4_font1.notdef-outline-gids.4E00,4E02,4E03.otf} | Bin
+ ...cmap14_font1.notdef-outline-gids.4E00,4E03.otf} | Bin
+ ...4_font1.notdef-outline-gids.4E00,4E05,4E07.otf} | Bin
+ ...4_font1.notdef-outline-gids.4E02,4E03,4E08.otf} | Bin
+ ...f => cmap14_font1.notdef-outline-gids.4E02.otf} | Bin
+ ...f => cmap14_font1.notdef-outline-gids.4E03.otf} | Bin
+ ...t1.notdef-outline-gids.4E05,4E07,4E08,4E09.otf} | Bin
+ ...cmap14_font1.notdef-outline-gids.4E08,4E09.otf} | Bin
+ ...f => cmap14_font1.notdef-outline-gids.4E08.otf} | Bin
+ ...1.notdef-outline-gids.retain-all-codepoint.otf} | Bin
+ ...nt1.notdef-outline-name-ids.4E00,4E02,4E03.otf} | Bin
+ ...14_font1.notdef-outline-name-ids.4E00,4E03.otf} | Bin
+ ...nt1.notdef-outline-name-ids.4E00,4E05,4E07.otf} | Bin
+ ...nt1.notdef-outline-name-ids.4E02,4E03,4E08.otf} | Bin
+ ... cmap14_font1.notdef-outline-name-ids.4E02.otf} | Bin
+ ... cmap14_font1.notdef-outline-name-ids.4E03.otf} | Bin
+ ...otdef-outline-name-ids.4E05,4E07,4E08,4E09.otf} | Bin
+ ...14_font1.notdef-outline-name-ids.4E08,4E09.otf} | Bin
+ ... cmap14_font1.notdef-outline-name-ids.4E08.otf} | Bin
+ ...tdef-outline-name-ids.retain-all-codepoint.otf} | Bin
+ ....notdef-outline-retain-gids.4E00,4E02,4E03.otf} | Bin
+ ...font1.notdef-outline-retain-gids.4E00,4E03.otf} | Bin
+ ....notdef-outline-retain-gids.4E00,4E05,4E07.otf} | Bin
+ ....notdef-outline-retain-gids.4E02,4E03,4E08.otf} | Bin
+ ...ap14_font1.notdef-outline-retain-gids.4E02.otf} | Bin
+ ...ap14_font1.notdef-outline-retain-gids.4E03.otf} | Bin
+ ...ef-outline-retain-gids.4E05,4E07,4E08,4E09.otf} | Bin
+ ...font1.notdef-outline-retain-gids.4E08,4E09.otf} | Bin
+ ...ap14_font1.notdef-outline-retain-gids.4E08.otf} | Bin
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin
+ ...cmap14_font1.notdef-outline.4E00,4E02,4E03.otf} | Bin
+ ...f => cmap14_font1.notdef-outline.4E00,4E03.otf} | Bin
+ ...cmap14_font1.notdef-outline.4E00,4E05,4E07.otf} | Bin
+ ...cmap14_font1.notdef-outline.4E02,4E03,4E08.otf} | Bin
+ ...02.otf => cmap14_font1.notdef-outline.4E02.otf} | Bin
+ ...03.otf => cmap14_font1.notdef-outline.4E03.otf} | Bin
+ ...4_font1.notdef-outline.4E05,4E07,4E08,4E09.otf} | Bin
+ ...f => cmap14_font1.notdef-outline.4E08,4E09.otf} | Bin
+ ...08.otf => cmap14_font1.notdef-outline.4E08.otf} | Bin
+ ..._font1.notdef-outline.retain-all-codepoint.otf} | Bin
+ ...line-drop-hints-retain-gids.4E00,4E02,4E03.otf} | Bin
+ ...f-outline-drop-hints-retain-gids.4E00,4E03.otf} | Bin
+ ...line-drop-hints-retain-gids.4E00,4E05,4E07.otf} | Bin
+ ...line-drop-hints-retain-gids.4E02,4E03,4E08.otf} | Bin
+ ...notdef-outline-drop-hints-retain-gids.4E02.otf} | Bin
+ ...notdef-outline-drop-hints-retain-gids.4E03.otf} | Bin
+ ...drop-hints-retain-gids.4E05,4E07,4E08,4E09.otf} | Bin
+ ...f-outline-drop-hints-retain-gids.4E08,4E09.otf} | Bin
+ ...notdef-outline-drop-hints-retain-gids.4E08.otf} | Bin
+ ...rop-hints-retain-gids.retain-all-codepoint.otf} | Bin
+ ...2.notdef-outline-drop-hints.4E00,4E02,4E03.otf} | Bin
+ ..._font2.notdef-outline-drop-hints.4E00,4E03.otf} | Bin
+ ...2.notdef-outline-drop-hints.4E00,4E05,4E07.otf} | Bin
+ ...2.notdef-outline-drop-hints.4E02,4E03,4E08.otf} | Bin
+ ...map14_font2.notdef-outline-drop-hints.4E02.otf} | Bin
+ ...map14_font2.notdef-outline-drop-hints.4E03.otf} | Bin
+ ...def-outline-drop-hints.4E05,4E07,4E08,4E09.otf} | Bin
+ ..._font2.notdef-outline-drop-hints.4E08,4E09.otf} | Bin
+ ...map14_font2.notdef-outline-drop-hints.4E08.otf} | Bin
+ ...ef-outline-drop-hints.retain-all-codepoint.otf} | Bin
+ ...4_font2.notdef-outline-gids.4E00,4E02,4E03.otf} | Bin
+ ...cmap14_font2.notdef-outline-gids.4E00,4E03.otf} | Bin
+ ...4_font2.notdef-outline-gids.4E00,4E05,4E07.otf} | Bin
+ ...4_font2.notdef-outline-gids.4E02,4E03,4E08.otf} | Bin
+ ...f => cmap14_font2.notdef-outline-gids.4E02.otf} | Bin
+ ...f => cmap14_font2.notdef-outline-gids.4E03.otf} | Bin
+ ...t2.notdef-outline-gids.4E05,4E07,4E08,4E09.otf} | Bin
+ ...cmap14_font2.notdef-outline-gids.4E08,4E09.otf} | Bin
+ ...f => cmap14_font2.notdef-outline-gids.4E08.otf} | Bin
+ ...2.notdef-outline-gids.retain-all-codepoint.otf} | Bin
+ ...nt2.notdef-outline-name-ids.4E00,4E02,4E03.otf} | Bin
+ ...14_font2.notdef-outline-name-ids.4E00,4E03.otf} | Bin
+ ...nt2.notdef-outline-name-ids.4E00,4E05,4E07.otf} | Bin
+ ...nt2.notdef-outline-name-ids.4E02,4E03,4E08.otf} | Bin
+ ... cmap14_font2.notdef-outline-name-ids.4E02.otf} | Bin
+ ... cmap14_font2.notdef-outline-name-ids.4E03.otf} | Bin
+ ...otdef-outline-name-ids.4E05,4E07,4E08,4E09.otf} | Bin
+ ...14_font2.notdef-outline-name-ids.4E08,4E09.otf} | Bin
+ ... cmap14_font2.notdef-outline-name-ids.4E08.otf} | Bin
+ ...tdef-outline-name-ids.retain-all-codepoint.otf} | Bin
+ ....notdef-outline-retain-gids.4E00,4E02,4E03.otf} | Bin
+ ...font2.notdef-outline-retain-gids.4E00,4E03.otf} | Bin
+ ....notdef-outline-retain-gids.4E00,4E05,4E07.otf} | Bin
+ ....notdef-outline-retain-gids.4E02,4E03,4E08.otf} | Bin
+ ...ap14_font2.notdef-outline-retain-gids.4E02.otf} | Bin
+ ...ap14_font2.notdef-outline-retain-gids.4E03.otf} | Bin
+ ...ef-outline-retain-gids.4E05,4E07,4E08,4E09.otf} | Bin
+ ...font2.notdef-outline-retain-gids.4E08,4E09.otf} | Bin
+ ...ap14_font2.notdef-outline-retain-gids.4E08.otf} | Bin
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin
+ ...cmap14_font2.notdef-outline.4E00,4E02,4E03.otf} | Bin
+ ...f => cmap14_font2.notdef-outline.4E00,4E03.otf} | Bin
+ ...cmap14_font2.notdef-outline.4E00,4E05,4E07.otf} | Bin
+ ...cmap14_font2.notdef-outline.4E02,4E03,4E08.otf} | Bin
+ ...02.otf => cmap14_font2.notdef-outline.4E02.otf} | Bin
+ ...03.otf => cmap14_font2.notdef-outline.4E03.otf} | Bin
+ ...4_font2.notdef-outline.4E05,4E07,4E08,4E09.otf} | Bin
+ ...f => cmap14_font2.notdef-outline.4E08,4E09.otf} | Bin
+ ...08.otf => cmap14_font2.notdef-outline.4E08.otf} | Bin
+ ..._font2.notdef-outline.retain-all-codepoint.otf} | Bin
+ .../TwemojiMozilla.subset.default.32,3297,3299.ttf | Bin 1936 -> 1868 bytes
+ .../colr/TwemojiMozilla.subset.default.32,3297.ttf | Bin 1400 -> 1344 bytes
+ .../colr/TwemojiMozilla.subset.default.32,3299.ttf | Bin 1576 -> 1520 bytes
+ .../colr/TwemojiMozilla.subset.default.32.ttf      | Bin 932 -> 888 bytes
+ .../TwemojiMozilla.subset.default.3297,3299.ttf    | Bin 1916 -> 1860 bytes
+ .../colr/TwemojiMozilla.subset.default.3297.ttf    | Bin 1376 -> 1332 bytes
+ .../colr/TwemojiMozilla.subset.default.3299.ttf    | Bin 1552 -> 1508 bytes
+ ....subset.drop-hints-retain-gids.32,3297,3299.ttf | Bin 1916 -> 1848 bytes
+ ...zilla.subset.drop-hints-retain-gids.32,3297.ttf | Bin 1396 -> 1340 bytes
+ ...zilla.subset.drop-hints-retain-gids.32,3299.ttf | Bin 1576 -> 1520 bytes
+ ...ojiMozilla.subset.drop-hints-retain-gids.32.ttf | Bin 912 -> 868 bytes
+ ...lla.subset.drop-hints-retain-gids.3297,3299.ttf | Bin 1900 -> 1844 bytes
+ ...iMozilla.subset.drop-hints-retain-gids.3297.ttf | Bin 1372 -> 1328 bytes
+ ...iMozilla.subset.drop-hints-retain-gids.3299.ttf | Bin 1552 -> 1508 bytes
+ ...emojiMozilla.subset.drop-hints.32,3297,3299.ttf | Bin 1916 -> 1848 bytes
+ .../TwemojiMozilla.subset.drop-hints.32,3297.ttf   | Bin 1380 -> 1324 bytes
+ .../TwemojiMozilla.subset.drop-hints.32,3299.ttf   | Bin 1556 -> 1500 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.32.ttf   | Bin 912 -> 868 bytes
+ .../TwemojiMozilla.subset.drop-hints.3297,3299.ttf | Bin 1896 -> 1840 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.3297.ttf | Bin 1356 -> 1312 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.3299.ttf | Bin 1532 -> 1488 bytes
+ ...mojiMozilla.subset.retain-gids.32,3297,3299.ttf | Bin 1936 -> 1868 bytes
+ .../TwemojiMozilla.subset.retain-gids.32,3297.ttf  | Bin 1416 -> 1360 bytes
+ .../TwemojiMozilla.subset.retain-gids.32,3299.ttf  | Bin 1596 -> 1540 bytes
+ .../colr/TwemojiMozilla.subset.retain-gids.32.ttf  | Bin 932 -> 888 bytes
+ ...TwemojiMozilla.subset.retain-gids.3297,3299.ttf | Bin 1920 -> 1864 bytes
+ .../TwemojiMozilla.subset.retain-gids.3297.ttf     | Bin 1392 -> 1348 bytes
+ .../TwemojiMozilla.subset.retain-gids.3299.ttf     | Bin 1572 -> 1528 bytes
+ ...oColrEmojiGlyf-Regular.subset.default.1f35e.ttf | Bin 3004 -> 0 bytes
+ ...oColrEmojiGlyf-Regular.subset.default.1f696.ttf | Bin 3752 -> 0 bytes
+ ...Regular.subset.drop-hints-retain-gids.1f35e.ttf | Bin 3516 -> 0 bytes
+ ...Regular.subset.drop-hints-retain-gids.1f696.ttf | Bin 5048 -> 0 bytes
+ ...lrEmojiGlyf-Regular.subset.drop-hints.1f35e.ttf | Bin 3004 -> 0 bytes
+ ...lrEmojiGlyf-Regular.subset.drop-hints.1f696.ttf | Bin 3752 -> 0 bytes
+ ...rEmojiGlyf-Regular.subset.retain-gids.1f35e.ttf | Bin 3516 -> 0 bytes
+ ...rEmojiGlyf-Regular.subset.retain-gids.1f696.ttf | Bin 5048 -> 0 bytes
+ .../colrv1/TestCOLRv1.default.E000,E004.ttf        | Bin 900 -> 0 bytes
+ .../colrv1/TestCOLRv1.default.E003,E004.ttf        | Bin 1000 -> 0 bytes
+ .../expected/colrv1/TestCOLRv1.default.E004.ttf    | Bin 744 -> 0 bytes
+ .../TestCOLRv1.default.retain-all-codepoint.ttf    | Bin 1444 -> 0 bytes
+ ...TestCOLRv1.drop-hints-retain-gids.E000,E004.ttf | Bin 984 -> 0 bytes
+ ...TestCOLRv1.drop-hints-retain-gids.E003,E004.ttf | Bin 1076 -> 0 bytes
+ .../TestCOLRv1.drop-hints-retain-gids.E004.ttf     | Bin 836 -> 0 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 1444 -> 0 bytes
+ .../colrv1/TestCOLRv1.drop-hints.E000,E004.ttf     | Bin 900 -> 0 bytes
+ .../colrv1/TestCOLRv1.drop-hints.E003,E004.ttf     | Bin 1000 -> 0 bytes
+ .../expected/colrv1/TestCOLRv1.drop-hints.E004.ttf | Bin 744 -> 0 bytes
+ .../TestCOLRv1.drop-hints.retain-all-codepoint.ttf | Bin 1444 -> 0 bytes
+ .../colrv1/TestCOLRv1.retain-gids.E000,E004.ttf    | Bin 984 -> 0 bytes
+ .../colrv1/TestCOLRv1.retain-gids.E003,E004.ttf    | Bin 1076 -> 0 bytes
+ .../colrv1/TestCOLRv1.retain-gids.E004.ttf         | Bin 836 -> 0 bytes
+ ...TestCOLRv1.retain-gids.retain-all-codepoint.ttf | Bin 1444 -> 0 bytes
+ .../Roboto-Regular.default.1FC,21,41,20,62,63.ttf  | Bin 3076 -> 3004 bytes
+ .../full-font/Roboto-Regular.default.61,62,63.ttf  | Bin 2668 -> 2632 bytes
+ .../Roboto-Regular.default.D7,D8,D9,DA,DE.ttf      | Bin 3020 -> 2960 bytes
+ ...oboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf | Bin 1628 -> 1556 bytes
+ .../Roboto-Regular.drop-hints.61,62,63.ttf         | Bin 1408 -> 1372 bytes
+ .../Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf   | Bin 1644 -> 1584 bytes
+ ...ifVariable-Roman.default.1FC,21,41,20,62,63.ttf | Bin 3960 -> 3888 bytes
+ .../SourceSerifVariable-Roman.default.61,62,63.ttf | Bin 3820 -> 3784 bytes
+ ...eSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf | Bin 4384 -> 4324 bytes
+ ...ariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf | Bin 3948 -> 3876 bytes
+ ...urceSerifVariable-Roman.drop-hints.61,62,63.ttf | Bin 3820 -> 3784 bytes
+ ...rifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 4384 -> 4324 bytes
+ ...gular.default.3042,3044,3046,3048,304A,304B.ttf | Bin 2700 -> 2616 bytes
+ ...gular.default.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2944 -> 2848 bytes
+ .../Mplus1p-Regular.default.61,63,65,6B.ttf        | Bin 2320 -> 2248 bytes
+ ...gular.default.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 3240 -> 3144 bytes
+ .../japanese/Mplus1p-Regular.default.660E.ttf      | Bin 1980 -> 1944 bytes
+ ...ar.drop-hints.3042,3044,3046,3048,304A,304B.ttf | Bin 1972 -> 1888 bytes
+ ...ar.drop-hints.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2216 -> 2120 bytes
+ .../Mplus1p-Regular.drop-hints.61,63,65,6B.ttf     | Bin 1592 -> 1520 bytes
+ ...ar.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 2512 -> 2416 bytes
+ .../japanese/Mplus1p-Regular.drop-hints.660E.ttf   | Bin 1252 -> 1216 bytes
+ ...lar.keep-gdef.3042,3044,3046,3048,304A,304B.ttf | Bin 2700 -> 2616 bytes
+ ...lar.keep-gdef.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2944 -> 2848 bytes
+ .../Mplus1p-Regular.keep-gdef.61,63,65,6B.ttf      | Bin 2320 -> 2248 bytes
+ ...lar.keep-gdef.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 3240 -> 3144 bytes
+ .../japanese/Mplus1p-Regular.keep-gdef.660E.ttf    | Bin 1980 -> 1944 bytes
+ ...les_f1.notdef-outline-retain-gids.41,42,43.otf} | Bin 2052 -> 2016 bytes
+ ...brules_f1.notdef-outline-retain-gids.41,42.otf} | Bin 1948 -> 1912 bytes
+ ...brules_f1.notdef-outline-retain-gids.41,43.otf} | Bin 2068 -> 2020 bytes
+ ..._subrules_f1.notdef-outline-retain-gids.41.otf} | Bin 1932 -> 1896 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3912 -> 3876 bytes
+ ...ltiple_subrules_f1.notdef-outline.41,42,43.otf} | Bin 1340 -> 1304 bytes
+ ..._multiple_subrules_f1.notdef-outline.41,42.otf} | Bin 1240 -> 1204 bytes
+ ..._multiple_subrules_f1.notdef-outline.41,43.otf} | Bin 1348 -> 1300 bytes
+ ...xt1_multiple_subrules_f1.notdef-outline.41.otf} | Bin 1228 -> 1192 bytes
+ ...les_f1.notdef-outline.retain-all-codepoint.otf} | Bin 3912 -> 3876 bytes
+ ...les_f1.notdef-outline-retain-gids.41,42,43.otf} | Bin 2052 -> 2016 bytes
+ ...brules_f1.notdef-outline-retain-gids.41,42.otf} | Bin 1948 -> 1912 bytes
+ ...brules_f1.notdef-outline-retain-gids.41,43.otf} | Bin 2068 -> 2020 bytes
+ ..._subrules_f1.notdef-outline-retain-gids.41.otf} | Bin 1932 -> 1896 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3912 -> 3876 bytes
+ ...ltiple_subrules_f1.notdef-outline.41,42,43.otf} | Bin 1340 -> 1304 bytes
+ ..._multiple_subrules_f1.notdef-outline.41,42.otf} | Bin 1240 -> 1204 bytes
+ ..._multiple_subrules_f1.notdef-outline.41,43.otf} | Bin 1348 -> 1300 bytes
+ ...xt2_multiple_subrules_f1.notdef-outline.41.otf} | Bin 1228 -> 1192 bytes
+ ...les_f1.notdef-outline.retain-all-codepoint.otf} | Bin 3912 -> 3876 bytes
+ .../gpos_context3_simple_f1.default.41,42,43.otf   | Bin 1320 -> 0 bytes
+ ...ple_f1.notdef-outline-retain-gids.41,42,43.otf} | Bin 2008 -> 1996 bytes
+ ...simple_f1.notdef-outline-retain-gids.41,42.otf} | Bin 1904 -> 1892 bytes
+ ..._simple_f1.notdef-outline-retain-gids.41,43.otf | Bin 0 -> 2000 bytes
+ ...t3_simple_f1.notdef-outline-retain-gids.41.otf} | Bin 1888 -> 1876 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3892 -> 3856 bytes
+ ...context3_simple_f1.notdef-outline.41,42,43.otf} | Bin 1296 -> 1284 bytes
+ ...os_context3_simple_f1.notdef-outline.41,42.otf} | Bin 1196 -> 1184 bytes
+ ...os_context3_simple_f1.notdef-outline.41,43.otf} | Bin 1304 -> 1280 bytes
+ .../gpos_context3_simple_f1.notdef-outline.41.otf} | Bin 1184 -> 1172 bytes
+ ...ple_f1.notdef-outline.retain-all-codepoint.otf} | Bin 3892 -> 3856 bytes
+ ...pos_context3_simple_f1.retain-gids.41,42,43.otf | Bin 2032 -> 0 bytes
+ .../gpos_context3_simple_f1.retain-gids.41,43.otf  | Bin 2048 -> 0 bytes
+ ...AdobeVFPrototype.keep-gdef-gpos.41,42,43,57.otf | Bin 5460 -> 0 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41,42,43.otf   | Bin 4928 -> 0 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41,42.otf      | Bin 4448 -> 0 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41,56,57.otf   | Bin 4596 -> 0 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41.otf         | Bin 3748 -> 0 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.42,57.otf      | Bin 4580 -> 0 bytes
+ ...type.notdef-outline-drop-hints.41,42,43,57.otf} | Bin
+ ...ototype.notdef-outline-drop-hints.41,42,43.otf} | Bin
+ ...FPrototype.notdef-outline-drop-hints.41,42.otf} | Bin
+ ...ototype.notdef-outline-drop-hints.41,56,57.otf} | Bin
+ ...beVFPrototype.notdef-outline-drop-hints.41.otf} | Bin
+ ...FPrototype.notdef-outline-drop-hints.42,57.otf} | Bin
+ ...dobeVFPrototype.notdef-outline.41,42,43,57.otf} | Bin
+ ...> AdobeVFPrototype.notdef-outline.41,42,43.otf} | Bin
+ ...f => AdobeVFPrototype.notdef-outline.41,42.otf} | Bin
+ ...> AdobeVFPrototype.notdef-outline.41,56,57.otf} | Bin
+ ....otf => AdobeVFPrototype.notdef-outline.41.otf} | Bin
+ ...f => AdobeVFPrototype.notdef-outline.42,57.otf} | Bin
+ .../Roboto-Regular.default.1E00,303.ttf            | Bin 2520 -> 2472 bytes
+ .../layout.gdef/Roboto-Regular.default.303.ttf     | Bin 2112 -> 2076 bytes
+ .../Roboto-Regular.default.309,20,30F.ttf          | Bin 2208 -> 2148 bytes
+ .../layout.gdef/Roboto-Regular.default.323.ttf     | Bin 2004 -> 1968 bytes
+ .../Roboto-Regular.default.41,42,43.ttf            | Bin 2568 -> 2532 bytes
+ .../Roboto-Regular.drop-hints.1E00,303.ttf         | Bin 1376 -> 1328 bytes
+ .../layout.gdef/Roboto-Regular.drop-hints.303.ttf  | Bin 1108 -> 1072 bytes
+ .../Roboto-Regular.drop-hints.309,20,30F.ttf       | Bin 1168 -> 1108 bytes
+ .../layout.gdef/Roboto-Regular.drop-hints.323.ttf  | Bin 1052 -> 1016 bytes
+ .../Roboto-Regular.drop-hints.41,42,43.ttf         | Bin 1384 -> 1348 bytes
+ .../Roboto-Regular.keep-gdef-gpos.1E00,303.ttf     | Bin 2520 -> 2472 bytes
+ .../Roboto-Regular.keep-gdef-gpos.303.ttf          | Bin 2112 -> 2076 bytes
+ .../Roboto-Regular.keep-gdef-gpos.309,20,30F.ttf   | Bin 2208 -> 2148 bytes
+ .../Roboto-Regular.keep-gdef-gpos.323.ttf          | Bin 2004 -> 1968 bytes
+ .../Roboto-Regular.keep-gdef-gpos.41,42,43.ttf     | Bin 2568 -> 2532 bytes
+ ...os1_2_font.notdef-outline-retain-gids.41,43.otf | Bin 0 -> 1980 bytes
+ ...s1_2_font.notdef-outline-retain-gids.41,46.otf} | Bin 2188 -> 2140 bytes
+ ...gpos1_2_font.notdef-outline-retain-gids.41.otf} | Bin 1888 -> 1856 bytes
+ ...s1_2_font.notdef-outline-retain-gids.42,44.otf} | Bin 2012 -> 1964 bytes
+ ...s1_2_font.notdef-outline-retain-gids.43,46.otf} | Bin 2052 -> 2004 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3816 -> 3780 bytes
+ ...3.otf => gpos1_2_font.notdef-outline.41,43.otf} | Bin 1308 -> 1260 bytes
+ ...6.otf => gpos1_2_font.notdef-outline.41,46.otf} | Bin 1436 -> 1388 bytes
+ .../gpos1_2_font.notdef-outline.41.otf}            | Bin 1184 -> 1152 bytes
+ ...4.otf => gpos1_2_font.notdef-outline.42,44.otf} | Bin 1280 -> 1232 bytes
+ ...6.otf => gpos1_2_font.notdef-outline.43,46.otf} | Bin 1300 -> 1252 bytes
+ ...2_font.notdef-outline.retain-all-codepoint.otf} | Bin 3816 -> 3780 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.41,43.otf | Bin 2028 -> 0 bytes
+ ..._font7.notdef-outline-retain-gids.21,23,25.otf} | Bin 1716 -> 1656 bytes
+ ...2_1_font7.notdef-outline-retain-gids.21,23.otf} | Bin 1580 -> 1532 bytes
+ ...2_1_font7.notdef-outline-retain-gids.2E,23.otf} | Bin 1960 -> 1912 bytes
+ ..._font7.notdef-outline-retain-gids.41,42,43.otf} | Bin 2008 -> 1976 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3816 -> 3780 bytes
+ ...f => gpos2_1_font7.notdef-outline.21,23,25.otf} | Bin 1372 -> 1312 bytes
+ ....otf => gpos2_1_font7.notdef-outline.21,23.otf} | Bin 1252 -> 1204 bytes
+ ....otf => gpos2_1_font7.notdef-outline.2E,23.otf} | Bin 1524 -> 1476 bytes
+ .../gpos2_1_font7.notdef-outline.41,42,43.otf}     | Bin 1296 -> 1264 bytes
+ ..._font7.notdef-outline.retain-all-codepoint.otf} | Bin 3816 -> 3780 bytes
+ ..._font5.notdef-outline-retain-gids.21,23,25.otf} | Bin 1716 -> 1656 bytes
+ ...2_2_font5.notdef-outline-retain-gids.21,23.otf} | Bin 1580 -> 1532 bytes
+ ...2_2_font5.notdef-outline-retain-gids.2E,23.otf} | Bin 1960 -> 1912 bytes
+ ..._font5.notdef-outline-retain-gids.41,42,43.otf} | Bin 2012 -> 1976 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3816 -> 3780 bytes
+ ...f => gpos2_2_font5.notdef-outline.21,23,25.otf} | Bin 1372 -> 1312 bytes
+ ....otf => gpos2_2_font5.notdef-outline.21,23.otf} | Bin 1252 -> 1204 bytes
+ ....otf => gpos2_2_font5.notdef-outline.2E,23.otf} | Bin 1524 -> 1476 bytes
+ ...f => gpos2_2_font5.notdef-outline.41,42,43.otf} | Bin 1300 -> 1264 bytes
+ ..._font5.notdef-outline.retain-all-codepoint.otf} | Bin 3816 -> 3780 bytes
+ ...os3_font3.notdef-outline-retain-gids.28,29.otf} | Bin 1652 -> 1616 bytes
+ ...os3_font3.notdef-outline-retain-gids.28,2B.otf} | Bin 1800 -> 1752 bytes
+ ...os3_font3.notdef-outline-retain-gids.29,2B.otf} | Bin 1712 -> 1664 bytes
+ ..._font3.notdef-outline-retain-gids.41,42,43.otf} | Bin 2012 -> 1972 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3848 -> 3812 bytes
+ ...29.otf => gpos3_font3.notdef-outline.28,29.otf} | Bin 1260 -> 1224 bytes
+ ...2B.otf => gpos3_font3.notdef-outline.28,2B.otf} | Bin 1392 -> 1344 bytes
+ ...2B.otf => gpos3_font3.notdef-outline.29,2B.otf} | Bin 1304 -> 1256 bytes
+ .../gpos3_font3.notdef-outline.41,42,43.otf}       | Bin 1300 -> 1260 bytes
+ ..._font3.notdef-outline.retain-all-codepoint.otf} | Bin 3848 -> 3812 bytes
+ .../gpos4_multiple_anchors_1.default.41,42,43.otf  | Bin 1320 -> 0 bytes
+ .../gpos4_multiple_anchors_1.default.41.otf        | Bin 1208 -> 0 bytes
+ ...s_1.notdef-outline-retain-gids.41,42,43,44.otf} | Bin 2220 -> 2208 bytes
+ ...s_1.notdef-outline-retain-gids.41,42,43,45.otf} | Bin 2268 -> 2220 bytes
+ ...chors_1.notdef-outline-retain-gids.41,42,43.otf | Bin 0 -> 1996 bytes
+ ...anchors_1.notdef-outline-retain-gids.41,42.otf} | Bin 1904 -> 1892 bytes
+ ....notdef-outline-retain-gids.41,43,44,45,46.otf} | Bin 2584 -> 2560 bytes
+ ...hors_1.notdef-outline-retain-gids.41,43,44.otf} | Bin 2240 -> 2216 bytes
+ ...hors_1.notdef-outline-retain-gids.41,43,45.otf} | Bin 2260 -> 2224 bytes
+ ..._anchors_1.notdef-outline-retain-gids.41,43.otf | Bin 0 -> 2000 bytes
+ ...le_anchors_1.notdef-outline-retain-gids.41.otf} | Bin 1892 -> 1876 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3880 -> 3844 bytes
+ ...tiple_anchors_1.notdef-outline.41,42,43,44.otf} | Bin 1504 -> 1492 bytes
+ ...tiple_anchors_1.notdef-outline.41,42,43,45.otf} | Bin 1512 -> 1488 bytes
+ ..._multiple_anchors_1.notdef-outline.41,42,43.otf | Bin 0 -> 1284 bytes
+ ...s4_multiple_anchors_1.notdef-outline.41,42.otf} | Bin 1196 -> 1184 bytes
+ ...le_anchors_1.notdef-outline.41,43,44,45,46.otf} | Bin 1856 -> 1832 bytes
+ ...multiple_anchors_1.notdef-outline.41,43,44.otf} | Bin 1516 -> 1492 bytes
+ ...multiple_anchors_1.notdef-outline.41,43,45.otf} | Bin 1524 -> 1488 bytes
+ ...s4_multiple_anchors_1.notdef-outline.41,43.otf} | Bin 1328 -> 1280 bytes
+ ...gpos4_multiple_anchors_1.notdef-outline.41.otf} | Bin 1188 -> 1172 bytes
+ ...hors_1.notdef-outline.retain-all-codepoint.otf} | Bin 3880 -> 3844 bytes
+ ...os4_multiple_anchors_1.retain-gids.41,42,43.otf | Bin 2032 -> 0 bytes
+ .../gpos4_multiple_anchors_1.retain-gids.41,43.otf | Bin 2048 -> 0 bytes
+ .../gpos4_multiple_anchors_1.retain-gids.41.otf    | Bin 1912 -> 0 bytes
+ .../layout.gpos5/gpos5_font1.default.42.otf        | Bin 1084 -> 0 bytes
+ ...nt1.notdef-outline-retain-gids.41,42,43,44.otf} | Bin 2260 -> 2224 bytes
+ ...nt1.notdef-outline-retain-gids.41,42,43,45.otf} | Bin 2284 -> 2236 bytes
+ ..._font1.notdef-outline-retain-gids.41,42,43.otf} | Bin 2048 -> 2012 bytes
+ ..._font1.notdef-outline-retain-gids.41,42,44.otf} | Bin 2192 -> 2144 bytes
+ ..._font1.notdef-outline-retain-gids.41,42,45.otf} | Bin 2192 -> 2144 bytes
+ ...os5_font1.notdef-outline-retain-gids.41,42.otf} | Bin 1944 -> 1908 bytes
+ ...pos5_font1.notdef-outline-retain-gids.41,43.otf | Bin 0 -> 2016 bytes
+ ... gpos5_font1.notdef-outline-retain-gids.41.otf} | Bin 1928 -> 1892 bytes
+ ... gpos5_font1.notdef-outline-retain-gids.42.otf} | Bin 1800 -> 1764 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3896 -> 3860 bytes
+ ... => gpos5_font1.notdef-outline.41,42,43,44.otf} | Bin 1544 -> 1508 bytes
+ ... => gpos5_font1.notdef-outline.41,42,43,45.otf} | Bin 1552 -> 1504 bytes
+ ...otf => gpos5_font1.notdef-outline.41,42,43.otf} | Bin 1336 -> 1300 bytes
+ ...otf => gpos5_font1.notdef-outline.41,42,44.otf} | Bin 1468 -> 1420 bytes
+ ...otf => gpos5_font1.notdef-outline.41,42,45.otf} | Bin 1456 -> 1408 bytes
+ ...42.otf => gpos5_font1.notdef-outline.41,42.otf} | Bin 1236 -> 1200 bytes
+ ...43.otf => gpos5_font1.notdef-outline.41,43.otf} | Bin 1344 -> 1296 bytes
+ ...lt.41.otf => gpos5_font1.notdef-outline.41.otf} | Bin 1224 -> 1188 bytes
+ .../layout.gpos5/gpos5_font1.notdef-outline.42.otf | Bin 0 -> 1048 bytes
+ ..._font1.notdef-outline.retain-all-codepoint.otf} | Bin 3896 -> 3860 bytes
+ .../layout.gpos5/gpos5_font1.retain-gids.41,43.otf | Bin 2064 -> 0 bytes
+ ...nt1.notdef-outline-retain-gids.41,42,43,44.otf} | Bin 2244 -> 2184 bytes
+ ...nt1.notdef-outline-retain-gids.41,42,43,45.otf} | Bin 2244 -> 2196 bytes
+ ...6_font1.notdef-outline-retain-gids.41,42,43.otf | Bin 0 -> 1972 bytes
+ ...os6_font1.notdef-outline-retain-gids.41,42.otf} | Bin 1928 -> 1868 bytes
+ ....notdef-outline-retain-gids.41,43,44,45,46.otf} | Bin 2608 -> 2536 bytes
+ ..._font1.notdef-outline-retain-gids.41,43,44.otf} | Bin 2264 -> 2192 bytes
+ ..._font1.notdef-outline-retain-gids.41,43,45.otf} | Bin 2284 -> 2200 bytes
+ ...pos6_font1.notdef-outline-retain-gids.41,43.otf | Bin 0 -> 1976 bytes
+ .../gpos6_font1.notdef-outline-retain-gids.41.otf} | Bin 1912 -> 1852 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3856 -> 3820 bytes
+ .../gpos6_font1.notdef-outline.41,42,43,44.otf}    | Bin 1528 -> 1468 bytes
+ .../gpos6_font1.notdef-outline.41,42,43,45.otf}    | Bin 1536 -> 1464 bytes
+ .../gpos6_font1.notdef-outline.41,42,43.otf        | Bin 0 -> 1260 bytes
+ .../gpos6_font1.notdef-outline.41,42.otf}          | Bin 1220 -> 1160 bytes
+ .../gpos6_font1.notdef-outline.41,43,44,45,46.otf} | Bin 1880 -> 1808 bytes
+ .../gpos6_font1.notdef-outline.41,43,44.otf}       | Bin 1540 -> 1468 bytes
+ .../gpos6_font1.notdef-outline.41,43,45.otf}       | Bin 1548 -> 1464 bytes
+ .../gpos6_font1.notdef-outline.41,43.otf}          | Bin 1328 -> 1256 bytes
+ .../gpos6_font1.notdef-outline.41.otf}             | Bin 1208 -> 1148 bytes
+ ..._font1.notdef-outline.retain-all-codepoint.otf} | Bin 3856 -> 3820 bytes
+ .../layout.gpos6/gpos6_font1.retain-gids.41,43.otf | Bin 2024 -> 0 bytes
+ ...ular.default.627,644,623,62D,644,627,645,2E.ttf | Bin 12684 -> 12592 bytes
+ .../Amiri-Regular.default.627,644,62D,628.ttf      | Bin 9992 -> 9924 bytes
+ .../Amiri-Regular.default.627,644.ttf              | Bin 4168 -> 4112 bytes
+ ...-Regular.default.633,645,627,621,20,644,627.ttf | Bin 9516 -> 9424 bytes
+ .../Amiri-Regular.default.63A,64A,631.ttf          | Bin 7324 -> 7256 bytes
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttf | Bin 48012 -> 47920 bytes
+ .../Amiri-Regular.retain-gids.627,644,62D,628.ttf  | Bin 42640 -> 42572 bytes
+ .../Amiri-Regular.retain-gids.627,644.ttf          | Bin 36696 -> 36640 bytes
+ ...ular.retain-gids.633,645,627,621,20,644,627.ttf | Bin 45908 -> 45816 bytes
+ .../Amiri-Regular.retain-gids.63A,64A,631.ttf      | Bin 37988 -> 37920 bytes
+ ...ning1_multiple_subrules_f1.default.41,42,43.otf | Bin 1344 -> 0 bytes
+ ..._f1.notdef-outline-retain-gids.30,31,32,33.otf} | Bin 2304 -> 2292 bytes
+ ...ules_f1.notdef-outline-retain-gids.41,42,43.otf | Bin 0 -> 2020 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3916 -> 3880 bytes
+ ...ple_subrules_f1.notdef-outline.30,31,32,33.otf} | Bin 1832 -> 1820 bytes
+ ...ultiple_subrules_f1.notdef-outline.41,42,43.otf | Bin 0 -> 1308 bytes
+ ...les_f1.notdef-outline.retain-all-codepoint.otf} | Bin 3916 -> 3880 bytes
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.otf | Bin 2056 -> 0 bytes
+ ...ning2_multiple_subrules_f1.default.41,42,43.otf | Bin 1344 -> 0 bytes
+ ..._f1.notdef-outline-retain-gids.30,31,32,33.otf} | Bin 2328 -> 2292 bytes
+ ...ules_f1.notdef-outline-retain-gids.41,42,43.otf | Bin 0 -> 2020 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3916 -> 3880 bytes
+ ...ple_subrules_f1.notdef-outline.30,31,32,33.otf} | Bin 1856 -> 1820 bytes
+ ...ultiple_subrules_f1.notdef-outline.41,42,43.otf | Bin 0 -> 1308 bytes
+ ...les_f1.notdef-outline.retain-all-codepoint.otf} | Bin 3916 -> 3880 bytes
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.otf | Bin 2056 -> 0 bytes
+ .../gpos_chaining3_simple_f1.default.41,42,43.otf  | Bin 1320 -> 0 bytes
+ ..._f1.notdef-outline-retain-gids.30,31,32,33.otf} | Bin 2328 -> 2268 bytes
+ ...mple_f1.notdef-outline-retain-gids.41,42,43.otf | Bin 0 -> 1996 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3892 -> 3856 bytes
+ ...ning3_simple_f1.notdef-outline.30,31,32,33.otf} | Bin 1856 -> 1796 bytes
+ ...chaining3_simple_f1.notdef-outline.41,42,43.otf | Bin 0 -> 1284 bytes
+ ...ple_f1.notdef-outline.retain-all-codepoint.otf} | Bin 3892 -> 3856 bytes
+ ...os_chaining3_simple_f1.retain-gids.41,42,43.otf | Bin 2032 -> 0 bytes
+ .../layout.gpos9/gpos9_font2.default.42.otf        | Bin 1044 -> 0 bytes
+ ...os9_font2.notdef-outline-retain-gids.41,42.otf} | Bin 1928 -> 1868 bytes
+ .../gpos9_font2.notdef-outline-retain-gids.41.otf  | Bin 0 -> 1852 bytes
+ ... gpos9_font2.notdef-outline-retain-gids.42.otf} | Bin 1760 -> 1724 bytes
+ .../gpos9_font2.notdef-outline.41,42.otf}          | Bin 1220 -> 1160 bytes
+ .../layout.gpos9/gpos9_font2.notdef-outline.41.otf | Bin 0 -> 1148 bytes
+ .../layout.gpos9/gpos9_font2.notdef-outline.42.otf | Bin 0 -> 1008 bytes
+ ...ub_alternate_substitution.default.53A9,53F1.otf | Bin 4372 -> 4316 bytes
+ .../gsub_alternate_substitution.default.53A9.otf   | Bin 3928 -> 3884 bytes
+ .../gsub_alternate_substitution.default.53F1.otf   | Bin 2484 -> 2440 bytes
+ ...e_substitution.default.retain-all-codepoint.otf | Bin 6064 -> 5984 bytes
+ ...lternate_substitution.retain-gids.53A9,53F1.otf | Bin 4496 -> 4440 bytes
+ ...sub_alternate_substitution.retain-gids.53A9.otf | Bin 4080 -> 4036 bytes
+ ...sub_alternate_substitution.retain-gids.53F1.otf | Bin 2676 -> 2632 bytes
+ ...bstitution.retain-gids.retain-all-codepoint.otf | Bin 6156 -> 6076 bytes
+ ...les_f2.notdef-outline-retain-gids.41,42,43.otf} | Bin 2064 -> 2028 bytes
+ ...brules_f2.notdef-outline-retain-gids.41,42.otf} | Bin 1960 -> 1924 bytes
+ ...brules_f2.notdef-outline-retain-gids.41,43.otf} | Bin 2080 -> 2032 bytes
+ ..._subrules_f2.notdef-outline-retain-gids.41.otf} | Bin 1944 -> 1908 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3924 -> 3888 bytes
+ ...ltiple_subrules_f2.notdef-outline.41,42,43.otf} | Bin 1352 -> 1316 bytes
+ ..._multiple_subrules_f2.notdef-outline.41,42.otf} | Bin 1252 -> 1216 bytes
+ ..._multiple_subrules_f2.notdef-outline.41,43.otf} | Bin 1360 -> 1312 bytes
+ ...xt1_multiple_subrules_f2.notdef-outline.41.otf} | Bin 1240 -> 1204 bytes
+ ...les_f2.notdef-outline.retain-all-codepoint.otf} | Bin 3924 -> 3888 bytes
+ ...les_f2.notdef-outline-retain-gids.41,42,43.otf} | Bin 2064 -> 2028 bytes
+ ...brules_f2.notdef-outline-retain-gids.41,42.otf} | Bin 1960 -> 1924 bytes
+ ...brules_f2.notdef-outline-retain-gids.41,43.otf} | Bin 2080 -> 2032 bytes
+ ..._subrules_f2.notdef-outline-retain-gids.41.otf} | Bin 1944 -> 1908 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3924 -> 3888 bytes
+ ...ltiple_subrules_f2.notdef-outline.41,42,43.otf} | Bin 1352 -> 1316 bytes
+ ..._multiple_subrules_f2.notdef-outline.41,42.otf} | Bin 1252 -> 1216 bytes
+ ..._multiple_subrules_f2.notdef-outline.41,43.otf} | Bin 1360 -> 1312 bytes
+ ...xt2_multiple_subrules_f2.notdef-outline.41.otf} | Bin 1240 -> 1204 bytes
+ ...les_f2.notdef-outline.retain-all-codepoint.otf} | Bin 3924 -> 3888 bytes
+ ...ive_f1.notdef-outline-retain-gids.41,42,43.otf} | Bin 2044 -> 2016 bytes
+ ...essive_f1.notdef-outline-retain-gids.41,42.otf} | Bin 1948 -> 1912 bytes
+ ...cessive_f1.notdef-outline-retain-gids.41,43.otf | Bin 0 -> 2020 bytes
+ ...uccessive_f1.notdef-outline-retain-gids.41.otf} | Bin 1932 -> 1896 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3912 -> 3876 bytes
+ ...ext3_successive_f1.notdef-outline.41,42,43.otf} | Bin 1332 -> 1304 bytes
+ ...ontext3_successive_f1.notdef-outline.41,42.otf} | Bin 1240 -> 1204 bytes
+ ...ontext3_successive_f1.notdef-outline.41,43.otf} | Bin 1348 -> 1300 bytes
+ ...b_context3_successive_f1.notdef-outline.41.otf} | Bin 1228 -> 1192 bytes
+ ...ive_f1.notdef-outline.retain-all-codepoint.otf} | Bin 3912 -> 3876 bytes
+ ...ub_context3_successive_f1.retain-gids.41,43.otf | Bin 2068 -> 0 bytes
+ ...ning1_multiple_subrules_f1.default.41,42,43.otf | Bin 1356 -> 0 bytes
+ ..._f1.notdef-outline-retain-gids.30,31,32,33.otf} | Bin 2316 -> 2304 bytes
+ ...les_f1.notdef-outline-retain-gids.41,42,43.otf} | Bin 2052 -> 2032 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3928 -> 3892 bytes
+ ...ple_subrules_f1.notdef-outline.30,31,32,33.otf} | Bin 1844 -> 1832 bytes
+ ...ltiple_subrules_f1.notdef-outline.41,42,43.otf} | Bin 1340 -> 1320 bytes
+ ...les_f1.notdef-outline.retain-all-codepoint.otf} | Bin 3928 -> 3892 bytes
+ ..._f1.notdef-outline-retain-gids.30,31,32,33.otf} | Bin 2340 -> 2304 bytes
+ ...les_f1.notdef-outline-retain-gids.41,42,43.otf} | Bin 2068 -> 2032 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3928 -> 3892 bytes
+ ...ple_subrules_f1.notdef-outline.30,31,32,33.otf} | Bin 1868 -> 1832 bytes
+ ...ltiple_subrules_f1.notdef-outline.41,42,43.otf} | Bin 1356 -> 1320 bytes
+ ...les_f1.notdef-outline.retain-all-codepoint.otf} | Bin 3928 -> 3892 bytes
+ ..._f2.notdef-outline-retain-gids.30,31,32,33.otf} | Bin 2340 -> 2280 bytes
+ ...ple_f2.notdef-outline-retain-gids.41,42,43.otf} | Bin 2068 -> 2008 bytes
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin 3904 -> 3868 bytes
+ ...ning3_simple_f2.notdef-outline.30,31,32,33.otf} | Bin 1868 -> 1808 bytes
+ ...chaining3_simple_f2.notdef-outline.41,42,43.otf | Bin 0 -> 1296 bytes
+ ...ple_f2.notdef-outline.retain-all-codepoint.otf} | Bin 3904 -> 3868 bytes
+ ...ine-retain-gids.41,42,43,44,45,46,47,48,49.otf} | Bin
+ ...f-outline-retain-gids.41,42,43,44,45,46,47.otf} | Bin
+ ...f-outline-retain-gids.41,42,43,44,45,46,4D.otf} | Bin
+ ...f-outline-retain-gids.41,42,43,44,45,46,51.otf} | Bin
+ ...tdef-outline-retain-gids.41,42,43,44,45,46.otf} | Bin
+ ...reated.notdef-outline-retain-gids.41,42,43.otf} | Bin
+ ...ally_created.notdef-outline-retain-gids.41.otf} | Bin
+ ...ally_created.notdef-outline-retain-gids.61.otf} | Bin
+ ...f-outline-retain-gids.retain-all-codepoint.otf} | Bin
+ ....notdef-outline.41,42,43,44,45,46,47,48,49.otf} | Bin
+ ...reated.notdef-outline.41,42,43,44,45,46,47.otf} | Bin
+ ...reated.notdef-outline.41,42,43,44,45,46,4D.otf} | Bin
+ ...reated.notdef-outline.41,42,43,44,45,46,51.otf} | Bin
+ ...y_created.notdef-outline.41,42,43,44,45,46.otf} | Bin
+ ...8_manually_created.notdef-outline.41,42,43.otf} | Bin
+ ...> gsub8_manually_created.notdef-outline.41.otf} | Bin
+ ...> gsub8_manually_created.notdef-outline.61.otf} | Bin
+ ...reated.notdef-outline.retain-all-codepoint.otf} | Bin
+ .../Roboto-Regular.smallcaps.default.41,42,43.ttf  | Bin 2460 -> 2424 bytes
+ .../Roboto-Regular.smallcaps.default.41,43.ttf     | Bin 2280 -> 2232 bytes
+ .../layout/Roboto-Regular.smallcaps.default.41.ttf | Bin 2080 -> 2044 bytes
+ .../layout/Roboto-Regular.smallcaps.default.43.ttf | Bin 2112 -> 2076 bytes
+ .../Roboto-Regular.smallcaps.default.CA,CB.ttf     | Bin 2384 -> 2348 bytes
+ ...boto-Regular.smallcaps.retain-gids.41,42,43.ttf | Bin 2712 -> 2676 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.41,43.ttf | Bin 2544 -> 2496 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.41.ttf    | Bin 2332 -> 2296 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.43.ttf    | Bin 2380 -> 2344 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.CA,CB.ttf | Bin 6472 -> 6436 bytes
+ .../notdef-outline-desubroutinize-retain-gids.txt  |   3 +
+ .../profiles/notdef-outline-desubroutinize.txt     |   2 +
+ ...tline-drop-hints-desubroutinize-retain-gids.txt |   4 +
+ .../notdef-outline-drop-hints-desubroutinize.txt   |   3 +
+ .../notdef-outline-drop-hints-retain-gids.txt      |   3 +
+ .../data/profiles/notdef-outline-drop-hints.txt    |   2 +
+ test/subset/data/profiles/notdef-outline-gids.txt  |   2 +
+ .../data/profiles/notdef-outline-name-ids.txt      |   2 +
+ .../data/profiles/notdef-outline-retain-gids.txt   |   2 +
+ test/subset/data/tests/cff-full-font.tests         |  16 ++--
+ test/subset/data/tests/cmap14.tests                |  12 +--
+ test/subset/data/tests/layout.context.tests        |   4 +-
+ test/subset/data/tests/layout.gdef-varstore.tests  |   5 +-
+ test/subset/data/tests/layout.gpos.tests           |   4 +-
+ test/subset/data/tests/layout.gpos2.tests          |   4 +-
+ test/subset/data/tests/layout.gpos3.tests          |   4 +-
+ test/subset/data/tests/layout.gpos4.tests          |   4 +-
+ test/subset/data/tests/layout.gpos5.tests          |   4 +-
+ test/subset/data/tests/layout.gpos6.tests          |   4 +-
+ test/subset/data/tests/layout.gpos8.tests          |   4 +-
+ test/subset/data/tests/layout.gpos9.tests          |   4 +-
+ test/subset/data/tests/layout.gsub5.tests          |   4 +-
+ test/subset/data/tests/layout.gsub6.tests          |   4 +-
+ test/subset/data/tests/layout.gsub8.tests          |   4 +-
+ 681 files changed, 162 insertions(+), 44 deletions(-)
+
+commit 84946e4d2c0c362e969eb13e5a6acae0a76c6015
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Thu Aug 5 00:05:26 2021 +0200
+
+    [test] Suggest updating the expectation if ttx matches
+    
+    https://github.com/harfbuzz/harfbuzz/issues/3089#issuecomment-892208892
+
+ test/subset/run-tests.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit 09c3b82f5e5a25f07145f405776c466b02743442
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jul 29 17:49:10 2021 -0600
+
+    [buffer] When shifting forward, leave no gap
+    
+    Trying to see if this fixes the fuzzer issue:
+    https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36236
+
+ src/hb-buffer.cc | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+commit 5086e10538b893294f1b64a33deb8c5af4d22f1b
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jul 29 17:03:55 2021 -0600
+
+    [test] Add failing fuzzer test case
+    
+    From https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36236
+    https://oss-fuzz.com/testcase-detail/5061207689134080
+
+ ...z-testcase-minimized-hb-shape-fuzzer-5061207689134080 | Bin 0 -> 3344 bytes
+ 1 file changed, 0 insertions(+), 0 deletions(-)
+
+commit a150baf32c2cbb03a0efd6e260904c57d93275d9
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 4 11:53:27 2021 -0600
+
+    [ot-map] Allocate top mask bit as global bit
+    
+    Avoids undefined-shift of 32 in the following line:
+    
+      map->mask = (1u << (next_bit + bits_needed)) - (1u << next_bit)
+    
+    Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=1219263
+
+ src/hb-ot-map.cc | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+commit f698fe5aeede4027230046d4b06c265b33f0085a
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Aug 4 12:08:18 2021 +0200
+
+    [test] Always fail subset tests if hashes don’t match
+    
+    Regardless of the pre sentience or absence of fonttools.
+
+ test/subset/run-tests.py | 65 +++++++++++++++++++++---------------------------
+ 1 file changed, 28 insertions(+), 37 deletions(-)
+
+commit e80c86ffa6868f8bbcfd3a21b4b82a1436527100
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 4 10:24:14 2021 -0600
+
+    [coretext] Fix formatting
+
+ src/hb-coretext.cc | 69 +++++++++++++++++++++++++++++-------------------------
+ 1 file changed, 37 insertions(+), 32 deletions(-)
+
+commit db6fbe29e47ce871e66ebbf2eb93657bad429d13
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Aug 3 10:13:17 2021 -0600
+
+    [util/hb-subset] Use driver_t<> in outer block as well
+    
+    https://github.com/harfbuzz/harfbuzz/commit/a363ce573c3aa706de3aecf0515519a5d7842af2#r54282223
+
+ util/hb-subset.cc | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+commit 66aef2818e1450a14549ca3e202e094e335f6b78
+Author: Simon Cozens <simon at simon-cozens.org>
+Date:   Wed Aug 4 13:34:52 2021 +0100
+
+    Support passing variations to coretext shaper
+
+ src/hb-coretext.cc | 33 +++++++++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+commit f25daa4794f22f7e0eaddb77ef7b47c8c6584453
+Merge: 62a535f15 9f544e500
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Aug 4 00:06:32 2021 -0600
+
+    Merge pull request #3110 from harfbuzz/subset-tests-fast
+    
+    [test] Make subset tests fast
+
+commit 9f544e5008e27346ace98abd7c3e8e5184724920
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Aug 4 04:20:14 2021 +0200
+
+    [test] Don’t skip subset tests early
+    
+    Check for FontTools only when the checksums are mismatching.
+
+ test/subset/run-tests.py | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+commit b0841533174b752f9ac4b3c62f81c98cb7be197a
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Aug 4 04:12:31 2021 +0200
+
+    [test] Remove subset tests from the slow suite
+
+ test/subset/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 7ccc52b0751795b32db989b71295f1fee2c9ab21
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Aug 4 03:57:18 2021 +0200
+
+    [test] Compare sha256 hash before TTX dumps
+    
+    Most of time the files are identical, so instead of comparing the TTX
+    dump we can check sha256 hashes of the files first and if they match, we
+    don’t have to check the TTX dumps at all, making the subset tests orders
+    of magnitude faster.
+    
+    time meson test --suite=subset down from:
+    real    0m19.418s
+    user    0m38.171s
+    sys     0m3.587s
+    
+    to:
+    real    0m3.102s
+    user    0m8.622s
+    sys     0m1.701s
+    
+    The expected files have been replaced by hb-subset output so they are
+    bit-identical where FontTools output might not.
+    
+    The generate-expected-outputs.py now compares the hb-subset output with
+    fontttols subset and errors of they don’t match.
+
+ .../Comfortaa-Regular-new.default.61,62,63.ttf     | Bin 7060 -> 7060 bytes
+ .../basics/Comfortaa-Regular-new.default.61,63.ttf | Bin 6692 -> 6692 bytes
+ .../basics/Comfortaa-Regular-new.default.61.ttf    | Bin 6328 -> 6328 bytes
+ .../basics/Comfortaa-Regular-new.default.62.ttf    | Bin 6200 -> 6200 bytes
+ .../basics/Comfortaa-Regular-new.default.63.ttf    | Bin 6256 -> 6256 bytes
+ ...aa-Regular-new.default.retain-all-codepoint.ttf | Bin 220928 -> 222756 bytes
+ ...Regular-new.drop-hints-retain-gids.61,62,63.ttf | Bin 4608 -> 4608 bytes
+ ...aa-Regular-new.drop-hints-retain-gids.61,63.ttf | Bin 4312 -> 4312 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.61.ttf | Bin 3724 -> 3724 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.62.ttf | Bin 3900 -> 3900 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.63.ttf | Bin 3972 -> 3972 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 189800 -> 191632 bytes
+ .../Comfortaa-Regular-new.drop-hints.61,62,63.ttf  | Bin 2600 -> 2600 bytes
+ .../Comfortaa-Regular-new.drop-hints.61,63.ttf     | Bin 2296 -> 2296 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.61.ttf | Bin 1976 -> 1976 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.62.ttf | Bin 1900 -> 1900 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.63.ttf | Bin 1968 -> 1968 bytes
+ ...Regular-new.drop-hints.retain-all-codepoint.ttf | Bin 189756 -> 191584 bytes
+ .../basics/Comfortaa-Regular-new.gids.61,62,63.ttf | Bin 7988 -> 7988 bytes
+ .../basics/Comfortaa-Regular-new.gids.61,63.ttf    | Bin 7628 -> 7628 bytes
+ .../basics/Comfortaa-Regular-new.gids.61.ttf       | Bin 7256 -> 7256 bytes
+ .../basics/Comfortaa-Regular-new.gids.62.ttf       | Bin 7184 -> 7184 bytes
+ .../basics/Comfortaa-Regular-new.gids.63.ttf       | Bin 7180 -> 7180 bytes
+ ...ortaa-Regular-new.gids.retain-all-codepoint.ttf | Bin 220928 -> 222756 bytes
+ .../Comfortaa-Regular-new.glyph-names.61,62,63.ttf | Bin 7072 -> 7072 bytes
+ .../Comfortaa-Regular-new.glyph-names.61,63.ttf    | Bin 6700 -> 6700 bytes
+ .../Comfortaa-Regular-new.glyph-names.61.ttf       | Bin 6336 -> 6336 bytes
+ .../Comfortaa-Regular-new.glyph-names.62.ttf       | Bin 6208 -> 6208 bytes
+ .../Comfortaa-Regular-new.glyph-names.63.ttf       | Bin 6264 -> 6264 bytes
+ ...egular-new.glyph-names.retain-all-codepoint.ttf | Bin 227920 -> 229748 bytes
+ ...gular-new.keep-all-layout-features.61,62,63.ttf | Bin 7504 -> 7508 bytes
+ ...-Regular-new.keep-all-layout-features.61,63.ttf | Bin 7140 -> 7144 bytes
+ ...taa-Regular-new.keep-all-layout-features.61.ttf | Bin 6772 -> 6776 bytes
+ ...taa-Regular-new.keep-all-layout-features.62.ttf | Bin 6200 -> 6200 bytes
+ ...taa-Regular-new.keep-all-layout-features.63.ttf | Bin 6256 -> 6256 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttf | Bin 221620 -> 223452 bytes
+ ...fortaa-Regular-new.layout-features.61,62,63.ttf | Bin 7060 -> 7060 bytes
+ ...Comfortaa-Regular-new.layout-features.61,63.ttf | Bin 6692 -> 6692 bytes
+ .../Comfortaa-Regular-new.layout-features.61.ttf   | Bin 6328 -> 6328 bytes
+ .../Comfortaa-Regular-new.layout-features.62.ttf   | Bin 6200 -> 6200 bytes
+ .../Comfortaa-Regular-new.layout-features.63.ttf   | Bin 6256 -> 6256 bytes
+ ...ar-new.layout-features.retain-all-codepoint.ttf | Bin 219124 -> 220948 bytes
+ .../Comfortaa-Regular-new.name-ids.61,62,63.ttf    | Bin 6800 -> 6800 bytes
+ .../Comfortaa-Regular-new.name-ids.61,63.ttf       | Bin 6432 -> 6432 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.61.ttf   | Bin 6068 -> 6068 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.62.ttf   | Bin 5940 -> 5940 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.63.ttf   | Bin 5996 -> 5996 bytes
+ ...a-Regular-new.name-ids.retain-all-codepoint.ttf | Bin 220668 -> 222496 bytes
+ ...mfortaa-Regular-new.name-languages.61,62,63.ttf | Bin 7060 -> 7060 bytes
+ .../Comfortaa-Regular-new.name-languages.61,63.ttf | Bin 6692 -> 6692 bytes
+ .../Comfortaa-Regular-new.name-languages.61.ttf    | Bin 6328 -> 6328 bytes
+ .../Comfortaa-Regular-new.name-languages.62.ttf    | Bin 6200 -> 6200 bytes
+ .../Comfortaa-Regular-new.name-languages.63.ttf    | Bin 6256 -> 6256 bytes
+ ...lar-new.name-languages.retain-all-codepoint.ttf | Bin 220928 -> 222756 bytes
+ .../Comfortaa-Regular-new.name-legacy.61,62,63.ttf | Bin 7060 -> 7060 bytes
+ .../Comfortaa-Regular-new.name-legacy.61,63.ttf    | Bin 6692 -> 6692 bytes
+ .../Comfortaa-Regular-new.name-legacy.61.ttf       | Bin 6328 -> 6328 bytes
+ .../Comfortaa-Regular-new.name-legacy.62.ttf       | Bin 6200 -> 6200 bytes
+ .../Comfortaa-Regular-new.name-legacy.63.ttf       | Bin 6256 -> 6256 bytes
+ ...egular-new.name-legacy.retain-all-codepoint.ttf | Bin 220928 -> 222756 bytes
+ ...egular-new.no-prune-unicode-ranges.61,62,63.ttf | Bin 7060 -> 7060 bytes
+ ...a-Regular-new.no-prune-unicode-ranges.61,63.ttf | Bin 6692 -> 6692 bytes
+ ...rtaa-Regular-new.no-prune-unicode-ranges.61.ttf | Bin 6328 -> 6328 bytes
+ ...rtaa-Regular-new.no-prune-unicode-ranges.62.ttf | Bin 6200 -> 6200 bytes
+ ...rtaa-Regular-new.no-prune-unicode-ranges.63.ttf | Bin 6256 -> 6256 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf | Bin 220928 -> 222756 bytes
+ ...mfortaa-Regular-new.notdef-outline.61,62,63.ttf | Bin 7652 -> 7652 bytes
+ .../Comfortaa-Regular-new.notdef-outline.61,63.ttf | Bin 7284 -> 7284 bytes
+ .../Comfortaa-Regular-new.notdef-outline.61.ttf    | Bin 6920 -> 6920 bytes
+ .../Comfortaa-Regular-new.notdef-outline.62.ttf    | Bin 6796 -> 6796 bytes
+ .../Comfortaa-Regular-new.notdef-outline.63.ttf    | Bin 6844 -> 6844 bytes
+ ...lar-new.notdef-outline.retain-all-codepoint.ttf | Bin 221524 -> 223352 bytes
+ .../Comfortaa-Regular-new.retain-gids.61,62,63.ttf | Bin 9068 -> 9068 bytes
+ .../Comfortaa-Regular-new.retain-gids.61,63.ttf    | Bin 8708 -> 8708 bytes
+ .../Comfortaa-Regular-new.retain-gids.61.ttf       | Bin 8076 -> 8076 bytes
+ .../Comfortaa-Regular-new.retain-gids.62.ttf       | Bin 8200 -> 8200 bytes
+ .../Comfortaa-Regular-new.retain-gids.63.ttf       | Bin 8260 -> 8260 bytes
+ ...egular-new.retain-gids.retain-all-codepoint.ttf | Bin 220972 -> 222804 bytes
+ ...numMyeongjo-Regular-subset.default.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.default.61,63.ttf | Bin 3580 -> 3580 bytes
+ .../NanumMyeongjo-Regular-subset.default.61.ttf    | Bin 3156 -> 3156 bytes
+ .../NanumMyeongjo-Regular-subset.default.62.ttf    | Bin 3180 -> 3180 bytes
+ .../NanumMyeongjo-Regular-subset.default.63.ttf    | Bin 3048 -> 3048 bytes
+ ...Regular-subset.default.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...ular-subset.drop-hints-retain-gids.61,62,63.ttf | Bin 1452 -> 1452 bytes
+ ...Regular-subset.drop-hints-retain-gids.61,63.ttf | Bin 1284 -> 1284 bytes
+ ...jo-Regular-subset.drop-hints-retain-gids.61.ttf | Bin 1128 -> 1128 bytes
+ ...jo-Regular-subset.drop-hints-retain-gids.62.ttf | Bin 1144 -> 1144 bytes
+ ...jo-Regular-subset.drop-hints-retain-gids.63.ttf | Bin 1116 -> 1116 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 3536 -> 3536 bytes
+ ...Myeongjo-Regular-subset.drop-hints.61,62,63.ttf | Bin 1452 -> 1452 bytes
+ ...numMyeongjo-Regular-subset.drop-hints.61,63.ttf | Bin 1276 -> 1276 bytes
+ .../NanumMyeongjo-Regular-subset.drop-hints.61.ttf | Bin 1128 -> 1128 bytes
+ .../NanumMyeongjo-Regular-subset.drop-hints.62.ttf | Bin 1140 -> 1140 bytes
+ .../NanumMyeongjo-Regular-subset.drop-hints.63.ttf | Bin 1104 -> 1104 bytes
+ ...ular-subset.drop-hints.retain-all-codepoint.ttf | Bin 3536 -> 3536 bytes
+ .../NanumMyeongjo-Regular-subset.gids.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.61,63.ttf    | Bin 4128 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.61.ttf       | Bin 4128 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.62.ttf       | Bin 4128 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.63.ttf       | Bin 4128 -> 4128 bytes
+ ...jo-Regular-subset.gids.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...yeongjo-Regular-subset.glyph-names.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...umMyeongjo-Regular-subset.glyph-names.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.61.ttf | Bin 3156 -> 3156 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.62.ttf | Bin 3180 -> 3180 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.63.ttf | Bin 3048 -> 3048 bytes
+ ...lar-subset.glyph-names.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...ar-subset.keep-all-layout-features.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...gular-subset.keep-all-layout-features.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...-Regular-subset.keep-all-layout-features.61.ttf | Bin 3156 -> 3156 bytes
+ ...-Regular-subset.keep-all-layout-features.62.ttf | Bin 3180 -> 3180 bytes
+ ...-Regular-subset.keep-all-layout-features.63.ttf | Bin 3048 -> 3048 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...gjo-Regular-subset.layout-features.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...eongjo-Regular-subset.layout-features.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...mMyeongjo-Regular-subset.layout-features.61.ttf | Bin 3156 -> 3156 bytes
+ ...mMyeongjo-Regular-subset.layout-features.62.ttf | Bin 3180 -> 3180 bytes
+ ...mMyeongjo-Regular-subset.layout-features.63.ttf | Bin 3048 -> 3048 bytes
+ ...subset.layout-features.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...umMyeongjo-Regular-subset.name-ids.61,62,63.ttf | Bin 3924 -> 3924 bytes
+ ...NanumMyeongjo-Regular-subset.name-ids.61,63.ttf | Bin 3376 -> 3376 bytes
+ .../NanumMyeongjo-Regular-subset.name-ids.61.ttf   | Bin 2952 -> 2952 bytes
+ .../NanumMyeongjo-Regular-subset.name-ids.62.ttf   | Bin 2976 -> 2976 bytes
+ .../NanumMyeongjo-Regular-subset.name-ids.63.ttf   | Bin 2844 -> 2844 bytes
+ ...egular-subset.name-ids.retain-all-codepoint.ttf | Bin 9320 -> 9320 bytes
+ ...ngjo-Regular-subset.name-languages.61,62,63.ttf | Bin 4172 -> 4172 bytes
+ ...yeongjo-Regular-subset.name-languages.61,63.ttf | Bin 3624 -> 3624 bytes
+ ...umMyeongjo-Regular-subset.name-languages.61.ttf | Bin 3200 -> 3200 bytes
+ ...umMyeongjo-Regular-subset.name-languages.62.ttf | Bin 3224 -> 3224 bytes
+ ...umMyeongjo-Regular-subset.name-languages.63.ttf | Bin 3092 -> 3092 bytes
+ ...-subset.name-languages.retain-all-codepoint.ttf | Bin 9568 -> 9568 bytes
+ ...yeongjo-Regular-subset.name-legacy.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...umMyeongjo-Regular-subset.name-legacy.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...NanumMyeongjo-Regular-subset.name-legacy.61.ttf | Bin 3156 -> 3156 bytes
+ ...NanumMyeongjo-Regular-subset.name-legacy.62.ttf | Bin 3180 -> 3180 bytes
+ ...NanumMyeongjo-Regular-subset.name-legacy.63.ttf | Bin 3048 -> 3048 bytes
+ ...lar-subset.name-legacy.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...lar-subset.no-prune-unicode-ranges.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...egular-subset.no-prune-unicode-ranges.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...o-Regular-subset.no-prune-unicode-ranges.61.ttf | Bin 3156 -> 3156 bytes
+ ...o-Regular-subset.no-prune-unicode-ranges.62.ttf | Bin 3180 -> 3180 bytes
+ ...o-Regular-subset.no-prune-unicode-ranges.63.ttf | Bin 3048 -> 3048 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...ngjo-Regular-subset.notdef-outline.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...yeongjo-Regular-subset.notdef-outline.61,63.ttf | Bin 3580 -> 3580 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.61.ttf | Bin 3156 -> 3156 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.62.ttf | Bin 3180 -> 3180 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.63.ttf | Bin 3048 -> 3048 bytes
+ ...-subset.notdef-outline.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ ...yeongjo-Regular-subset.retain-gids.61,62,63.ttf | Bin 4128 -> 4128 bytes
+ ...umMyeongjo-Regular-subset.retain-gids.61,63.ttf | Bin 3588 -> 3588 bytes
+ ...NanumMyeongjo-Regular-subset.retain-gids.61.ttf | Bin 3156 -> 3156 bytes
+ ...NanumMyeongjo-Regular-subset.retain-gids.62.ttf | Bin 3184 -> 3184 bytes
+ ...NanumMyeongjo-Regular-subset.retain-gids.63.ttf | Bin 3060 -> 3060 bytes
+ ...lar-subset.retain-gids.retain-all-codepoint.ttf | Bin 9524 -> 9524 bytes
+ .../basics/Roboto-Regular.abc.default.61,62,63.ttf | Bin 2452 -> 2448 bytes
+ .../basics/Roboto-Regular.abc.default.61,63.ttf    | Bin 2260 -> 2256 bytes
+ .../basics/Roboto-Regular.abc.default.61.ttf       | Bin 2048 -> 2044 bytes
+ .../basics/Roboto-Regular.abc.default.62.ttf       | Bin 1916 -> 1912 bytes
+ .../basics/Roboto-Regular.abc.default.63.ttf       | Bin 1972 -> 1968 bytes
+ ...to-Regular.abc.default.retain-all-codepoint.ttf | Bin 2452 -> 2448 bytes
+ ...Regular.abc.drop-hints-retain-gids.61,62,63.ttf | Bin 1192 -> 1188 bytes
+ ...to-Regular.abc.drop-hints-retain-gids.61,63.ttf | Bin 1124 -> 1120 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.61.ttf | Bin 984 -> 980 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.62.ttf | Bin 880 -> 876 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.63.ttf | Bin 968 -> 964 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 1192 -> 1188 bytes
+ .../Roboto-Regular.abc.drop-hints.61,62,63.ttf     | Bin 1192 -> 1188 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.61,63.ttf | Bin 1108 -> 1104 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.61.ttf    | Bin 984 -> 980 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.62.ttf    | Bin 876 -> 872 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.63.ttf    | Bin 956 -> 952 bytes
+ ...Regular.abc.drop-hints.retain-all-codepoint.ttf | Bin 1192 -> 1188 bytes
+ .../basics/Roboto-Regular.abc.gids.61,62,63.ttf    | Bin 2452 -> 2448 bytes
+ .../basics/Roboto-Regular.abc.gids.61,63.ttf       | Bin 2452 -> 2448 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.61.ttf | Bin 2452 -> 2448 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.62.ttf | Bin 2452 -> 2448 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.63.ttf | Bin 2452 -> 2448 bytes
+ ...oboto-Regular.abc.gids.retain-all-codepoint.ttf | Bin 2452 -> 2448 bytes
+ .../Roboto-Regular.abc.glyph-names.61,62,63.ttf    | Bin 2452 -> 2448 bytes
+ .../Roboto-Regular.abc.glyph-names.61,63.ttf       | Bin 2260 -> 2256 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.61.ttf   | Bin 2048 -> 2044 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.62.ttf   | Bin 1916 -> 1912 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.63.ttf   | Bin 1972 -> 1968 bytes
+ ...egular.abc.glyph-names.retain-all-codepoint.ttf | Bin 2452 -> 2448 bytes
+ ...gular.abc.keep-all-layout-features.61,62,63.ttf | Bin 2452 -> 2448 bytes
+ ...-Regular.abc.keep-all-layout-features.61,63.ttf | Bin 2260 -> 2256 bytes
+ ...oto-Regular.abc.keep-all-layout-features.61.ttf | Bin 2048 -> 2044 bytes
+ ...oto-Regular.abc.keep-all-layout-features.62.ttf | Bin 1916 -> 1912 bytes
+ ...oto-Regular.abc.keep-all-layout-features.63.ttf | Bin 1972 -> 1968 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttf | Bin 2452 -> 2448 bytes
+ ...Roboto-Regular.abc.layout-features.61,62,63.ttf | Bin 2452 -> 2448 bytes
+ .../Roboto-Regular.abc.layout-features.61,63.ttf   | Bin 2260 -> 2256 bytes
+ .../Roboto-Regular.abc.layout-features.61.ttf      | Bin 2048 -> 2044 bytes
+ .../Roboto-Regular.abc.layout-features.62.ttf      | Bin 1916 -> 1912 bytes
+ .../Roboto-Regular.abc.layout-features.63.ttf      | Bin 1972 -> 1968 bytes
+ ...ar.abc.layout-features.retain-all-codepoint.ttf | Bin 2452 -> 2448 bytes
+ .../Roboto-Regular.abc.name-ids.61,62,63.ttf       | Bin 2452 -> 2448 bytes
+ .../basics/Roboto-Regular.abc.name-ids.61,63.ttf   | Bin 2260 -> 2256 bytes
+ .../basics/Roboto-Regular.abc.name-ids.61.ttf      | Bin 2048 -> 2044 bytes
+ .../basics/Roboto-Regular.abc.name-ids.62.ttf      | Bin 1916 -> 1912 bytes
+ .../basics/Roboto-Regular.abc.name-ids.63.ttf      | Bin 1972 -> 1968 bytes
+ ...o-Regular.abc.name-ids.retain-all-codepoint.ttf | Bin 2452 -> 2448 bytes
+ .../Roboto-Regular.abc.name-languages.61,62,63.ttf | Bin 2452 -> 2448 bytes
+ .../Roboto-Regular.abc.name-languages.61,63.ttf    | Bin 2260 -> 2256 bytes
+ .../Roboto-Regular.abc.name-languages.61.ttf       | Bin 2048 -> 2044 bytes
+ .../Roboto-Regular.abc.name-languages.62.ttf       | Bin 1916 -> 1912 bytes
+ .../Roboto-Regular.abc.name-languages.63.ttf       | Bin 1972 -> 1968 bytes
+ ...lar.abc.name-languages.retain-all-codepoint.ttf | Bin 2452 -> 2448 bytes
+ .../Roboto-Regular.abc.name-legacy.61,62,63.ttf    | Bin 2452 -> 2448 bytes
+ .../Roboto-Regular.abc.name-legacy.61,63.ttf       | Bin 2260 -> 2256 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.61.ttf   | Bin 2048 -> 2044 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.62.ttf   | Bin 1916 -> 1912 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.63.ttf   | Bin 1972 -> 1968 bytes
+ ...egular.abc.name-legacy.retain-all-codepoint.ttf | Bin 2452 -> 2448 bytes
+ ...egular.abc.no-prune-unicode-ranges.61,62,63.ttf | Bin 2452 -> 2448 bytes
+ ...o-Regular.abc.no-prune-unicode-ranges.61,63.ttf | Bin 2260 -> 2256 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.61.ttf | Bin 2048 -> 2044 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.62.ttf | Bin 1916 -> 1912 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.63.ttf | Bin 1972 -> 1968 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf | Bin 2452 -> 2448 bytes
+ .../Roboto-Regular.abc.notdef-outline.61,62,63.ttf | Bin 2452 -> 2448 bytes
+ .../Roboto-Regular.abc.notdef-outline.61,63.ttf    | Bin 2260 -> 2256 bytes
+ .../Roboto-Regular.abc.notdef-outline.61.ttf       | Bin 2048 -> 2044 bytes
+ .../Roboto-Regular.abc.notdef-outline.62.ttf       | Bin 1916 -> 1912 bytes
+ .../Roboto-Regular.abc.notdef-outline.63.ttf       | Bin 1972 -> 1968 bytes
+ ...lar.abc.notdef-outline.retain-all-codepoint.ttf | Bin 2452 -> 2448 bytes
+ .../Roboto-Regular.abc.retain-gids.61,62,63.ttf    | Bin 2452 -> 2448 bytes
+ .../Roboto-Regular.abc.retain-gids.61,63.ttf       | Bin 2276 -> 2272 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.61.ttf   | Bin 2048 -> 2044 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.62.ttf   | Bin 1924 -> 1920 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.63.ttf   | Bin 1988 -> 1984 bytes
+ ...egular.abc.retain-gids.retain-all-codepoint.ttf | Bin 2452 -> 2448 bytes
+ .../cbdt/NotoColorEmoji.subset.default.2049.ttf    | Bin 3112 -> 3112 bytes
+ .../cbdt/NotoColorEmoji.subset.default.38,2049.ttf | Bin 4084 -> 4084 bytes
+ .../cbdt/NotoColorEmoji.subset.default.38,20E3.ttf | Bin 3568 -> 3568 bytes
+ ...rEmoji.subset.default.38,39,AE,2049,38,20E3.ttf | Bin 10124 -> 10124 bytes
+ .../NotoColorEmoji.subset.default.38,AE,2049.ttf   | Bin 7544 -> 7544 bytes
+ .../cbdt/NotoColorEmoji.subset.default.39.ttf      | Bin 1920 -> 1920 bytes
+ .../cbdt/NotoColorEmoji.subset.default.AE.ttf      | Bin 4412 -> 4412 bytes
+ ...lorEmoji.subset.drop-hints-retain-gids.2049.ttf | Bin 3136 -> 3136 bytes
+ ...Emoji.subset.drop-hints-retain-gids.38,2049.ttf | Bin 4108 -> 4108 bytes
+ ...Emoji.subset.drop-hints-retain-gids.38,20E3.ttf | Bin 3600 -> 3600 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 10124 -> 10124 bytes
+ ...ji.subset.drop-hints-retain-gids.38,AE,2049.ttf | Bin 7564 -> 7564 bytes
+ ...ColorEmoji.subset.drop-hints-retain-gids.39.ttf | Bin 1928 -> 1928 bytes
+ ...ColorEmoji.subset.drop-hints-retain-gids.AE.ttf | Bin 4428 -> 4428 bytes
+ .../cbdt/NotoColorEmoji.subset.drop-hints.2049.ttf | Bin 3112 -> 3112 bytes
+ .../NotoColorEmoji.subset.drop-hints.38,2049.ttf   | Bin 4084 -> 4084 bytes
+ .../NotoColorEmoji.subset.drop-hints.38,20E3.ttf   | Bin 3568 -> 3568 bytes
+ ...oji.subset.drop-hints.38,39,AE,2049,38,20E3.ttf | Bin 10124 -> 10124 bytes
+ ...NotoColorEmoji.subset.drop-hints.38,AE,2049.ttf | Bin 7544 -> 7544 bytes
+ .../cbdt/NotoColorEmoji.subset.drop-hints.39.ttf   | Bin 1920 -> 1920 bytes
+ .../cbdt/NotoColorEmoji.subset.drop-hints.AE.ttf   | Bin 4412 -> 4412 bytes
+ .../NotoColorEmoji.subset.gap.default.2049.ttf     | Bin 3112 -> 3112 bytes
+ .../NotoColorEmoji.subset.gap.default.38,2049.ttf  | Bin 4084 -> 4084 bytes
+ .../NotoColorEmoji.subset.gap.default.38,20E3.ttf  | Bin 3568 -> 3568 bytes
+ ...ji.subset.gap.default.38,39,AE,2049,38,20E3.ttf | Bin 9188 -> 9188 bytes
+ ...otoColorEmoji.subset.gap.default.38,AE,2049.ttf | Bin 7544 -> 7544 bytes
+ .../cbdt/NotoColorEmoji.subset.gap.default.39.ttf  | Bin 908 -> 908 bytes
+ .../cbdt/NotoColorEmoji.subset.gap.default.AE.ttf  | Bin 4412 -> 4412 bytes
+ ...moji.subset.gap.drop-hints-retain-gids.2049.ttf | Bin 3136 -> 3136 bytes
+ ...i.subset.gap.drop-hints-retain-gids.38,2049.ttf | Bin 4108 -> 4108 bytes
+ ...i.subset.gap.drop-hints-retain-gids.38,20E3.ttf | Bin 3600 -> 3600 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 9188 -> 9188 bytes
+ ...ubset.gap.drop-hints-retain-gids.38,AE,2049.ttf | Bin 7564 -> 7564 bytes
+ ...rEmoji.subset.gap.drop-hints-retain-gids.39.ttf | Bin 916 -> 916 bytes
+ ...rEmoji.subset.gap.drop-hints-retain-gids.AE.ttf | Bin 4428 -> 4428 bytes
+ .../NotoColorEmoji.subset.gap.drop-hints.2049.ttf  | Bin 3112 -> 3112 bytes
+ ...otoColorEmoji.subset.gap.drop-hints.38,2049.ttf | Bin 4084 -> 4084 bytes
+ ...otoColorEmoji.subset.gap.drop-hints.38,20E3.ttf | Bin 3568 -> 3568 bytes
+ ...subset.gap.drop-hints.38,39,AE,2049,38,20E3.ttf | Bin 9188 -> 9188 bytes
+ ...ColorEmoji.subset.gap.drop-hints.38,AE,2049.ttf | Bin 7544 -> 7544 bytes
+ .../NotoColorEmoji.subset.gap.drop-hints.39.ttf    | Bin 908 -> 908 bytes
+ .../NotoColorEmoji.subset.gap.drop-hints.AE.ttf    | Bin 4412 -> 4412 bytes
+ .../NotoColorEmoji.subset.gap.retain-gids.2049.ttf | Bin 3136 -> 3136 bytes
+ ...toColorEmoji.subset.gap.retain-gids.38,2049.ttf | Bin 4108 -> 4108 bytes
+ ...toColorEmoji.subset.gap.retain-gids.38,20E3.ttf | Bin 3600 -> 3600 bytes
+ ...ubset.gap.retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 9188 -> 9188 bytes
+ ...olorEmoji.subset.gap.retain-gids.38,AE,2049.ttf | Bin 7564 -> 7564 bytes
+ .../NotoColorEmoji.subset.gap.retain-gids.39.ttf   | Bin 916 -> 916 bytes
+ .../NotoColorEmoji.subset.gap.retain-gids.AE.ttf   | Bin 4428 -> 4428 bytes
+ ...olorEmoji.subset.index_format3.default.2049.ttf | Bin 3108 -> 3108 bytes
+ ...rEmoji.subset.index_format3.default.38,2049.ttf | Bin 4076 -> 4076 bytes
+ ...rEmoji.subset.index_format3.default.38,20E3.ttf | Bin 3560 -> 3560 bytes
+ ...index_format3.default.38,39,AE,2049,38,20E3.ttf | Bin 10112 -> 10112 bytes
+ ...oji.subset.index_format3.default.38,AE,2049.ttf | Bin 7536 -> 7536 bytes
+ ...oColorEmoji.subset.index_format3.default.39.ttf | Bin 1916 -> 1916 bytes
+ ...oColorEmoji.subset.index_format3.default.AE.ttf | Bin 4408 -> 4408 bytes
+ ...t.index_format3.drop-hints-retain-gids.2049.ttf | Bin 3132 -> 3132 bytes
+ ...ndex_format3.drop-hints-retain-gids.38,2049.ttf | Bin 4100 -> 4100 bytes
+ ...ndex_format3.drop-hints-retain-gids.38,20E3.ttf | Bin 3592 -> 3592 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 10112 -> 10112 bytes
+ ...x_format3.drop-hints-retain-gids.38,AE,2049.ttf | Bin 7552 -> 7552 bytes
+ ...set.index_format3.drop-hints-retain-gids.39.ttf | Bin 1924 -> 1924 bytes
+ ...set.index_format3.drop-hints-retain-gids.AE.ttf | Bin 4424 -> 4424 bytes
+ ...rEmoji.subset.index_format3.drop-hints.2049.ttf | Bin 3108 -> 3108 bytes
+ ...oji.subset.index_format3.drop-hints.38,2049.ttf | Bin 4076 -> 4076 bytes
+ ...oji.subset.index_format3.drop-hints.38,20E3.ttf | Bin 3560 -> 3560 bytes
+ ...ex_format3.drop-hints.38,39,AE,2049,38,20E3.ttf | Bin 10112 -> 10112 bytes
+ ....subset.index_format3.drop-hints.38,AE,2049.ttf | Bin 7536 -> 7536 bytes
+ ...lorEmoji.subset.index_format3.drop-hints.39.ttf | Bin 1916 -> 1916 bytes
+ ...lorEmoji.subset.index_format3.drop-hints.AE.ttf | Bin 4408 -> 4408 bytes
+ ...Emoji.subset.index_format3.retain-gids.2049.ttf | Bin 3132 -> 3132 bytes
+ ...ji.subset.index_format3.retain-gids.38,2049.ttf | Bin 4100 -> 4100 bytes
+ ...ji.subset.index_format3.retain-gids.38,20E3.ttf | Bin 3592 -> 3592 bytes
+ ...x_format3.retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 10112 -> 10112 bytes
+ ...subset.index_format3.retain-gids.38,AE,2049.ttf | Bin 7552 -> 7552 bytes
+ ...orEmoji.subset.index_format3.retain-gids.39.ttf | Bin 1924 -> 1924 bytes
+ ...orEmoji.subset.index_format3.retain-gids.AE.ttf | Bin 4424 -> 4424 bytes
+ ...ji.subset.multiple_size_tables.default.2049.ttf | Bin 5312 -> 5312 bytes
+ ...subset.multiple_size_tables.default.38,2049.ttf | Bin 7244 -> 7244 bytes
+ ...subset.multiple_size_tables.default.38,20E3.ttf | Bin 6212 -> 6212 bytes
+ ...e_size_tables.default.38,39,AE,2049,38,20E3.ttf | Bin 19280 -> 19280 bytes
+ ...set.multiple_size_tables.default.38,AE,2049.ttf | Bin 14140 -> 14140 bytes
+ ...moji.subset.multiple_size_tables.default.39.ttf | Bin 2928 -> 2928 bytes
+ ...moji.subset.multiple_size_tables.default.AE.ttf | Bin 7916 -> 7916 bytes
+ ...ple_size_tables.drop-hints-retain-gids.2049.ttf | Bin 5336 -> 5336 bytes
+ ..._size_tables.drop-hints-retain-gids.38,2049.ttf | Bin 7268 -> 7268 bytes
+ ..._size_tables.drop-hints-retain-gids.38,20E3.ttf | Bin 6244 -> 6244 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 19280 -> 19280 bytes
+ ...ze_tables.drop-hints-retain-gids.38,AE,2049.ttf | Bin 14164 -> 14164 bytes
+ ...tiple_size_tables.drop-hints-retain-gids.39.ttf | Bin 2936 -> 2936 bytes
+ ...tiple_size_tables.drop-hints-retain-gids.AE.ttf | Bin 7932 -> 7932 bytes
+ ...subset.multiple_size_tables.drop-hints.2049.ttf | Bin 5312 -> 5312 bytes
+ ...set.multiple_size_tables.drop-hints.38,2049.ttf | Bin 7244 -> 7244 bytes
+ ...set.multiple_size_tables.drop-hints.38,20E3.ttf | Bin 6212 -> 6212 bytes
+ ...ize_tables.drop-hints.38,39,AE,2049,38,20E3.ttf | Bin 19280 -> 19280 bytes
+ ....multiple_size_tables.drop-hints.38,AE,2049.ttf | Bin 14140 -> 14140 bytes
+ ...i.subset.multiple_size_tables.drop-hints.39.ttf | Bin 2928 -> 2928 bytes
+ ...i.subset.multiple_size_tables.drop-hints.AE.ttf | Bin 7916 -> 7916 bytes
+ ...ubset.multiple_size_tables.retain-gids.2049.ttf | Bin 5336 -> 5336 bytes
+ ...et.multiple_size_tables.retain-gids.38,2049.ttf | Bin 7268 -> 7268 bytes
+ ...et.multiple_size_tables.retain-gids.38,20E3.ttf | Bin 6244 -> 6244 bytes
+ ...ze_tables.retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 19280 -> 19280 bytes
+ ...multiple_size_tables.retain-gids.38,AE,2049.ttf | Bin 14164 -> 14164 bytes
+ ....subset.multiple_size_tables.retain-gids.39.ttf | Bin 2936 -> 2936 bytes
+ ....subset.multiple_size_tables.retain-gids.AE.ttf | Bin 7932 -> 7932 bytes
+ .../NotoColorEmoji.subset.retain-gids.2049.ttf     | Bin 3136 -> 3136 bytes
+ .../NotoColorEmoji.subset.retain-gids.38,2049.ttf  | Bin 4108 -> 4108 bytes
+ .../NotoColorEmoji.subset.retain-gids.38,20E3.ttf  | Bin 3600 -> 3600 bytes
+ ...ji.subset.retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 10124 -> 10124 bytes
+ ...otoColorEmoji.subset.retain-gids.38,AE,2049.ttf | Bin 7564 -> 7564 bytes
+ .../cbdt/NotoColorEmoji.subset.retain-gids.39.ttf  | Bin 1928 -> 1928 bytes
+ .../cbdt/NotoColorEmoji.subset.retain-gids.AE.ttf  | Bin 4428 -> 4428 bytes
+ ...eSansPro-Regular.default.1FC,21,41,20,62,63.otf | Bin 2580 -> 2592 bytes
+ .../SourceSansPro-Regular.default.61,62,63.otf     | Bin 2216 -> 2224 bytes
+ ...ourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf | Bin 2328 -> 2340 bytes
+ ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 20232 -> 20220 bytes
+ ...Regular.desubroutinize-retain-gids.61,62,63.otf | Bin 2316 -> 2324 bytes
+ ...r.desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30540 -> 30528 bytes
+ ...o-Regular.desubroutinize.1FC,21,41,20,62,63.otf | Bin 2436 -> 2448 bytes
+ ...urceSansPro-Regular.desubroutinize.61,62,63.otf | Bin 2120 -> 2128 bytes
+ ...nsPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf | Bin 2312 -> 2320 bytes
+ ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 20064 -> 20052 bytes
+ ...p-hints-desubroutinize-retain-gids.61,62,63.otf | Bin 2192 -> 2200 bytes
+ ...s-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30372 -> 30360 bytes
+ ...rop-hints-desubroutinize.1FC,21,41,20,62,63.otf | Bin 2268 -> 2276 bytes
+ ...-Regular.drop-hints-desubroutinize.61,62,63.otf | Bin 1996 -> 2004 bytes
+ ...ar.drop-hints-desubroutinize.D7,D8,D9,DA,DE.otf | Bin 2148 -> 2156 bytes
+ ...r.drop-hints-retain-gids.1FC,21,41,20,62,63.otf | Bin 20156 -> 20144 bytes
+ ...Pro-Regular.drop-hints-retain-gids.61,62,63.otf | Bin 2228 -> 2240 bytes
+ ...gular.drop-hints-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30384 -> 30376 bytes
+ ...nsPro-Regular.drop-hints.1FC,21,41,20,62,63.otf | Bin 2352 -> 2360 bytes
+ .../SourceSansPro-Regular.drop-hints.61,62,63.otf  | Bin 2060 -> 2072 bytes
+ ...ceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf | Bin 2164 -> 2172 bytes
+ ...sPro-Regular.retain-gids.1FC,21,41,20,62,63.otf | Bin 20384 -> 20376 bytes
+ .../SourceSansPro-Regular.retain-gids.61,62,63.otf | Bin 2384 -> 2392 bytes
+ ...eSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.otf | Bin 30556 -> 30544 bytes
+ ...ubset.default.3042,3044,3046,3048,304A,304B.otf | Bin 4884 -> 4912 bytes
+ ...ubset.default.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 6276 -> 6300 bytes
+ ...eHanSans-Regular_subset.default.61,63,65,6B.otf | Bin 2588 -> 2620 bytes
+ ...ubset.default.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6736 -> 6744 bytes
+ .../SourceHanSans-Regular_subset.default.660E.otf  | Bin 2456 -> 2488 bytes
+ ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 129876 -> 129912 bytes
+ ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 130920 -> 130944 bytes
+ ...bset.desubroutinize-retain-gids.61,63,65,6B.otf | Bin 3412 -> 3444 bytes
+ ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 122048 -> 122060 bytes
+ ...ular_subset.desubroutinize-retain-gids.660E.otf | Bin 50760 -> 50788 bytes
+ ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 4724 -> 4748 bytes
+ ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 5928 -> 5944 bytes
+ ...s-Regular_subset.desubroutinize.61,63,65,6B.otf | Bin 2520 -> 2552 bytes
+ ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6232 -> 6236 bytes
+ ...eHanSans-Regular_subset.desubroutinize.660E.otf | Bin 2440 -> 2472 bytes
+ ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 129448 -> 129468 bytes
+ ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 130312 -> 130324 bytes
+ ...ints-desubroutinize-retain-gids.61,63,65,6B.otf | Bin 3288 -> 3324 bytes
+ ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 121284 -> 121284 bytes
+ ....drop-hints-desubroutinize-retain-gids.660E.otf | Bin 50540 -> 50560 bytes
+ ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 4420 -> 4440 bytes
+ ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 5416 -> 5428 bytes
+ ...ubset.drop-hints-desubroutinize.61,63,65,6B.otf | Bin 2416 -> 2448 bytes
+ ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 5556 -> 5560 bytes
+ ...gular_subset.drop-hints-desubroutinize.660E.otf | Bin 2308 -> 2336 bytes
+ ...s-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 129576 -> 129608 bytes
+ ...s-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 130604 -> 130632 bytes
+ ...r_subset.drop-hints-retain-gids.61,63,65,6B.otf | Bin 3248 -> 3288 bytes
+ ...s-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 121776 -> 121784 bytes
+ ...-Regular_subset.drop-hints-retain-gids.660E.otf | Bin 50552 -> 50576 bytes
+ ...et.drop-hints.3042,3044,3046,3048,304A,304B.otf | Bin 4548 -> 4576 bytes
+ ...et.drop-hints.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 5708 -> 5732 bytes
+ ...nSans-Regular_subset.drop-hints.61,63,65,6B.otf | Bin 2448 -> 2480 bytes
+ ...et.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6048 -> 6056 bytes
+ ...ourceHanSans-Regular_subset.drop-hints.660E.otf | Bin 2316 -> 2348 bytes
+ ...t.retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 130036 -> 130072 bytes
+ ...t.retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 131272 -> 131300 bytes
+ ...Sans-Regular_subset.retain-gids.61,63,65,6B.otf | Bin 3408 -> 3444 bytes
+ ...t.retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 122552 -> 122564 bytes
+ ...urceHanSans-Regular_subset.retain-gids.660E.otf | Bin 50776 -> 50804 bytes
+ ...otoSerifMyanmar-Regular.notdef-outline.1092.otf | Bin 1380 -> 1392 bytes
+ .../cmap/AdobeBlank-Regular.default.61,62.ttf      | Bin 1252 -> 1252 bytes
+ .../cmap/AdobeBlank-Regular.default.61,FEFA.ttf    | Bin 1264 -> 1264 bytes
+ .../cmap/AdobeBlank-Regular.default.FEE6,FECF.ttf  | Bin 1216 -> 1216 bytes
+ .../cmap/AdobeBlank-Regular.default.FEF9,FEFA.ttf  | Bin 1204 -> 1204 bytes
+ .../cmap/AdobeBlank-Regular.default.FEFA.ttf       | Bin 1184 -> 1184 bytes
+ ...eBlank-Regular.drop-hints-retain-gids.61,62.ttf | Bin 1468 -> 1468 bytes
+ ...lank-Regular.drop-hints-retain-gids.61,FEFA.ttf | Bin 8232 -> 8232 bytes
+ ...nk-Regular.drop-hints-retain-gids.FEE6,FECF.ttf | Bin 8104 -> 8104 bytes
+ ...nk-Regular.drop-hints-retain-gids.FEF9,FEFA.ttf | Bin 8172 -> 8172 bytes
+ ...beBlank-Regular.drop-hints-retain-gids.FEFA.ttf | Bin 8156 -> 8156 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.61,62.ttf   | Bin 1080 -> 1080 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.61,FEFA.ttf | Bin 1092 -> 1092 bytes
+ .../AdobeBlank-Regular.drop-hints.FEE6,FECF.ttf    | Bin 1044 -> 1044 bytes
+ .../AdobeBlank-Regular.drop-hints.FEF9,FEFA.ttf    | Bin 1032 -> 1032 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.FEFA.ttf    | Bin 1012 -> 1012 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.61,62.ttf     | Bin 1000 -> 1000 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.61,FEFA.ttf   | Bin 1012 -> 1012 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEE6,FECF.ttf | Bin 964 -> 964 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEF9,FEFA.ttf | Bin 952 -> 952 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEFA.ttf      | Bin 932 -> 932 bytes
+ .../cmap/AdobeBlank-Regular.retain-gids.61,62.ttf  | Bin 1640 -> 1640 bytes
+ .../AdobeBlank-Regular.retain-gids.61,FEFA.ttf     | Bin 8404 -> 8404 bytes
+ .../AdobeBlank-Regular.retain-gids.FEE6,FECF.ttf   | Bin 8276 -> 8276 bytes
+ .../AdobeBlank-Regular.retain-gids.FEF9,FEFA.ttf   | Bin 8344 -> 8344 bytes
+ .../cmap/AdobeBlank-Regular.retain-gids.FEFA.ttf   | Bin 8328 -> 8328 bytes
+ .../cmap14/cmap14_font1.default.4E00,4E02,4E03.otf | Bin 1360 -> 1376 bytes
+ .../cmap14/cmap14_font1.default.4E00,4E03.otf      | Bin 1236 -> 1252 bytes
+ .../cmap14/cmap14_font1.default.4E00,4E05,4E07.otf | Bin 1328 -> 1348 bytes
+ .../cmap14/cmap14_font1.default.4E02,4E03,4E08.otf | Bin 1576 -> 1596 bytes
+ .../expected/cmap14/cmap14_font1.default.4E02.otf  | Bin 996 -> 1012 bytes
+ .../expected/cmap14/cmap14_font1.default.4E03.otf  | Bin 1080 -> 1096 bytes
+ .../cmap14_font1.default.4E05,4E07,4E08,4E09.otf   | Bin 1848 -> 1864 bytes
+ .../cmap14/cmap14_font1.default.4E08,4E09.otf      | Bin 1720 -> 1736 bytes
+ .../expected/cmap14/cmap14_font1.default.4E08.otf  | Bin 1384 -> 1404 bytes
+ .../cmap14_font1.default.retain-all-codepoint.otf  | Bin 2348 -> 2364 bytes
+ ...font1.drop-hints-retain-gids.4E00,4E02,4E03.otf | Bin 1388 -> 1404 bytes
+ ...ap14_font1.drop-hints-retain-gids.4E00,4E03.otf | Bin 1272 -> 1292 bytes
+ ...font1.drop-hints-retain-gids.4E00,4E05,4E07.otf | Bin 1396 -> 1416 bytes
+ ...font1.drop-hints-retain-gids.4E02,4E03,4E08.otf | Bin 1720 -> 1736 bytes
+ .../cmap14_font1.drop-hints-retain-gids.4E02.otf   | Bin 1028 -> 1048 bytes
+ .../cmap14_font1.drop-hints-retain-gids.4E03.otf   | Bin 1124 -> 1140 bytes
+ ....drop-hints-retain-gids.4E05,4E07,4E08,4E09.otf | Bin 1984 -> 2000 bytes
+ ...ap14_font1.drop-hints-retain-gids.4E08,4E09.otf | Bin 1872 -> 1888 bytes
+ .../cmap14_font1.drop-hints-retain-gids.4E08.otf   | Bin 1544 -> 1560 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.otf | Bin 2436 -> 2452 bytes
+ .../cmap14_font1.drop-hints.4E00,4E02,4E03.otf     | Bin 1292 -> 1308 bytes
+ .../cmap14/cmap14_font1.drop-hints.4E00,4E03.otf   | Bin 1168 -> 1188 bytes
+ .../cmap14_font1.drop-hints.4E00,4E05,4E07.otf     | Bin 1260 -> 1280 bytes
+ .../cmap14_font1.drop-hints.4E02,4E03,4E08.otf     | Bin 1512 -> 1528 bytes
+ .../cmap14/cmap14_font1.drop-hints.4E02.otf        | Bin 928 -> 944 bytes
+ .../cmap14/cmap14_font1.drop-hints.4E03.otf        | Bin 1012 -> 1028 bytes
+ ...cmap14_font1.drop-hints.4E05,4E07,4E08,4E09.otf | Bin 1780 -> 1796 bytes
+ .../cmap14/cmap14_font1.drop-hints.4E08,4E09.otf   | Bin 1652 -> 1672 bytes
+ .../cmap14/cmap14_font1.drop-hints.4E08.otf        | Bin 1316 -> 1336 bytes
+ ...map14_font1.drop-hints.retain-all-codepoint.otf | Bin 2280 -> 2296 bytes
+ .../cmap14/cmap14_font1.gids.4E00,4E02,4E03.otf    | Bin 1388 -> 1408 bytes
+ .../cmap14/cmap14_font1.gids.4E00,4E03.otf         | Bin 1380 -> 1396 bytes
+ .../cmap14/cmap14_font1.gids.4E00,4E05,4E07.otf    | Bin 1620 -> 1640 bytes
+ .../cmap14/cmap14_font1.gids.4E02,4E03,4E08.otf    | Bin 1744 -> 1760 bytes
+ .../expected/cmap14/cmap14_font1.gids.4E02.otf     | Bin 1312 -> 1332 bytes
+ .../expected/cmap14/cmap14_font1.gids.4E03.otf     | Bin 1352 -> 1372 bytes
+ .../cmap14_font1.gids.4E05,4E07,4E08,4E09.otf      | Bin 2164 -> 2184 bytes
+ .../cmap14/cmap14_font1.gids.4E08,4E09.otf         | Bin 2036 -> 2056 bytes
+ .../expected/cmap14/cmap14_font1.gids.4E08.otf     | Bin 1704 -> 1720 bytes
+ .../cmap14_font1.gids.retain-all-codepoint.otf     | Bin 2380 -> 2400 bytes
+ .../cmap14_font1.name-ids.4E00,4E02,4E03.otf       | Bin 1292 -> 1308 bytes
+ .../cmap14/cmap14_font1.name-ids.4E00,4E03.otf     | Bin 1168 -> 1184 bytes
+ .../cmap14_font1.name-ids.4E00,4E05,4E07.otf       | Bin 1260 -> 1280 bytes
+ .../cmap14_font1.name-ids.4E02,4E03,4E08.otf       | Bin 1508 -> 1528 bytes
+ .../expected/cmap14/cmap14_font1.name-ids.4E02.otf | Bin 928 -> 944 bytes
+ .../expected/cmap14/cmap14_font1.name-ids.4E03.otf | Bin 1012 -> 1028 bytes
+ .../cmap14_font1.name-ids.4E05,4E07,4E08,4E09.otf  | Bin 1780 -> 1796 bytes
+ .../cmap14/cmap14_font1.name-ids.4E08,4E09.otf     | Bin 1652 -> 1668 bytes
+ .../expected/cmap14/cmap14_font1.name-ids.4E08.otf | Bin 1316 -> 1336 bytes
+ .../cmap14_font1.name-ids.retain-all-codepoint.otf | Bin 2280 -> 2296 bytes
+ .../cmap14_font1.retain-gids.4E00,4E02,4E03.otf    | Bin 1452 -> 1472 bytes
+ .../cmap14/cmap14_font1.retain-gids.4E00,4E03.otf  | Bin 1340 -> 1360 bytes
+ .../cmap14_font1.retain-gids.4E00,4E05,4E07.otf    | Bin 1464 -> 1480 bytes
+ .../cmap14_font1.retain-gids.4E02,4E03,4E08.otf    | Bin 1788 -> 1804 bytes
+ .../cmap14/cmap14_font1.retain-gids.4E02.otf       | Bin 1096 -> 1116 bytes
+ .../cmap14/cmap14_font1.retain-gids.4E03.otf       | Bin 1192 -> 1208 bytes
+ ...map14_font1.retain-gids.4E05,4E07,4E08,4E09.otf | Bin 2048 -> 2068 bytes
+ .../cmap14/cmap14_font1.retain-gids.4E08,4E09.otf  | Bin 1940 -> 1956 bytes
+ .../cmap14/cmap14_font1.retain-gids.4E08.otf       | Bin 1608 -> 1628 bytes
+ ...ap14_font1.retain-gids.retain-all-codepoint.otf | Bin 2500 -> 2520 bytes
+ .../cmap14/cmap14_font2.default.4E00,4E02,4E03.otf | Bin 1360 -> 1376 bytes
+ .../cmap14/cmap14_font2.default.4E00,4E03.otf      | Bin 1236 -> 1252 bytes
+ .../cmap14/cmap14_font2.default.4E00,4E05,4E07.otf | Bin 1332 -> 1352 bytes
+ .../cmap14/cmap14_font2.default.4E02,4E03,4E08.otf | Bin 1576 -> 1596 bytes
+ .../expected/cmap14/cmap14_font2.default.4E02.otf  | Bin 992 -> 1008 bytes
+ .../expected/cmap14/cmap14_font2.default.4E03.otf  | Bin 1076 -> 1092 bytes
+ .../cmap14_font2.default.4E05,4E07,4E08,4E09.otf   | Bin 1848 -> 1864 bytes
+ .../cmap14/cmap14_font2.default.4E08,4E09.otf      | Bin 1716 -> 1732 bytes
+ .../expected/cmap14/cmap14_font2.default.4E08.otf  | Bin 1380 -> 1400 bytes
+ .../cmap14_font2.default.retain-all-codepoint.otf  | Bin 2344 -> 2360 bytes
+ ...font2.drop-hints-retain-gids.4E00,4E02,4E03.otf | Bin 1388 -> 1404 bytes
+ ...ap14_font2.drop-hints-retain-gids.4E00,4E03.otf | Bin 1272 -> 1292 bytes
+ ...font2.drop-hints-retain-gids.4E00,4E05,4E07.otf | Bin 1400 -> 1420 bytes
+ ...font2.drop-hints-retain-gids.4E02,4E03,4E08.otf | Bin 1720 -> 1736 bytes
+ .../cmap14_font2.drop-hints-retain-gids.4E02.otf   | Bin 1024 -> 1044 bytes
+ .../cmap14_font2.drop-hints-retain-gids.4E03.otf   | Bin 1120 -> 1136 bytes
+ ....drop-hints-retain-gids.4E05,4E07,4E08,4E09.otf | Bin 1984 -> 2000 bytes
+ ...ap14_font2.drop-hints-retain-gids.4E08,4E09.otf | Bin 1868 -> 1884 bytes
+ .../cmap14_font2.drop-hints-retain-gids.4E08.otf   | Bin 1540 -> 1556 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.otf | Bin 2432 -> 2448 bytes
+ .../cmap14_font2.drop-hints.4E00,4E02,4E03.otf     | Bin 1292 -> 1308 bytes
+ .../cmap14/cmap14_font2.drop-hints.4E00,4E03.otf   | Bin 1168 -> 1188 bytes
+ .../cmap14_font2.drop-hints.4E00,4E05,4E07.otf     | Bin 1264 -> 1284 bytes
+ .../cmap14_font2.drop-hints.4E02,4E03,4E08.otf     | Bin 1512 -> 1528 bytes
+ .../cmap14/cmap14_font2.drop-hints.4E02.otf        | Bin 924 -> 940 bytes
+ .../cmap14/cmap14_font2.drop-hints.4E03.otf        | Bin 1008 -> 1024 bytes
+ ...cmap14_font2.drop-hints.4E05,4E07,4E08,4E09.otf | Bin 1780 -> 1796 bytes
+ .../cmap14/cmap14_font2.drop-hints.4E08,4E09.otf   | Bin 1648 -> 1668 bytes
+ .../cmap14/cmap14_font2.drop-hints.4E08.otf        | Bin 1312 -> 1332 bytes
+ ...map14_font2.drop-hints.retain-all-codepoint.otf | Bin 2276 -> 2292 bytes
+ .../cmap14/cmap14_font2.gids.4E00,4E02,4E03.otf    | Bin 1388 -> 1408 bytes
+ .../cmap14/cmap14_font2.gids.4E00,4E03.otf         | Bin 1380 -> 1396 bytes
+ .../cmap14/cmap14_font2.gids.4E00,4E05,4E07.otf    | Bin 1624 -> 1644 bytes
+ .../cmap14/cmap14_font2.gids.4E02,4E03,4E08.otf    | Bin 1744 -> 1760 bytes
+ .../expected/cmap14/cmap14_font2.gids.4E02.otf     | Bin 1308 -> 1328 bytes
+ .../expected/cmap14/cmap14_font2.gids.4E03.otf     | Bin 1348 -> 1368 bytes
+ .../cmap14_font2.gids.4E05,4E07,4E08,4E09.otf      | Bin 2164 -> 2184 bytes
+ .../cmap14/cmap14_font2.gids.4E08,4E09.otf         | Bin 2032 -> 2052 bytes
+ .../expected/cmap14/cmap14_font2.gids.4E08.otf     | Bin 1700 -> 1716 bytes
+ .../cmap14_font2.gids.retain-all-codepoint.otf     | Bin 2376 -> 2396 bytes
+ .../cmap14_font2.name-ids.4E00,4E02,4E03.otf       | Bin 1292 -> 1308 bytes
+ .../cmap14/cmap14_font2.name-ids.4E00,4E03.otf     | Bin 1168 -> 1184 bytes
+ .../cmap14_font2.name-ids.4E00,4E05,4E07.otf       | Bin 1264 -> 1284 bytes
+ .../cmap14_font2.name-ids.4E02,4E03,4E08.otf       | Bin 1508 -> 1528 bytes
+ .../expected/cmap14/cmap14_font2.name-ids.4E02.otf | Bin 924 -> 940 bytes
+ .../expected/cmap14/cmap14_font2.name-ids.4E03.otf | Bin 1008 -> 1024 bytes
+ .../cmap14_font2.name-ids.4E05,4E07,4E08,4E09.otf  | Bin 1780 -> 1796 bytes
+ .../cmap14/cmap14_font2.name-ids.4E08,4E09.otf     | Bin 1648 -> 1664 bytes
+ .../expected/cmap14/cmap14_font2.name-ids.4E08.otf | Bin 1312 -> 1332 bytes
+ .../cmap14_font2.name-ids.retain-all-codepoint.otf | Bin 2276 -> 2292 bytes
+ .../cmap14_font2.retain-gids.4E00,4E02,4E03.otf    | Bin 1452 -> 1472 bytes
+ .../cmap14/cmap14_font2.retain-gids.4E00,4E03.otf  | Bin 1340 -> 1360 bytes
+ .../cmap14_font2.retain-gids.4E00,4E05,4E07.otf    | Bin 1468 -> 1484 bytes
+ .../cmap14_font2.retain-gids.4E02,4E03,4E08.otf    | Bin 1788 -> 1804 bytes
+ .../cmap14/cmap14_font2.retain-gids.4E02.otf       | Bin 1092 -> 1112 bytes
+ .../cmap14/cmap14_font2.retain-gids.4E03.otf       | Bin 1188 -> 1204 bytes
+ ...map14_font2.retain-gids.4E05,4E07,4E08,4E09.otf | Bin 2048 -> 2068 bytes
+ .../cmap14/cmap14_font2.retain-gids.4E08,4E09.otf  | Bin 1936 -> 1952 bytes
+ .../cmap14/cmap14_font2.retain-gids.4E08.otf       | Bin 1604 -> 1624 bytes
+ ...ap14_font2.retain-gids.retain-all-codepoint.otf | Bin 2496 -> 2516 bytes
+ .../TwemojiMozilla.subset.default.32,3297,3299.ttf | Bin 1936 -> 1936 bytes
+ .../colr/TwemojiMozilla.subset.default.32,3297.ttf | Bin 1400 -> 1400 bytes
+ .../colr/TwemojiMozilla.subset.default.32,3299.ttf | Bin 1576 -> 1576 bytes
+ .../colr/TwemojiMozilla.subset.default.32.ttf      | Bin 932 -> 932 bytes
+ .../TwemojiMozilla.subset.default.3297,3299.ttf    | Bin 1916 -> 1916 bytes
+ .../colr/TwemojiMozilla.subset.default.3297.ttf    | Bin 1376 -> 1376 bytes
+ .../colr/TwemojiMozilla.subset.default.3299.ttf    | Bin 1552 -> 1552 bytes
+ ....subset.drop-hints-retain-gids.32,3297,3299.ttf | Bin 1916 -> 1916 bytes
+ ...zilla.subset.drop-hints-retain-gids.32,3297.ttf | Bin 1396 -> 1396 bytes
+ ...zilla.subset.drop-hints-retain-gids.32,3299.ttf | Bin 1576 -> 1576 bytes
+ ...ojiMozilla.subset.drop-hints-retain-gids.32.ttf | Bin 912 -> 912 bytes
+ ...lla.subset.drop-hints-retain-gids.3297,3299.ttf | Bin 1900 -> 1900 bytes
+ ...iMozilla.subset.drop-hints-retain-gids.3297.ttf | Bin 1372 -> 1372 bytes
+ ...iMozilla.subset.drop-hints-retain-gids.3299.ttf | Bin 1552 -> 1552 bytes
+ ...emojiMozilla.subset.drop-hints.32,3297,3299.ttf | Bin 1916 -> 1916 bytes
+ .../TwemojiMozilla.subset.drop-hints.32,3297.ttf   | Bin 1380 -> 1380 bytes
+ .../TwemojiMozilla.subset.drop-hints.32,3299.ttf   | Bin 1556 -> 1556 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.32.ttf   | Bin 912 -> 912 bytes
+ .../TwemojiMozilla.subset.drop-hints.3297,3299.ttf | Bin 1896 -> 1896 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.3297.ttf | Bin 1356 -> 1356 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.3299.ttf | Bin 1532 -> 1532 bytes
+ ...mojiMozilla.subset.retain-gids.32,3297,3299.ttf | Bin 1936 -> 1936 bytes
+ .../TwemojiMozilla.subset.retain-gids.32,3297.ttf  | Bin 1416 -> 1416 bytes
+ .../TwemojiMozilla.subset.retain-gids.32,3299.ttf  | Bin 1596 -> 1596 bytes
+ .../colr/TwemojiMozilla.subset.retain-gids.32.ttf  | Bin 932 -> 932 bytes
+ ...TwemojiMozilla.subset.retain-gids.3297,3299.ttf | Bin 1920 -> 1920 bytes
+ .../TwemojiMozilla.subset.retain-gids.3297.ttf     | Bin 1392 -> 1392 bytes
+ .../TwemojiMozilla.subset.retain-gids.3299.ttf     | Bin 1572 -> 1572 bytes
+ .../colr_with_components/colr-table.default.6B.ttf | Bin 4260 -> 4260 bytes
+ .../colr-table.drop-hints-retain-gids.6B.ttf       | Bin 4984 -> 4984 bytes
+ .../colr-table.drop-hints.6B.ttf                   | Bin 4260 -> 4260 bytes
+ .../colr-table.retain-gids.6B.ttf                  | Bin 4984 -> 4984 bytes
+ .../Roboto-Regular.default.1FC,21,41,20,62,63.ttf  | Bin 3080 -> 3076 bytes
+ .../full-font/Roboto-Regular.default.61,62,63.ttf  | Bin 2672 -> 2668 bytes
+ .../Roboto-Regular.default.D7,D8,D9,DA,DE.ttf      | Bin 3024 -> 3020 bytes
+ ...oboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf | Bin 1632 -> 1628 bytes
+ .../Roboto-Regular.drop-hints.61,62,63.ttf         | Bin 1412 -> 1408 bytes
+ .../Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf   | Bin 1648 -> 1644 bytes
+ ...ifVariable-Roman.default.1FC,21,41,20,62,63.ttf | Bin 3992 -> 3960 bytes
+ .../SourceSerifVariable-Roman.default.61,62,63.ttf | Bin 3832 -> 3820 bytes
+ ...eSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf | Bin 4396 -> 4384 bytes
+ ...ariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf | Bin 3968 -> 3948 bytes
+ ...urceSerifVariable-Roman.drop-hints.61,62,63.ttf | Bin 3832 -> 3820 bytes
+ ...rifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 4396 -> 4384 bytes
+ .../Mplus1p-Regular.default.1D715,1D7D8,41,42.ttf  | Bin 2344 -> 2340 bytes
+ .../japanese/Mplus1p-Regular.default.25771.ttf     | Bin 1992 -> 1988 bytes
+ ...gular.default.3042,3044,3046,3048,304A,304B.ttf | Bin 2704 -> 2700 bytes
+ ...gular.default.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2948 -> 2944 bytes
+ .../Mplus1p-Regular.default.61,63,65,6B.ttf        | Bin 2324 -> 2320 bytes
+ ...gular.default.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 3244 -> 3240 bytes
+ .../japanese/Mplus1p-Regular.default.660E.ttf      | Bin 1984 -> 1980 bytes
+ ...plus1p-Regular.drop-hints.1D715,1D7D8,41,42.ttf | Bin 1616 -> 1612 bytes
+ .../japanese/Mplus1p-Regular.drop-hints.25771.ttf  | Bin 1264 -> 1260 bytes
+ ...ar.drop-hints.3042,3044,3046,3048,304A,304B.ttf | Bin 1976 -> 1972 bytes
+ ...ar.drop-hints.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2220 -> 2216 bytes
+ .../Mplus1p-Regular.drop-hints.61,63,65,6B.ttf     | Bin 1596 -> 1592 bytes
+ ...ar.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 2516 -> 2512 bytes
+ .../japanese/Mplus1p-Regular.drop-hints.660E.ttf   | Bin 1256 -> 1252 bytes
+ ...Mplus1p-Regular.keep-gdef.1D715,1D7D8,41,42.ttf | Bin 2344 -> 2340 bytes
+ .../japanese/Mplus1p-Regular.keep-gdef.25771.ttf   | Bin 1992 -> 1988 bytes
+ ...lar.keep-gdef.3042,3044,3046,3048,304A,304B.ttf | Bin 2704 -> 2700 bytes
+ ...lar.keep-gdef.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2948 -> 2944 bytes
+ .../Mplus1p-Regular.keep-gdef.61,63,65,6B.ttf      | Bin 2324 -> 2320 bytes
+ ...lar.keep-gdef.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 3244 -> 3240 bytes
+ .../japanese/Mplus1p-Regular.keep-gdef.660E.ttf    | Bin 1984 -> 1980 bytes
+ ...text1_multiple_subrules_f1.default.41,42,43.otf | Bin 1328 -> 1340 bytes
+ ...context1_multiple_subrules_f1.default.41,42.otf | Bin 1228 -> 1240 bytes
+ ...context1_multiple_subrules_f1.default.41,43.otf | Bin 1332 -> 1348 bytes
+ ...os_context1_multiple_subrules_f1.default.41.otf | Bin 1216 -> 1228 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.otf | Bin 3700 -> 3912 bytes
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.otf | Bin 2028 -> 2052 bytes
+ ...ext1_multiple_subrules_f1.retain-gids.41,42.otf | Bin 1932 -> 1948 bytes
+ ...ext1_multiple_subrules_f1.retain-gids.41,43.otf | Bin 2048 -> 2068 bytes
+ ...ontext1_multiple_subrules_f1.retain-gids.41.otf | Bin 1916 -> 1932 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf | Bin 3700 -> 3912 bytes
+ ...text2_multiple_subrules_f1.default.41,42,43.otf | Bin 1328 -> 1340 bytes
+ ...context2_multiple_subrules_f1.default.41,42.otf | Bin 1228 -> 1240 bytes
+ ...context2_multiple_subrules_f1.default.41,43.otf | Bin 1332 -> 1348 bytes
+ ...os_context2_multiple_subrules_f1.default.41.otf | Bin 1216 -> 1228 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.otf | Bin 3700 -> 3912 bytes
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.otf | Bin 2028 -> 2052 bytes
+ ...ext2_multiple_subrules_f1.retain-gids.41,42.otf | Bin 1932 -> 1948 bytes
+ ...ext2_multiple_subrules_f1.retain-gids.41,43.otf | Bin 2048 -> 2068 bytes
+ ...ontext2_multiple_subrules_f1.retain-gids.41.otf | Bin 1916 -> 1932 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf | Bin 3700 -> 3912 bytes
+ .../gpos_context3_simple_f1.default.41,42,43.otf   | Bin 1308 -> 1320 bytes
+ .../gpos_context3_simple_f1.default.41,42.otf      | Bin 1208 -> 1220 bytes
+ .../gpos_context3_simple_f1.default.41,43.otf      | Bin 1312 -> 1328 bytes
+ .../gpos_context3_simple_f1.default.41.otf         | Bin 1196 -> 1208 bytes
+ ...ext3_simple_f1.default.retain-all-codepoint.otf | Bin 3680 -> 3892 bytes
+ ...pos_context3_simple_f1.retain-gids.41,42,43.otf | Bin 2008 -> 2032 bytes
+ .../gpos_context3_simple_f1.retain-gids.41,42.otf  | Bin 1912 -> 1928 bytes
+ .../gpos_context3_simple_f1.retain-gids.41,43.otf  | Bin 2028 -> 2048 bytes
+ .../gpos_context3_simple_f1.retain-gids.41.otf     | Bin 1896 -> 1912 bytes
+ ..._simple_f1.retain-gids.retain-all-codepoint.otf | Bin 3680 -> 3892 bytes
+ .../IndicTestJalandhar-Regular.default.A01.ttf     | Bin 4176 -> 4172 bytes
+ .../IndicTestJalandhar-Regular.default.A05,A06.ttf | Bin 4752 -> 4748 bytes
+ .../IndicTestJalandhar-Regular.default.A07,A1B.ttf | Bin 4724 -> 4720 bytes
+ ...andhar-Regular.default.retain-all-codepoint.ttf | Bin 49244 -> 49248 bytes
+ .../IndicTestJalandhar-Regular.drop-hints.A01.ttf  | Bin 1036 -> 1032 bytes
+ ...dicTestJalandhar-Regular.drop-hints.A05,A06.ttf | Bin 1344 -> 1340 bytes
+ ...dicTestJalandhar-Regular.drop-hints.A07,A1B.ttf | Bin 1344 -> 1340 bytes
+ ...har-Regular.drop-hints.retain-all-codepoint.ttf | Bin 29464 -> 29468 bytes
+ .../IndicTestJalandhar-Regular.keep-gdef.A01.ttf   | Bin 4176 -> 4172 bytes
+ ...ndicTestJalandhar-Regular.keep-gdef.A05,A06.ttf | Bin 4752 -> 4748 bytes
+ ...ndicTestJalandhar-Regular.keep-gdef.A07,A1B.ttf | Bin 4724 -> 4720 bytes
+ ...dhar-Regular.keep-gdef.retain-all-codepoint.ttf | Bin 49244 -> 49248 bytes
+ .../AdobeVFPrototype.default.41,42,43,57.otf       | Bin 5440 -> 5460 bytes
+ .../AdobeVFPrototype.default.41,42,43.otf          | Bin 4908 -> 4928 bytes
+ .../AdobeVFPrototype.default.41,42.otf             | Bin 4432 -> 4448 bytes
+ .../AdobeVFPrototype.default.41,56,57.otf          | Bin 4576 -> 4596 bytes
+ .../AdobeVFPrototype.default.41.otf                | Bin 3728 -> 3748 bytes
+ .../AdobeVFPrototype.default.42,57.otf             | Bin 4564 -> 4580 bytes
+ .../AdobeVFPrototype.drop-hints.41,42,43,57.otf    | Bin 5252 -> 5272 bytes
+ .../AdobeVFPrototype.drop-hints.41,42,43.otf       | Bin 4720 -> 4740 bytes
+ .../AdobeVFPrototype.drop-hints.41,42.otf          | Bin 4244 -> 4264 bytes
+ .../AdobeVFPrototype.drop-hints.41,56,57.otf       | Bin 4384 -> 4408 bytes
+ .../AdobeVFPrototype.drop-hints.41.otf             | Bin 3540 -> 3560 bytes
+ .../AdobeVFPrototype.drop-hints.42,57.otf          | Bin 4376 -> 4396 bytes
+ ...AdobeVFPrototype.keep-gdef-gpos.41,42,43,57.otf | Bin 5440 -> 5460 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41,42,43.otf   | Bin 4908 -> 4928 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41,42.otf      | Bin 4432 -> 4448 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41,56,57.otf   | Bin 4576 -> 4596 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41.otf         | Bin 3728 -> 3748 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.42,57.otf      | Bin 4564 -> 4580 bytes
+ .../Roboto-Regular.default.1E00,303.ttf            | Bin 2524 -> 2520 bytes
+ .../layout.gdef/Roboto-Regular.default.303.ttf     | Bin 2116 -> 2112 bytes
+ .../Roboto-Regular.default.309,20,30F.ttf          | Bin 2212 -> 2208 bytes
+ .../layout.gdef/Roboto-Regular.default.323.ttf     | Bin 2008 -> 2004 bytes
+ .../Roboto-Regular.default.41,42,43.ttf            | Bin 2572 -> 2568 bytes
+ .../Roboto-Regular.drop-hints.1E00,303.ttf         | Bin 1380 -> 1376 bytes
+ .../layout.gdef/Roboto-Regular.drop-hints.303.ttf  | Bin 1112 -> 1108 bytes
+ .../Roboto-Regular.drop-hints.309,20,30F.ttf       | Bin 1172 -> 1168 bytes
+ .../layout.gdef/Roboto-Regular.drop-hints.323.ttf  | Bin 1056 -> 1052 bytes
+ .../Roboto-Regular.drop-hints.41,42,43.ttf         | Bin 1388 -> 1384 bytes
+ .../Roboto-Regular.keep-gdef-gpos.1E00,303.ttf     | Bin 2524 -> 2520 bytes
+ .../Roboto-Regular.keep-gdef-gpos.303.ttf          | Bin 2116 -> 2112 bytes
+ .../Roboto-Regular.keep-gdef-gpos.309,20,30F.ttf   | Bin 2212 -> 2208 bytes
+ .../Roboto-Regular.keep-gdef-gpos.323.ttf          | Bin 2008 -> 2004 bytes
+ .../Roboto-Regular.keep-gdef-gpos.41,42,43.ttf     | Bin 2572 -> 2568 bytes
+ .../layout.gpos/gpos1_2_font.default.41,43.otf     | Bin 1292 -> 1308 bytes
+ .../layout.gpos/gpos1_2_font.default.41,46.otf     | Bin 1424 -> 1436 bytes
+ .../layout.gpos/gpos1_2_font.default.41.otf        | Bin 1176 -> 1188 bytes
+ .../layout.gpos/gpos1_2_font.default.42,44.otf     | Bin 1268 -> 1280 bytes
+ .../layout.gpos/gpos1_2_font.default.43,46.otf     | Bin 1288 -> 1300 bytes
+ .../gpos1_2_font.default.retain-all-codepoint.otf  | Bin 3604 -> 3816 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.41,43.otf | Bin 2008 -> 2028 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.41,46.otf | Bin 2172 -> 2188 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.41.otf    | Bin 1876 -> 1892 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.42,44.otf | Bin 1992 -> 2012 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.43,46.otf | Bin 2036 -> 2052 bytes
+ ...os1_2_font.retain-gids.retain-all-codepoint.otf | Bin 3604 -> 3816 bytes
+ .../gpos2_1_font7.default.21,23,25.otf             | Bin 1360 -> 1372 bytes
+ .../layout.gpos2/gpos2_1_font7.default.21,23.otf   | Bin 1240 -> 1252 bytes
+ .../layout.gpos2/gpos2_1_font7.default.2E,23.otf   | Bin 1508 -> 1524 bytes
+ .../gpos2_1_font7.default.41,42,43.otf             | Bin 1288 -> 1300 bytes
+ .../gpos2_1_font7.default.retain-all-codepoint.otf | Bin 3604 -> 3816 bytes
+ .../gpos2_1_font7.retain-gids.21,23,25.otf         | Bin 1696 -> 1716 bytes
+ .../gpos2_1_font7.retain-gids.21,23.otf            | Bin 1564 -> 1580 bytes
+ .../gpos2_1_font7.retain-gids.2E,23.otf            | Bin 1944 -> 1960 bytes
+ .../gpos2_1_font7.retain-gids.41,42,43.otf         | Bin 1988 -> 2012 bytes
+ ...s2_1_font7.retain-gids.retain-all-codepoint.otf | Bin 3604 -> 3816 bytes
+ .../gpos2_2_font5.default.21,23,25.otf             | Bin 1360 -> 1372 bytes
+ .../layout.gpos2/gpos2_2_font5.default.21,23.otf   | Bin 1240 -> 1252 bytes
+ .../layout.gpos2/gpos2_2_font5.default.2E,23.otf   | Bin 1508 -> 1524 bytes
+ .../gpos2_2_font5.default.41,42,43.otf             | Bin 1288 -> 1300 bytes
+ .../gpos2_2_font5.default.retain-all-codepoint.otf | Bin 3604 -> 3816 bytes
+ .../gpos2_2_font5.retain-gids.21,23,25.otf         | Bin 1696 -> 1716 bytes
+ .../gpos2_2_font5.retain-gids.21,23.otf            | Bin 1564 -> 1580 bytes
+ .../gpos2_2_font5.retain-gids.2E,23.otf            | Bin 1944 -> 1960 bytes
+ .../gpos2_2_font5.retain-gids.41,42,43.otf         | Bin 1988 -> 2012 bytes
+ ...s2_2_font5.retain-gids.retain-all-codepoint.otf | Bin 3604 -> 3816 bytes
+ .../layout.gpos3/gpos3_font3.default.28,29.otf     | Bin 1248 -> 1260 bytes
+ .../layout.gpos3/gpos3_font3.default.28,2B.otf     | Bin 1376 -> 1392 bytes
+ .../layout.gpos3/gpos3_font3.default.29,2B.otf     | Bin 1292 -> 1304 bytes
+ .../layout.gpos3/gpos3_font3.default.41,42,43.otf  | Bin 1284 -> 1296 bytes
+ .../gpos3_font3.default.retain-all-codepoint.otf   | Bin 3636 -> 3848 bytes
+ .../layout.gpos3/gpos3_font3.retain-gids.28,29.otf | Bin 1632 -> 1652 bytes
+ .../layout.gpos3/gpos3_font3.retain-gids.28,2B.otf | Bin 1780 -> 1800 bytes
+ .../layout.gpos3/gpos3_font3.retain-gids.29,2B.otf | Bin 1696 -> 1712 bytes
+ .../gpos3_font3.retain-gids.41,42,43.otf           | Bin 1984 -> 2008 bytes
+ ...pos3_font3.retain-gids.retain-all-codepoint.otf | Bin 3636 -> 3848 bytes
+ ...pos4_multiple_anchors_1.default.41,42,43,44.otf | Bin 1516 -> 1528 bytes
+ ...pos4_multiple_anchors_1.default.41,42,43,45.otf | Bin 1524 -> 1536 bytes
+ .../gpos4_multiple_anchors_1.default.41,42,43.otf  | Bin 1308 -> 1320 bytes
+ .../gpos4_multiple_anchors_1.default.41,42.otf     | Bin 1208 -> 1220 bytes
+ ...4_multiple_anchors_1.default.41,43,44,45,46.otf | Bin 1864 -> 1880 bytes
+ .../gpos4_multiple_anchors_1.default.41,43,44.otf  | Bin 1524 -> 1540 bytes
+ .../gpos4_multiple_anchors_1.default.41,43,45.otf  | Bin 1532 -> 1548 bytes
+ .../gpos4_multiple_anchors_1.default.41,43.otf     | Bin 1312 -> 1328 bytes
+ .../gpos4_multiple_anchors_1.default.41.otf        | Bin 1196 -> 1208 bytes
+ ...iple_anchors_1.default.retain-all-codepoint.otf | Bin 3668 -> 3880 bytes
+ ..._multiple_anchors_1.retain-gids.41,42,43,44.otf | Bin 2220 -> 2244 bytes
+ ..._multiple_anchors_1.retain-gids.41,42,43,45.otf | Bin 2244 -> 2268 bytes
+ ...os4_multiple_anchors_1.retain-gids.41,42,43.otf | Bin 2008 -> 2032 bytes
+ .../gpos4_multiple_anchors_1.retain-gids.41,42.otf | Bin 1912 -> 1928 bytes
+ ...ltiple_anchors_1.retain-gids.41,43,44,45,46.otf | Bin 2584 -> 2608 bytes
+ ...os4_multiple_anchors_1.retain-gids.41,43,44.otf | Bin 2240 -> 2264 bytes
+ ...os4_multiple_anchors_1.retain-gids.41,43,45.otf | Bin 2260 -> 2284 bytes
+ .../gpos4_multiple_anchors_1.retain-gids.41,43.otf | Bin 2028 -> 2048 bytes
+ .../gpos4_multiple_anchors_1.retain-gids.41.otf    | Bin 1896 -> 1912 bytes
+ ..._anchors_1.retain-gids.retain-all-codepoint.otf | Bin 3668 -> 3880 bytes
+ .../gpos5_font1.default.41,42,43,44.otf            | Bin 1536 -> 1544 bytes
+ .../gpos5_font1.default.41,42,43,45.otf            | Bin 1544 -> 1552 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42,43.otf  | Bin 1328 -> 1336 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42,44.otf  | Bin 1460 -> 1468 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42,45.otf  | Bin 1448 -> 1456 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42.otf     | Bin 1228 -> 1236 bytes
+ .../layout.gpos5/gpos5_font1.default.41,43.otf     | Bin 1332 -> 1344 bytes
+ .../layout.gpos5/gpos5_font1.default.41.otf        | Bin 1216 -> 1224 bytes
+ .../layout.gpos5/gpos5_font1.default.42.otf        | Bin 1076 -> 1084 bytes
+ .../gpos5_font1.default.retain-all-codepoint.otf   | Bin 3688 -> 3896 bytes
+ .../gpos5_font1.retain-gids.41,42,43,44.otf        | Bin 2240 -> 2260 bytes
+ .../gpos5_font1.retain-gids.41,42,43,45.otf        | Bin 2264 -> 2284 bytes
+ .../gpos5_font1.retain-gids.41,42,43.otf           | Bin 2028 -> 2048 bytes
+ .../gpos5_font1.retain-gids.41,42,44.otf           | Bin 2176 -> 2192 bytes
+ .../gpos5_font1.retain-gids.41,42,45.otf           | Bin 2172 -> 2192 bytes
+ .../layout.gpos5/gpos5_font1.retain-gids.41,42.otf | Bin 1932 -> 1944 bytes
+ .../layout.gpos5/gpos5_font1.retain-gids.41,43.otf | Bin 2048 -> 2064 bytes
+ .../layout.gpos5/gpos5_font1.retain-gids.41.otf    | Bin 1916 -> 1928 bytes
+ .../layout.gpos5/gpos5_font1.retain-gids.42.otf    | Bin 1788 -> 1800 bytes
+ ...pos5_font1.retain-gids.retain-all-codepoint.otf | Bin 3688 -> 3896 bytes
+ .../gpos6_font1.default.41,42,43,44.otf            | Bin 1492 -> 1504 bytes
+ .../gpos6_font1.default.41,42,43,45.otf            | Bin 1500 -> 1512 bytes
+ .../layout.gpos6/gpos6_font1.default.41,42,43.otf  | Bin 1284 -> 1296 bytes
+ .../layout.gpos6/gpos6_font1.default.41,42.otf     | Bin 1184 -> 1196 bytes
+ .../gpos6_font1.default.41,43,44,45,46.otf         | Bin 1840 -> 1856 bytes
+ .../layout.gpos6/gpos6_font1.default.41,43,44.otf  | Bin 1500 -> 1516 bytes
+ .../layout.gpos6/gpos6_font1.default.41,43,45.otf  | Bin 1508 -> 1524 bytes
+ .../layout.gpos6/gpos6_font1.default.41,43.otf     | Bin 1288 -> 1304 bytes
+ .../layout.gpos6/gpos6_font1.default.41.otf        | Bin 1172 -> 1184 bytes
+ .../gpos6_font1.default.retain-all-codepoint.otf   | Bin 3644 -> 3856 bytes
+ .../gpos6_font1.retain-gids.41,42,43,44.otf        | Bin 2196 -> 2220 bytes
+ .../gpos6_font1.retain-gids.41,42,43,45.otf        | Bin 2220 -> 2244 bytes
+ .../gpos6_font1.retain-gids.41,42,43.otf           | Bin 1984 -> 2008 bytes
+ .../layout.gpos6/gpos6_font1.retain-gids.41,42.otf | Bin 1888 -> 1904 bytes
+ .../gpos6_font1.retain-gids.41,43,44,45,46.otf     | Bin 2560 -> 2584 bytes
+ .../gpos6_font1.retain-gids.41,43,44.otf           | Bin 2216 -> 2240 bytes
+ .../gpos6_font1.retain-gids.41,43,45.otf           | Bin 2236 -> 2260 bytes
+ .../layout.gpos6/gpos6_font1.retain-gids.41,43.otf | Bin 2004 -> 2024 bytes
+ .../layout.gpos6/gpos6_font1.retain-gids.41.otf    | Bin 1872 -> 1888 bytes
+ ...pos6_font1.retain-gids.retain-all-codepoint.otf | Bin 3644 -> 3856 bytes
+ ...ular.default.627,644,623,62D,644,627,645,2E.ttf | Bin 12684 -> 12684 bytes
+ .../Amiri-Regular.default.627,644,62D,628.ttf      | Bin 9992 -> 9992 bytes
+ .../Amiri-Regular.default.627,644.ttf              | Bin 4168 -> 4168 bytes
+ ...-Regular.default.633,645,627,621,20,644,627.ttf | Bin 9516 -> 9516 bytes
+ .../Amiri-Regular.default.63A,64A,631.ttf          | Bin 7324 -> 7324 bytes
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttf | Bin 48012 -> 48012 bytes
+ .../Amiri-Regular.retain-gids.627,644,62D,628.ttf  | Bin 42640 -> 42640 bytes
+ .../Amiri-Regular.retain-gids.627,644.ttf          | Bin 36696 -> 36696 bytes
+ ...ular.retain-gids.633,645,627,621,20,644,627.ttf | Bin 45908 -> 45908 bytes
+ .../Amiri-Regular.retain-gids.63A,64A,631.ttf      | Bin 37988 -> 37988 bytes
+ ...g1_multiple_subrules_f1.default.30,31,32,33.otf | Bin 1840 -> 1856 bytes
+ ...ning1_multiple_subrules_f1.default.41,42,43.otf | Bin 1332 -> 1344 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.otf | Bin 3704 -> 3916 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf | Bin 2304 -> 2328 bytes
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.otf | Bin 2032 -> 2056 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf | Bin 3704 -> 3916 bytes
+ ...g2_multiple_subrules_f1.default.30,31,32,33.otf | Bin 1840 -> 1856 bytes
+ ...ning2_multiple_subrules_f1.default.41,42,43.otf | Bin 1332 -> 1344 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.otf | Bin 3704 -> 3916 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf | Bin 2304 -> 2328 bytes
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.otf | Bin 2032 -> 2056 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf | Bin 3704 -> 3916 bytes
+ ...pos_chaining3_simple_f1.default.30,31,32,33.otf | Bin 1816 -> 1832 bytes
+ .../gpos_chaining3_simple_f1.default.41,42,43.otf  | Bin 1308 -> 1320 bytes
+ ...ing3_simple_f1.default.retain-all-codepoint.otf | Bin 3680 -> 3892 bytes
+ ...chaining3_simple_f1.retain-gids.30,31,32,33.otf | Bin 2280 -> 2304 bytes
+ ...os_chaining3_simple_f1.retain-gids.41,42,43.otf | Bin 2008 -> 2032 bytes
+ ..._simple_f1.retain-gids.retain-all-codepoint.otf | Bin 3680 -> 3892 bytes
+ .../layout.gpos9/gpos9_font2.default.41,42.otf     | Bin 1184 -> 1196 bytes
+ .../layout.gpos9/gpos9_font2.default.41.otf        | Bin 1172 -> 1184 bytes
+ .../layout.gpos9/gpos9_font2.default.42.otf        | Bin 1032 -> 1044 bytes
+ .../layout.gpos9/gpos9_font2.retain-gids.41,42.otf | Bin 1888 -> 1904 bytes
+ .../layout.gpos9/gpos9_font2.retain-gids.41.otf    | Bin 1872 -> 1888 bytes
+ .../layout.gpos9/gpos9_font2.retain-gids.42.otf    | Bin 1744 -> 1760 bytes
+ ...ub_alternate_substitution.default.53A9,53F1.otf | Bin 4348 -> 4372 bytes
+ .../gsub_alternate_substitution.default.53A9.otf   | Bin 3904 -> 3928 bytes
+ .../gsub_alternate_substitution.default.53F1.otf   | Bin 2452 -> 2484 bytes
+ ...e_substitution.default.retain-all-codepoint.otf | Bin 6040 -> 6064 bytes
+ ...lternate_substitution.retain-gids.53A9,53F1.otf | Bin 4472 -> 4496 bytes
+ ...sub_alternate_substitution.retain-gids.53A9.otf | Bin 4056 -> 4080 bytes
+ ...sub_alternate_substitution.retain-gids.53F1.otf | Bin 2648 -> 2676 bytes
+ ...bstitution.retain-gids.retain-all-codepoint.otf | Bin 6132 -> 6156 bytes
+ ...text1_multiple_subrules_f2.default.41,42,43.otf | Bin 1340 -> 1352 bytes
+ ...context1_multiple_subrules_f2.default.41,42.otf | Bin 1240 -> 1252 bytes
+ ...context1_multiple_subrules_f2.default.41,43.otf | Bin 1344 -> 1360 bytes
+ ...ub_context1_multiple_subrules_f2.default.41.otf | Bin 1228 -> 1240 bytes
+ ...le_subrules_f2.default.retain-all-codepoint.otf | Bin 3712 -> 3924 bytes
+ ...1_multiple_subrules_f2.retain-gids.41,42,43.otf | Bin 2040 -> 2064 bytes
+ ...ext1_multiple_subrules_f2.retain-gids.41,42.otf | Bin 1944 -> 1960 bytes
+ ...ext1_multiple_subrules_f2.retain-gids.41,43.otf | Bin 2060 -> 2080 bytes
+ ...ontext1_multiple_subrules_f2.retain-gids.41.otf | Bin 1928 -> 1944 bytes
+ ...ubrules_f2.retain-gids.retain-all-codepoint.otf | Bin 3712 -> 3924 bytes
+ ...text2_multiple_subrules_f2.default.41,42,43.otf | Bin 1340 -> 1352 bytes
+ ...context2_multiple_subrules_f2.default.41,42.otf | Bin 1240 -> 1252 bytes
+ ...context2_multiple_subrules_f2.default.41,43.otf | Bin 1344 -> 1360 bytes
+ ...ub_context2_multiple_subrules_f2.default.41.otf | Bin 1228 -> 1240 bytes
+ ...le_subrules_f2.default.retain-all-codepoint.otf | Bin 3712 -> 3924 bytes
+ ...2_multiple_subrules_f2.retain-gids.41,42,43.otf | Bin 2040 -> 2064 bytes
+ ...ext2_multiple_subrules_f2.retain-gids.41,42.otf | Bin 1944 -> 1960 bytes
+ ...ext2_multiple_subrules_f2.retain-gids.41,43.otf | Bin 2060 -> 2080 bytes
+ ...ontext2_multiple_subrules_f2.retain-gids.41.otf | Bin 1928 -> 1944 bytes
+ ...ubrules_f2.retain-gids.retain-all-codepoint.otf | Bin 3712 -> 3924 bytes
+ ...sub_context3_successive_f1.default.41,42,43.otf | Bin 1328 -> 1340 bytes
+ .../gsub_context3_successive_f1.default.41,42.otf  | Bin 1228 -> 1240 bytes
+ .../gsub_context3_successive_f1.default.41,43.otf  | Bin 1332 -> 1348 bytes
+ .../gsub_context3_successive_f1.default.41.otf     | Bin 1216 -> 1228 bytes
+ ..._successive_f1.default.retain-all-codepoint.otf | Bin 3700 -> 3912 bytes
+ ...context3_successive_f1.retain-gids.41,42,43.otf | Bin 2028 -> 2052 bytes
+ ...ub_context3_successive_f1.retain-gids.41,42.otf | Bin 1932 -> 1948 bytes
+ ...ub_context3_successive_f1.retain-gids.41,43.otf | Bin 2048 -> 2068 bytes
+ .../gsub_context3_successive_f1.retain-gids.41.otf | Bin 1916 -> 1932 bytes
+ ...cessive_f1.retain-gids.retain-all-codepoint.otf | Bin 3700 -> 3912 bytes
+ ...g1_multiple_subrules_f1.default.30,31,32,33.otf | Bin 1852 -> 1868 bytes
+ ...ning1_multiple_subrules_f1.default.41,42,43.otf | Bin 1344 -> 1356 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.otf | Bin 3716 -> 3928 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf | Bin 2316 -> 2340 bytes
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.otf | Bin 2044 -> 2068 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf | Bin 3716 -> 3928 bytes
+ ...g2_multiple_subrules_f1.default.30,31,32,33.otf | Bin 1852 -> 1868 bytes
+ ...ning2_multiple_subrules_f1.default.41,42,43.otf | Bin 1344 -> 1356 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.otf | Bin 3716 -> 3928 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf | Bin 2316 -> 2340 bytes
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.otf | Bin 2044 -> 2068 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf | Bin 3716 -> 3928 bytes
+ ...sub_chaining3_simple_f2.default.30,31,32,33.otf | Bin 1828 -> 1844 bytes
+ .../gsub_chaining3_simple_f2.default.41,42,43.otf  | Bin 1320 -> 1332 bytes
+ ...ing3_simple_f2.default.retain-all-codepoint.otf | Bin 3692 -> 3904 bytes
+ ...chaining3_simple_f2.retain-gids.30,31,32,33.otf | Bin 2292 -> 2316 bytes
+ ...ub_chaining3_simple_f2.retain-gids.41,42,43.otf | Bin 2020 -> 2044 bytes
+ ..._simple_f2.retain-gids.retain-all-codepoint.otf | Bin 3692 -> 3904 bytes
+ ..._created.default.41,42,43,44,45,46,47,48,49.otf | Bin 2176 -> 2188 bytes
+ ...nually_created.default.41,42,43,44,45,46,47.otf | Bin 1888 -> 1904 bytes
+ ...nually_created.default.41,42,43,44,45,46,4D.otf | Bin 1852 -> 1868 bytes
+ ...nually_created.default.41,42,43,44,45,46,51.otf | Bin 1932 -> 1948 bytes
+ ..._manually_created.default.41,42,43,44,45,46.otf | Bin 1832 -> 1844 bytes
+ .../gsub8_manually_created.default.41,42,43.otf    | Bin 1284 -> 1296 bytes
+ .../gsub8_manually_created.default.41.otf          | Bin 1172 -> 1184 bytes
+ .../gsub8_manually_created.default.61.otf          | Bin 1224 -> 1236 bytes
+ ...nually_created.default.retain-all-codepoint.otf | Bin 3656 -> 3868 bytes
+ ...ated.retain-gids.41,42,43,44,45,46,47,48,49.otf | Bin 2884 -> 2916 bytes
+ ...ly_created.retain-gids.41,42,43,44,45,46,47.otf | Bin 2596 -> 2624 bytes
+ ...ly_created.retain-gids.41,42,43,44,45,46,4D.otf | Bin 2636 -> 2668 bytes
+ ...ly_created.retain-gids.41,42,43,44,45,46,51.otf | Bin 2760 -> 2792 bytes
+ ...ually_created.retain-gids.41,42,43,44,45,46.otf | Bin 2540 -> 2564 bytes
+ ...gsub8_manually_created.retain-gids.41,42,43.otf | Bin 1984 -> 2008 bytes
+ .../gsub8_manually_created.retain-gids.41.otf      | Bin 1872 -> 1888 bytes
+ .../gsub8_manually_created.retain-gids.61.otf      | Bin 2276 -> 2292 bytes
+ ...ly_created.retain-gids.retain-all-codepoint.otf | Bin 3656 -> 3868 bytes
+ .../expected/layout.khmer/Khmer.default.1780.ttf   | Bin 4204 -> 4200 bytes
+ ...ult.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf | Bin 6412 -> 6408 bytes
+ .../expected/layout.khmer/Khmer.default.31.ttf     | Bin 4140 -> 4136 bytes
+ .../layout.khmer/Khmer.retain-gids.1780.ttf        | Bin 4464 -> 4460 bytes
+ ...ids.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf | Bin 7848 -> 7844 bytes
+ .../expected/layout.khmer/Khmer.retain-gids.31.ttf | Bin 4256 -> 4252 bytes
+ ...Bold.default.627,644,623,62D,644,627,645,2E.ttf | Bin 11396 -> 11388 bytes
+ ...toNastaliqUrdu-Bold.default.627,644,62D,628.ttf | Bin 18248 -> 17688 bytes
+ .../NotoNastaliqUrdu-Bold.default.627,644.ttf      | Bin 3528 -> 3520 bytes
+ ...rdu-Bold.default.633,645,627,621,20,644,627.ttf | Bin 12368 -> 12380 bytes
+ .../NotoNastaliqUrdu-Bold.default.63A,64A,631.ttf  | Bin 20368 -> 19380 bytes
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttf | Bin 18232 -> 18224 bytes
+ ...staliqUrdu-Bold.retain-gids.627,644,62D,628.ttf | Bin 24376 -> 23748 bytes
+ .../NotoNastaliqUrdu-Bold.retain-gids.627,644.ttf  | Bin 9176 -> 9164 bytes
+ ...Bold.retain-gids.633,645,627,621,20,644,627.ttf | Bin 18172 -> 18184 bytes
+ ...toNastaliqUrdu-Bold.retain-gids.63A,64A,631.ttf | Bin 26588 -> 25432 bytes
+ .../Roboto-Regular.smallcaps.default.41,42,43.ttf  | Bin 2464 -> 2460 bytes
+ .../Roboto-Regular.smallcaps.default.41,43.ttf     | Bin 2284 -> 2280 bytes
+ .../layout/Roboto-Regular.smallcaps.default.41.ttf | Bin 2084 -> 2080 bytes
+ .../layout/Roboto-Regular.smallcaps.default.43.ttf | Bin 2116 -> 2112 bytes
+ .../Roboto-Regular.smallcaps.default.CA,CB.ttf     | Bin 2388 -> 2384 bytes
+ ...boto-Regular.smallcaps.retain-gids.41,42,43.ttf | Bin 2716 -> 2712 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.41,43.ttf | Bin 2548 -> 2544 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.41.ttf    | Bin 2336 -> 2332 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.43.ttf    | Bin 2384 -> 2380 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.CA,CB.ttf | Bin 6476 -> 6472 bytes
+ .../data/expected/sbix/sbix.default.58,59.ttf      | Bin 193528 -> 193528 bytes
+ test/subset/data/expected/sbix/sbix.default.58.ttf | Bin 121168 -> 121168 bytes
+ test/subset/data/expected/sbix/sbix.default.59.ttf | Bin 89364 -> 89364 bytes
+ .../sbix/sbix.drop-hints-retain-gids.58,59.ttf     | Bin 193528 -> 193528 bytes
+ .../sbix/sbix.drop-hints-retain-gids.58.ttf        | Bin 121168 -> 121168 bytes
+ .../sbix/sbix.drop-hints-retain-gids.59.ttf        | Bin 89404 -> 89404 bytes
+ .../data/expected/sbix/sbix.drop-hints.58,59.ttf   | Bin 193528 -> 193528 bytes
+ .../data/expected/sbix/sbix.drop-hints.58.ttf      | Bin 121168 -> 121168 bytes
+ .../data/expected/sbix/sbix.drop-hints.59.ttf      | Bin 89364 -> 89364 bytes
+ .../data/expected/sbix/sbix.retain-gids.58,59.ttf  | Bin 193528 -> 193528 bytes
+ .../data/expected/sbix/sbix.retain-gids.58.ttf     | Bin 121168 -> 121168 bytes
+ .../data/expected/sbix/sbix.retain-gids.59.ttf     | Bin 89404 -> 89404 bytes
+ .../variable/Fraunces.default.26,66,69,124,125.ttf | Bin 15792 -> 15856 bytes
+ .../data/expected/variable/Fraunces.default.61.ttf | Bin 4228 -> 4232 bytes
+ test/subset/generate-expected-outputs.py           |  54 +++++++++++++++++++--
+ test/subset/run-tests.py                           |  12 ++++-
+ 948 files changed, 60 insertions(+), 6 deletions(-)
+
+commit 770fbd5aa66b8f557d45366ed51df5a0b26e9e4b
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Aug 4 00:07:23 2021 +0200
+
+    Revert "[test] Speed-up subset tests by saving TTX dump"
+    
+    This reverts commit 278f44dcee34cea25403e42e06668f0afe2328c1.
+
+ .../Comfortaa-Regular-new.default.61,62,63.ttf     |    Bin 0 -> 7060 bytes
+ .../Comfortaa-Regular-new.default.61,62,63.ttx     |   4507 -
+ .../basics/Comfortaa-Regular-new.default.61,63.ttf |    Bin 0 -> 6692 bytes
+ .../basics/Comfortaa-Regular-new.default.61,63.ttx |   4359 -
+ .../basics/Comfortaa-Regular-new.default.61.ttf    |    Bin 0 -> 6328 bytes
+ .../basics/Comfortaa-Regular-new.default.61.ttx    |   4198 -
+ .../basics/Comfortaa-Regular-new.default.62.ttf    |    Bin 0 -> 6200 bytes
+ .../basics/Comfortaa-Regular-new.default.62.ttx    |   4151 -
+ .../basics/Comfortaa-Regular-new.default.63.ttf    |    Bin 0 -> 6256 bytes
+ .../basics/Comfortaa-Regular-new.default.63.ttx    |   4209 -
+ ...aa-Regular-new.default.retain-all-codepoint.ttf |    Bin 0 -> 220928 bytes
+ ...aa-Regular-new.default.retain-all-codepoint.ttx | 132956 -----------------
+ ...Regular-new.drop-hints-retain-gids.61,62,63.ttf |    Bin 0 -> 4608 bytes
+ ...Regular-new.drop-hints-retain-gids.61,62,63.ttx |   1918 -
+ ...aa-Regular-new.drop-hints-retain-gids.61,63.ttf |    Bin 0 -> 4312 bytes
+ ...aa-Regular-new.drop-hints-retain-gids.61,63.ttx |   1785 -
+ ...ortaa-Regular-new.drop-hints-retain-gids.61.ttf |    Bin 0 -> 3724 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.61.ttx |   1493 -
+ ...ortaa-Regular-new.drop-hints-retain-gids.62.ttf |    Bin 0 -> 3900 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.62.ttx |   1600 -
+ ...ortaa-Regular-new.drop-hints-retain-gids.63.ttf |    Bin 0 -> 3972 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.63.ttx |   1662 -
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf |    Bin 0 -> 189800 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttx | 122816 ----------------
+ .../Comfortaa-Regular-new.drop-hints.61,62,63.ttf  |    Bin 0 -> 2600 bytes
+ .../Comfortaa-Regular-new.drop-hints.61,62,63.ttx  |    813 -
+ .../Comfortaa-Regular-new.drop-hints.61,63.ttf     |    Bin 0 -> 2296 bytes
+ .../Comfortaa-Regular-new.drop-hints.61,63.ttx     |    675 -
+ .../basics/Comfortaa-Regular-new.drop-hints.61.ttf |    Bin 0 -> 1976 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.61.ttx |    523 -
+ .../basics/Comfortaa-Regular-new.drop-hints.62.ttf |    Bin 0 -> 1900 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.62.ttx |    490 -
+ .../basics/Comfortaa-Regular-new.drop-hints.63.ttf |    Bin 0 -> 1968 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.63.ttx |    547 -
+ ...Regular-new.drop-hints.retain-all-codepoint.ttf |    Bin 0 -> 189756 bytes
+ ...Regular-new.drop-hints.retain-all-codepoint.ttx | 122806 ----------------
+ .../basics/Comfortaa-Regular-new.gids.61,62,63.ttf |    Bin 0 -> 7988 bytes
+ .../basics/Comfortaa-Regular-new.gids.61,62,63.ttx |   4929 -
+ .../basics/Comfortaa-Regular-new.gids.61,63.ttf    |    Bin 0 -> 7628 bytes
+ .../basics/Comfortaa-Regular-new.gids.61,63.ttx    |   4778 -
+ .../basics/Comfortaa-Regular-new.gids.61.ttf       |    Bin 0 -> 7256 bytes
+ .../basics/Comfortaa-Regular-new.gids.61.ttx       |   4614 -
+ .../basics/Comfortaa-Regular-new.gids.62.ttf       |    Bin 0 -> 7184 bytes
+ .../basics/Comfortaa-Regular-new.gids.62.ttx       |   4606 -
+ .../basics/Comfortaa-Regular-new.gids.63.ttf       |    Bin 0 -> 7180 bytes
+ .../basics/Comfortaa-Regular-new.gids.63.ttx       |   4623 -
+ ...ortaa-Regular-new.gids.retain-all-codepoint.ttf |    Bin 0 -> 220928 bytes
+ ...ortaa-Regular-new.gids.retain-all-codepoint.ttx | 132956 -----------------
+ .../Comfortaa-Regular-new.glyph-names.61,62,63.ttf |    Bin 0 -> 7072 bytes
+ .../Comfortaa-Regular-new.glyph-names.61,62,63.ttx |   4519 -
+ .../Comfortaa-Regular-new.glyph-names.61,63.ttf    |    Bin 0 -> 6700 bytes
+ .../Comfortaa-Regular-new.glyph-names.61,63.ttx    |   4371 -
+ .../Comfortaa-Regular-new.glyph-names.61.ttf       |    Bin 0 -> 6336 bytes
+ .../Comfortaa-Regular-new.glyph-names.61.ttx       |   4210 -
+ .../Comfortaa-Regular-new.glyph-names.62.ttf       |    Bin 0 -> 6208 bytes
+ .../Comfortaa-Regular-new.glyph-names.62.ttx       |   4163 -
+ .../Comfortaa-Regular-new.glyph-names.63.ttf       |    Bin 0 -> 6264 bytes
+ .../Comfortaa-Regular-new.glyph-names.63.ttx       |   4221 -
+ ...egular-new.glyph-names.retain-all-codepoint.ttf |    Bin 0 -> 227920 bytes
+ ...egular-new.glyph-names.retain-all-codepoint.ttx | 133598 ------------------
+ ...gular-new.keep-all-layout-features.61,62,63.ttf |    Bin 0 -> 7504 bytes
+ ...gular-new.keep-all-layout-features.61,62,63.ttx |   4670 -
+ ...-Regular-new.keep-all-layout-features.61,63.ttf |    Bin 0 -> 7140 bytes
+ ...-Regular-new.keep-all-layout-features.61,63.ttx |   4519 -
+ ...taa-Regular-new.keep-all-layout-features.61.ttf |    Bin 0 -> 6772 bytes
+ ...taa-Regular-new.keep-all-layout-features.61.ttx |   4355 -
+ ...taa-Regular-new.keep-all-layout-features.62.ttf |    Bin 0 -> 6200 bytes
+ ...taa-Regular-new.keep-all-layout-features.62.ttx |   4151 -
+ ...taa-Regular-new.keep-all-layout-features.63.ttf |    Bin 0 -> 6256 bytes
+ ...taa-Regular-new.keep-all-layout-features.63.ttx |   4209 -
+ ...ep-all-layout-features.retain-all-codepoint.ttf |    Bin 0 -> 221620 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttx | 133303 -----------------
+ ...fortaa-Regular-new.layout-features.61,62,63.ttf |    Bin 0 -> 7060 bytes
+ ...fortaa-Regular-new.layout-features.61,62,63.ttx |   4507 -
+ ...Comfortaa-Regular-new.layout-features.61,63.ttf |    Bin 0 -> 6692 bytes
+ ...Comfortaa-Regular-new.layout-features.61,63.ttx |   4359 -
+ .../Comfortaa-Regular-new.layout-features.61.ttf   |    Bin 0 -> 6328 bytes
+ .../Comfortaa-Regular-new.layout-features.61.ttx   |   4198 -
+ .../Comfortaa-Regular-new.layout-features.62.ttf   |    Bin 0 -> 6200 bytes
+ .../Comfortaa-Regular-new.layout-features.62.ttx   |   4151 -
+ .../Comfortaa-Regular-new.layout-features.63.ttf   |    Bin 0 -> 6256 bytes
+ .../Comfortaa-Regular-new.layout-features.63.ttx   |   4209 -
+ ...ar-new.layout-features.retain-all-codepoint.ttf |    Bin 0 -> 219124 bytes
+ ...ar-new.layout-features.retain-all-codepoint.ttx | 131168 -----------------
+ .../Comfortaa-Regular-new.name-ids.61,62,63.ttf    |    Bin 0 -> 6800 bytes
+ .../Comfortaa-Regular-new.name-ids.61,62,63.ttx    |   4495 -
+ .../Comfortaa-Regular-new.name-ids.61,63.ttf       |    Bin 0 -> 6432 bytes
+ .../Comfortaa-Regular-new.name-ids.61,63.ttx       |   4347 -
+ .../basics/Comfortaa-Regular-new.name-ids.61.ttf   |    Bin 0 -> 6068 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.61.ttx   |   4186 -
+ .../basics/Comfortaa-Regular-new.name-ids.62.ttf   |    Bin 0 -> 5940 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.62.ttx   |   4139 -
+ .../basics/Comfortaa-Regular-new.name-ids.63.ttf   |    Bin 0 -> 5996 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.63.ttx   |   4197 -
+ ...a-Regular-new.name-ids.retain-all-codepoint.ttf |    Bin 0 -> 220668 bytes
+ ...a-Regular-new.name-ids.retain-all-codepoint.ttx | 132944 -----------------
+ ...mfortaa-Regular-new.name-languages.61,62,63.ttf |    Bin 0 -> 7060 bytes
+ ...mfortaa-Regular-new.name-languages.61,62,63.ttx |   4507 -
+ .../Comfortaa-Regular-new.name-languages.61,63.ttf |    Bin 0 -> 6692 bytes
+ .../Comfortaa-Regular-new.name-languages.61,63.ttx |   4359 -
+ .../Comfortaa-Regular-new.name-languages.61.ttf    |    Bin 0 -> 6328 bytes
+ .../Comfortaa-Regular-new.name-languages.61.ttx    |   4198 -
+ .../Comfortaa-Regular-new.name-languages.62.ttf    |    Bin 0 -> 6200 bytes
+ .../Comfortaa-Regular-new.name-languages.62.ttx    |   4151 -
+ .../Comfortaa-Regular-new.name-languages.63.ttf    |    Bin 0 -> 6256 bytes
+ .../Comfortaa-Regular-new.name-languages.63.ttx    |   4209 -
+ ...lar-new.name-languages.retain-all-codepoint.ttf |    Bin 0 -> 220928 bytes
+ ...lar-new.name-languages.retain-all-codepoint.ttx | 132956 -----------------
+ .../Comfortaa-Regular-new.name-legacy.61,62,63.ttf |    Bin 0 -> 7060 bytes
+ .../Comfortaa-Regular-new.name-legacy.61,62,63.ttx |   4507 -
+ .../Comfortaa-Regular-new.name-legacy.61,63.ttf    |    Bin 0 -> 6692 bytes
+ .../Comfortaa-Regular-new.name-legacy.61,63.ttx    |   4359 -
+ .../Comfortaa-Regular-new.name-legacy.61.ttf       |    Bin 0 -> 6328 bytes
+ .../Comfortaa-Regular-new.name-legacy.61.ttx       |   4198 -
+ .../Comfortaa-Regular-new.name-legacy.62.ttf       |    Bin 0 -> 6200 bytes
+ .../Comfortaa-Regular-new.name-legacy.62.ttx       |   4151 -
+ .../Comfortaa-Regular-new.name-legacy.63.ttf       |    Bin 0 -> 6256 bytes
+ .../Comfortaa-Regular-new.name-legacy.63.ttx       |   4209 -
+ ...egular-new.name-legacy.retain-all-codepoint.ttf |    Bin 0 -> 220928 bytes
+ ...egular-new.name-legacy.retain-all-codepoint.ttx | 132956 -----------------
+ ...egular-new.no-prune-unicode-ranges.61,62,63.ttf |    Bin 0 -> 7060 bytes
+ ...egular-new.no-prune-unicode-ranges.61,62,63.ttx |   4507 -
+ ...a-Regular-new.no-prune-unicode-ranges.61,63.ttf |    Bin 0 -> 6692 bytes
+ ...a-Regular-new.no-prune-unicode-ranges.61,63.ttx |   4359 -
+ ...rtaa-Regular-new.no-prune-unicode-ranges.61.ttf |    Bin 0 -> 6328 bytes
+ ...rtaa-Regular-new.no-prune-unicode-ranges.61.ttx |   4198 -
+ ...rtaa-Regular-new.no-prune-unicode-ranges.62.ttf |    Bin 0 -> 6200 bytes
+ ...rtaa-Regular-new.no-prune-unicode-ranges.62.ttx |   4151 -
+ ...rtaa-Regular-new.no-prune-unicode-ranges.63.ttf |    Bin 0 -> 6256 bytes
+ ...rtaa-Regular-new.no-prune-unicode-ranges.63.ttx |   4209 -
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf |    Bin 0 -> 220928 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttx | 132956 -----------------
+ ...mfortaa-Regular-new.notdef-outline.61,62,63.ttf |    Bin 0 -> 7652 bytes
+ ...mfortaa-Regular-new.notdef-outline.61,62,63.ttx |   4758 -
+ .../Comfortaa-Regular-new.notdef-outline.61,63.ttf |    Bin 0 -> 7284 bytes
+ .../Comfortaa-Regular-new.notdef-outline.61,63.ttx |   4610 -
+ .../Comfortaa-Regular-new.notdef-outline.61.ttf    |    Bin 0 -> 6920 bytes
+ .../Comfortaa-Regular-new.notdef-outline.61.ttx    |   4449 -
+ .../Comfortaa-Regular-new.notdef-outline.62.ttf    |    Bin 0 -> 6796 bytes
+ .../Comfortaa-Regular-new.notdef-outline.62.ttx    |   4402 -
+ .../Comfortaa-Regular-new.notdef-outline.63.ttf    |    Bin 0 -> 6844 bytes
+ .../Comfortaa-Regular-new.notdef-outline.63.ttx    |   4460 -
+ ...lar-new.notdef-outline.retain-all-codepoint.ttf |    Bin 0 -> 221524 bytes
+ ...lar-new.notdef-outline.retain-all-codepoint.ttx | 133207 -----------------
+ .../Comfortaa-Regular-new.retain-gids.61,62,63.ttf |    Bin 0 -> 9068 bytes
+ .../Comfortaa-Regular-new.retain-gids.61,62,63.ttx |   5612 -
+ .../Comfortaa-Regular-new.retain-gids.61,63.ttf    |    Bin 0 -> 8708 bytes
+ .../Comfortaa-Regular-new.retain-gids.61,63.ttx    |   5469 -
+ .../Comfortaa-Regular-new.retain-gids.61.ttf       |    Bin 0 -> 8076 bytes
+ .../Comfortaa-Regular-new.retain-gids.61.ttx       |   5168 -
+ .../Comfortaa-Regular-new.retain-gids.62.ttf       |    Bin 0 -> 8200 bytes
+ .../Comfortaa-Regular-new.retain-gids.62.ttx       |   5261 -
+ .../Comfortaa-Regular-new.retain-gids.63.ttf       |    Bin 0 -> 8260 bytes
+ .../Comfortaa-Regular-new.retain-gids.63.ttx       |   5324 -
+ ...egular-new.retain-gids.retain-all-codepoint.ttf |    Bin 0 -> 220972 bytes
+ ...egular-new.retain-gids.retain-all-codepoint.ttx | 132966 -----------------
+ ...numMyeongjo-Regular-subset.default.61,62,63.ttf |    Bin 0 -> 4128 bytes
+ ...numMyeongjo-Regular-subset.default.61,62,63.ttx |   2032 -
+ .../NanumMyeongjo-Regular-subset.default.61,63.ttf |    Bin 0 -> 3580 bytes
+ .../NanumMyeongjo-Regular-subset.default.61,63.ttx |   1822 -
+ .../NanumMyeongjo-Regular-subset.default.61.ttf    |    Bin 0 -> 3156 bytes
+ .../NanumMyeongjo-Regular-subset.default.61.ttx    |   1696 -
+ .../NanumMyeongjo-Regular-subset.default.62.ttf    |    Bin 0 -> 3180 bytes
+ .../NanumMyeongjo-Regular-subset.default.62.ttx    |   1719 -
+ .../NanumMyeongjo-Regular-subset.default.63.ttf    |    Bin 0 -> 3048 bytes
+ .../NanumMyeongjo-Regular-subset.default.63.ttx    |   1635 -
+ ...Regular-subset.default.retain-all-codepoint.ttf |    Bin 0 -> 9524 bytes
+ ...Regular-subset.default.retain-all-codepoint.ttx |   4391 -
+ ...ular-subset.drop-hints-retain-gids.61,62,63.ttf |    Bin 0 -> 1452 bytes
+ ...ular-subset.drop-hints-retain-gids.61,62,63.ttx |    380 -
+ ...Regular-subset.drop-hints-retain-gids.61,63.ttf |    Bin 0 -> 1284 bytes
+ ...Regular-subset.drop-hints-retain-gids.61,63.ttx |    314 -
+ ...jo-Regular-subset.drop-hints-retain-gids.61.ttf |    Bin 0 -> 1128 bytes
+ ...jo-Regular-subset.drop-hints-retain-gids.61.ttx |    254 -
+ ...jo-Regular-subset.drop-hints-retain-gids.62.ttf |    Bin 0 -> 1144 bytes
+ ...jo-Regular-subset.drop-hints-retain-gids.62.ttx |    261 -
+ ...jo-Regular-subset.drop-hints-retain-gids.63.ttf |    Bin 0 -> 1116 bytes
+ ...jo-Regular-subset.drop-hints-retain-gids.63.ttx |    251 -
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf |    Bin 0 -> 3536 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttx |   1215 -
+ ...Myeongjo-Regular-subset.drop-hints.61,62,63.ttf |    Bin 0 -> 1452 bytes
+ ...Myeongjo-Regular-subset.drop-hints.61,62,63.ttx |    380 -
+ ...numMyeongjo-Regular-subset.drop-hints.61,63.ttf |    Bin 0 -> 1276 bytes
+ ...numMyeongjo-Regular-subset.drop-hints.61,63.ttx |    310 -
+ .../NanumMyeongjo-Regular-subset.drop-hints.61.ttf |    Bin 0 -> 1128 bytes
+ .../NanumMyeongjo-Regular-subset.drop-hints.61.ttx |    254 -
+ .../NanumMyeongjo-Regular-subset.drop-hints.62.ttf |    Bin 0 -> 1140 bytes
+ .../NanumMyeongjo-Regular-subset.drop-hints.62.ttx |    257 -
+ .../NanumMyeongjo-Regular-subset.drop-hints.63.ttf |    Bin 0 -> 1104 bytes
+ .../NanumMyeongjo-Regular-subset.drop-hints.63.ttx |    243 -
+ ...ular-subset.drop-hints.retain-all-codepoint.ttf |    Bin 0 -> 3536 bytes
+ ...ular-subset.drop-hints.retain-all-codepoint.ttx |   1215 -
+ .../NanumMyeongjo-Regular-subset.gids.61,62,63.ttf |    Bin 0 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.61,62,63.ttx |   2032 -
+ .../NanumMyeongjo-Regular-subset.gids.61,63.ttf    |    Bin 0 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.61,63.ttx    |   2032 -
+ .../NanumMyeongjo-Regular-subset.gids.61.ttf       |    Bin 0 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.61.ttx       |   2032 -
+ .../NanumMyeongjo-Regular-subset.gids.62.ttf       |    Bin 0 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.62.ttx       |   2032 -
+ .../NanumMyeongjo-Regular-subset.gids.63.ttf       |    Bin 0 -> 4128 bytes
+ .../NanumMyeongjo-Regular-subset.gids.63.ttx       |   2032 -
+ ...jo-Regular-subset.gids.retain-all-codepoint.ttf |    Bin 0 -> 9524 bytes
+ ...jo-Regular-subset.gids.retain-all-codepoint.ttx |   4391 -
+ ...yeongjo-Regular-subset.glyph-names.61,62,63.ttf |    Bin 0 -> 4128 bytes
+ ...yeongjo-Regular-subset.glyph-names.61,62,63.ttx |   2032 -
+ ...umMyeongjo-Regular-subset.glyph-names.61,63.ttf |    Bin 0 -> 3580 bytes
+ ...umMyeongjo-Regular-subset.glyph-names.61,63.ttx |   1822 -
+ ...NanumMyeongjo-Regular-subset.glyph-names.61.ttf |    Bin 0 -> 3156 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.61.ttx |   1696 -
+ ...NanumMyeongjo-Regular-subset.glyph-names.62.ttf |    Bin 0 -> 3180 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.62.ttx |   1719 -
+ ...NanumMyeongjo-Regular-subset.glyph-names.63.ttf |    Bin 0 -> 3048 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.63.ttx |   1635 -
+ ...lar-subset.glyph-names.retain-all-codepoint.ttf |    Bin 0 -> 9524 bytes
+ ...lar-subset.glyph-names.retain-all-codepoint.ttx |   4391 -
+ ...ar-subset.keep-all-layout-features.61,62,63.ttf |    Bin 0 -> 4128 bytes
+ ...ar-subset.keep-all-layout-features.61,62,63.ttx |   2032 -
+ ...gular-subset.keep-all-layout-features.61,63.ttf |    Bin 0 -> 3580 bytes
+ ...gular-subset.keep-all-layout-features.61,63.ttx |   1822 -
+ ...-Regular-subset.keep-all-layout-features.61.ttf |    Bin 0 -> 3156 bytes
+ ...-Regular-subset.keep-all-layout-features.61.ttx |   1696 -
+ ...-Regular-subset.keep-all-layout-features.62.ttf |    Bin 0 -> 3180 bytes
+ ...-Regular-subset.keep-all-layout-features.62.ttx |   1719 -
+ ...-Regular-subset.keep-all-layout-features.63.ttf |    Bin 0 -> 3048 bytes
+ ...-Regular-subset.keep-all-layout-features.63.ttx |   1635 -
+ ...ep-all-layout-features.retain-all-codepoint.ttf |    Bin 0 -> 9524 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttx |   4391 -
+ ...gjo-Regular-subset.layout-features.61,62,63.ttf |    Bin 0 -> 4128 bytes
+ ...gjo-Regular-subset.layout-features.61,62,63.ttx |   2032 -
+ ...eongjo-Regular-subset.layout-features.61,63.ttf |    Bin 0 -> 3580 bytes
+ ...eongjo-Regular-subset.layout-features.61,63.ttx |   1822 -
+ ...mMyeongjo-Regular-subset.layout-features.61.ttf |    Bin 0 -> 3156 bytes
+ ...mMyeongjo-Regular-subset.layout-features.61.ttx |   1696 -
+ ...mMyeongjo-Regular-subset.layout-features.62.ttf |    Bin 0 -> 3180 bytes
+ ...mMyeongjo-Regular-subset.layout-features.62.ttx |   1719 -
+ ...mMyeongjo-Regular-subset.layout-features.63.ttf |    Bin 0 -> 3048 bytes
+ ...mMyeongjo-Regular-subset.layout-features.63.ttx |   1635 -
+ ...subset.layout-features.retain-all-codepoint.ttf |    Bin 0 -> 9524 bytes
+ ...subset.layout-features.retain-all-codepoint.ttx |   4391 -
+ ...umMyeongjo-Regular-subset.name-ids.61,62,63.ttf |    Bin 0 -> 3924 bytes
+ ...umMyeongjo-Regular-subset.name-ids.61,62,63.ttx |   2020 -
+ ...NanumMyeongjo-Regular-subset.name-ids.61,63.ttf |    Bin 0 -> 3376 bytes
+ ...NanumMyeongjo-Regular-subset.name-ids.61,63.ttx |   1810 -
+ .../NanumMyeongjo-Regular-subset.name-ids.61.ttf   |    Bin 0 -> 2952 bytes
+ .../NanumMyeongjo-Regular-subset.name-ids.61.ttx   |   1684 -
+ .../NanumMyeongjo-Regular-subset.name-ids.62.ttf   |    Bin 0 -> 2976 bytes
+ .../NanumMyeongjo-Regular-subset.name-ids.62.ttx   |   1707 -
+ .../NanumMyeongjo-Regular-subset.name-ids.63.ttf   |    Bin 0 -> 2844 bytes
+ .../NanumMyeongjo-Regular-subset.name-ids.63.ttx   |   1623 -
+ ...egular-subset.name-ids.retain-all-codepoint.ttf |    Bin 0 -> 9320 bytes
+ ...egular-subset.name-ids.retain-all-codepoint.ttx |   4379 -
+ ...ngjo-Regular-subset.name-languages.61,62,63.ttf |    Bin 0 -> 4172 bytes
+ ...ngjo-Regular-subset.name-languages.61,62,63.ttx |   2041 -
+ ...yeongjo-Regular-subset.name-languages.61,63.ttf |    Bin 0 -> 3624 bytes
+ ...yeongjo-Regular-subset.name-languages.61,63.ttx |   1831 -
+ ...umMyeongjo-Regular-subset.name-languages.61.ttf |    Bin 0 -> 3200 bytes
+ ...umMyeongjo-Regular-subset.name-languages.61.ttx |   1705 -
+ ...umMyeongjo-Regular-subset.name-languages.62.ttf |    Bin 0 -> 3224 bytes
+ ...umMyeongjo-Regular-subset.name-languages.62.ttx |   1728 -
+ ...umMyeongjo-Regular-subset.name-languages.63.ttf |    Bin 0 -> 3092 bytes
+ ...umMyeongjo-Regular-subset.name-languages.63.ttx |   1644 -
+ ...-subset.name-languages.retain-all-codepoint.ttf |    Bin 0 -> 9568 bytes
+ ...-subset.name-languages.retain-all-codepoint.ttx |   4400 -
+ ...yeongjo-Regular-subset.name-legacy.61,62,63.ttf |    Bin 0 -> 4128 bytes
+ ...yeongjo-Regular-subset.name-legacy.61,62,63.ttx |   2032 -
+ ...umMyeongjo-Regular-subset.name-legacy.61,63.ttf |    Bin 0 -> 3580 bytes
+ ...umMyeongjo-Regular-subset.name-legacy.61,63.ttx |   1822 -
+ ...NanumMyeongjo-Regular-subset.name-legacy.61.ttf |    Bin 0 -> 3156 bytes
+ ...NanumMyeongjo-Regular-subset.name-legacy.61.ttx |   1696 -
+ ...NanumMyeongjo-Regular-subset.name-legacy.62.ttf |    Bin 0 -> 3180 bytes
+ ...NanumMyeongjo-Regular-subset.name-legacy.62.ttx |   1719 -
+ ...NanumMyeongjo-Regular-subset.name-legacy.63.ttf |    Bin 0 -> 3048 bytes
+ ...NanumMyeongjo-Regular-subset.name-legacy.63.ttx |   1635 -
+ ...lar-subset.name-legacy.retain-all-codepoint.ttf |    Bin 0 -> 9524 bytes
+ ...lar-subset.name-legacy.retain-all-codepoint.ttx |   4391 -
+ ...lar-subset.no-prune-unicode-ranges.61,62,63.ttf |    Bin 0 -> 4128 bytes
+ ...lar-subset.no-prune-unicode-ranges.61,62,63.ttx |   2032 -
+ ...egular-subset.no-prune-unicode-ranges.61,63.ttf |    Bin 0 -> 3580 bytes
+ ...egular-subset.no-prune-unicode-ranges.61,63.ttx |   1822 -
+ ...o-Regular-subset.no-prune-unicode-ranges.61.ttf |    Bin 0 -> 3156 bytes
+ ...o-Regular-subset.no-prune-unicode-ranges.61.ttx |   1696 -
+ ...o-Regular-subset.no-prune-unicode-ranges.62.ttf |    Bin 0 -> 3180 bytes
+ ...o-Regular-subset.no-prune-unicode-ranges.62.ttx |   1719 -
+ ...o-Regular-subset.no-prune-unicode-ranges.63.ttf |    Bin 0 -> 3048 bytes
+ ...o-Regular-subset.no-prune-unicode-ranges.63.ttx |   1635 -
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf |    Bin 0 -> 9524 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttx |   4391 -
+ ...ngjo-Regular-subset.notdef-outline.61,62,63.ttf |    Bin 0 -> 4128 bytes
+ ...ngjo-Regular-subset.notdef-outline.61,62,63.ttx |   2032 -
+ ...yeongjo-Regular-subset.notdef-outline.61,63.ttf |    Bin 0 -> 3580 bytes
+ ...yeongjo-Regular-subset.notdef-outline.61,63.ttx |   1822 -
+ ...umMyeongjo-Regular-subset.notdef-outline.61.ttf |    Bin 0 -> 3156 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.61.ttx |   1696 -
+ ...umMyeongjo-Regular-subset.notdef-outline.62.ttf |    Bin 0 -> 3180 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.62.ttx |   1719 -
+ ...umMyeongjo-Regular-subset.notdef-outline.63.ttf |    Bin 0 -> 3048 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.63.ttx |   1635 -
+ ...-subset.notdef-outline.retain-all-codepoint.ttf |    Bin 0 -> 9524 bytes
+ ...-subset.notdef-outline.retain-all-codepoint.ttx |   4391 -
+ ...yeongjo-Regular-subset.retain-gids.61,62,63.ttf |    Bin 0 -> 4128 bytes
+ ...yeongjo-Regular-subset.retain-gids.61,62,63.ttx |   2032 -
+ ...umMyeongjo-Regular-subset.retain-gids.61,63.ttf |    Bin 0 -> 3588 bytes
+ ...umMyeongjo-Regular-subset.retain-gids.61,63.ttx |   1826 -
+ ...NanumMyeongjo-Regular-subset.retain-gids.61.ttf |    Bin 0 -> 3156 bytes
+ ...NanumMyeongjo-Regular-subset.retain-gids.61.ttx |   1696 -
+ ...NanumMyeongjo-Regular-subset.retain-gids.62.ttf |    Bin 0 -> 3184 bytes
+ ...NanumMyeongjo-Regular-subset.retain-gids.62.ttx |   1723 -
+ ...NanumMyeongjo-Regular-subset.retain-gids.63.ttf |    Bin 0 -> 3060 bytes
+ ...NanumMyeongjo-Regular-subset.retain-gids.63.ttx |   1643 -
+ ...lar-subset.retain-gids.retain-all-codepoint.ttf |    Bin 0 -> 9524 bytes
+ ...lar-subset.retain-gids.retain-all-codepoint.ttx |   4391 -
+ .../basics/Roboto-Regular.abc.default.61,62,63.ttf |    Bin 0 -> 2452 bytes
+ .../basics/Roboto-Regular.abc.default.61,62,63.ttx |   1407 -
+ .../basics/Roboto-Regular.abc.default.61,63.ttf    |    Bin 0 -> 2260 bytes
+ .../basics/Roboto-Regular.abc.default.61,63.ttx    |   1259 -
+ .../basics/Roboto-Regular.abc.default.61.ttf       |    Bin 0 -> 2048 bytes
+ .../basics/Roboto-Regular.abc.default.61.ttx       |   1127 -
+ .../basics/Roboto-Regular.abc.default.62.ttf       |    Bin 0 -> 1916 bytes
+ .../basics/Roboto-Regular.abc.default.62.ttx       |   1025 -
+ .../basics/Roboto-Regular.abc.default.63.ttf       |    Bin 0 -> 1972 bytes
+ .../basics/Roboto-Regular.abc.default.63.ttx       |   1073 -
+ ...to-Regular.abc.default.retain-all-codepoint.ttf |    Bin 0 -> 2452 bytes
+ ...to-Regular.abc.default.retain-all-codepoint.ttx |   1407 -
+ ...Regular.abc.drop-hints-retain-gids.61,62,63.ttf |    Bin 0 -> 1192 bytes
+ ...Regular.abc.drop-hints-retain-gids.61,62,63.ttx |    479 -
+ ...to-Regular.abc.drop-hints-retain-gids.61,63.ttf |    Bin 0 -> 1124 bytes
+ ...to-Regular.abc.drop-hints-retain-gids.61,63.ttx |    433 -
+ ...oboto-Regular.abc.drop-hints-retain-gids.61.ttf |    Bin 0 -> 984 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.61.ttx |    374 -
+ ...oboto-Regular.abc.drop-hints-retain-gids.62.ttf |    Bin 0 -> 880 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.62.ttx |    297 -
+ ...oboto-Regular.abc.drop-hints-retain-gids.63.ttf |    Bin 0 -> 968 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.63.ttx |    369 -
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf |    Bin 0 -> 1192 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttx |    479 -
+ .../Roboto-Regular.abc.drop-hints.61,62,63.ttf     |    Bin 0 -> 1192 bytes
+ .../Roboto-Regular.abc.drop-hints.61,62,63.ttx     |    479 -
+ .../basics/Roboto-Regular.abc.drop-hints.61,63.ttf |    Bin 0 -> 1108 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.61,63.ttx |    429 -
+ .../basics/Roboto-Regular.abc.drop-hints.61.ttf    |    Bin 0 -> 984 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.61.ttx    |    374 -
+ .../basics/Roboto-Regular.abc.drop-hints.62.ttf    |    Bin 0 -> 876 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.62.ttx    |    293 -
+ .../basics/Roboto-Regular.abc.drop-hints.63.ttf    |    Bin 0 -> 956 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.63.ttx    |    361 -
+ ...Regular.abc.drop-hints.retain-all-codepoint.ttf |    Bin 0 -> 1192 bytes
+ ...Regular.abc.drop-hints.retain-all-codepoint.ttx |    479 -
+ .../basics/Roboto-Regular.abc.gids.61,62,63.ttf    |    Bin 0 -> 2452 bytes
+ .../basics/Roboto-Regular.abc.gids.61,62,63.ttx    |   1407 -
+ .../basics/Roboto-Regular.abc.gids.61,63.ttf       |    Bin 0 -> 2452 bytes
+ .../basics/Roboto-Regular.abc.gids.61,63.ttx       |   1407 -
+ .../expected/basics/Roboto-Regular.abc.gids.61.ttf |    Bin 0 -> 2452 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.61.ttx |   1407 -
+ .../expected/basics/Roboto-Regular.abc.gids.62.ttf |    Bin 0 -> 2452 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.62.ttx |   1407 -
+ .../expected/basics/Roboto-Regular.abc.gids.63.ttf |    Bin 0 -> 2452 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.63.ttx |   1407 -
+ ...oboto-Regular.abc.gids.retain-all-codepoint.ttf |    Bin 0 -> 2452 bytes
+ ...oboto-Regular.abc.gids.retain-all-codepoint.ttx |   1407 -
+ .../Roboto-Regular.abc.glyph-names.61,62,63.ttf    |    Bin 0 -> 2452 bytes
+ .../Roboto-Regular.abc.glyph-names.61,62,63.ttx    |   1407 -
+ .../Roboto-Regular.abc.glyph-names.61,63.ttf       |    Bin 0 -> 2260 bytes
+ .../Roboto-Regular.abc.glyph-names.61,63.ttx       |   1259 -
+ .../basics/Roboto-Regular.abc.glyph-names.61.ttf   |    Bin 0 -> 2048 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.61.ttx   |   1127 -
+ .../basics/Roboto-Regular.abc.glyph-names.62.ttf   |    Bin 0 -> 1916 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.62.ttx   |   1025 -
+ .../basics/Roboto-Regular.abc.glyph-names.63.ttf   |    Bin 0 -> 1972 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.63.ttx   |   1073 -
+ ...egular.abc.glyph-names.retain-all-codepoint.ttf |    Bin 0 -> 2452 bytes
+ ...egular.abc.glyph-names.retain-all-codepoint.ttx |   1407 -
+ ...gular.abc.keep-all-layout-features.61,62,63.ttf |    Bin 0 -> 2452 bytes
+ ...gular.abc.keep-all-layout-features.61,62,63.ttx |   1407 -
+ ...-Regular.abc.keep-all-layout-features.61,63.ttf |    Bin 0 -> 2260 bytes
+ ...-Regular.abc.keep-all-layout-features.61,63.ttx |   1259 -
+ ...oto-Regular.abc.keep-all-layout-features.61.ttf |    Bin 0 -> 2048 bytes
+ ...oto-Regular.abc.keep-all-layout-features.61.ttx |   1127 -
+ ...oto-Regular.abc.keep-all-layout-features.62.ttf |    Bin 0 -> 1916 bytes
+ ...oto-Regular.abc.keep-all-layout-features.62.ttx |   1025 -
+ ...oto-Regular.abc.keep-all-layout-features.63.ttf |    Bin 0 -> 1972 bytes
+ ...oto-Regular.abc.keep-all-layout-features.63.ttx |   1073 -
+ ...ep-all-layout-features.retain-all-codepoint.ttf |    Bin 0 -> 2452 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttx |   1407 -
+ ...Roboto-Regular.abc.layout-features.61,62,63.ttf |    Bin 0 -> 2452 bytes
+ ...Roboto-Regular.abc.layout-features.61,62,63.ttx |   1407 -
+ .../Roboto-Regular.abc.layout-features.61,63.ttf   |    Bin 0 -> 2260 bytes
+ .../Roboto-Regular.abc.layout-features.61,63.ttx   |   1259 -
+ .../Roboto-Regular.abc.layout-features.61.ttf      |    Bin 0 -> 2048 bytes
+ .../Roboto-Regular.abc.layout-features.61.ttx      |   1127 -
+ .../Roboto-Regular.abc.layout-features.62.ttf      |    Bin 0 -> 1916 bytes
+ .../Roboto-Regular.abc.layout-features.62.ttx      |   1025 -
+ .../Roboto-Regular.abc.layout-features.63.ttf      |    Bin 0 -> 1972 bytes
+ .../Roboto-Regular.abc.layout-features.63.ttx      |   1073 -
+ ...ar.abc.layout-features.retain-all-codepoint.ttf |    Bin 0 -> 2452 bytes
+ ...ar.abc.layout-features.retain-all-codepoint.ttx |   1407 -
+ .../Roboto-Regular.abc.name-ids.61,62,63.ttf       |    Bin 0 -> 2452 bytes
+ .../Roboto-Regular.abc.name-ids.61,62,63.ttx       |   1407 -
+ .../basics/Roboto-Regular.abc.name-ids.61,63.ttf   |    Bin 0 -> 2260 bytes
+ .../basics/Roboto-Regular.abc.name-ids.61,63.ttx   |   1259 -
+ .../basics/Roboto-Regular.abc.name-ids.61.ttf      |    Bin 0 -> 2048 bytes
+ .../basics/Roboto-Regular.abc.name-ids.61.ttx      |   1127 -
+ .../basics/Roboto-Regular.abc.name-ids.62.ttf      |    Bin 0 -> 1916 bytes
+ .../basics/Roboto-Regular.abc.name-ids.62.ttx      |   1025 -
+ .../basics/Roboto-Regular.abc.name-ids.63.ttf      |    Bin 0 -> 1972 bytes
+ .../basics/Roboto-Regular.abc.name-ids.63.ttx      |   1073 -
+ ...o-Regular.abc.name-ids.retain-all-codepoint.ttf |    Bin 0 -> 2452 bytes
+ ...o-Regular.abc.name-ids.retain-all-codepoint.ttx |   1407 -
+ .../Roboto-Regular.abc.name-languages.61,62,63.ttf |    Bin 0 -> 2452 bytes
+ .../Roboto-Regular.abc.name-languages.61,62,63.ttx |   1407 -
+ .../Roboto-Regular.abc.name-languages.61,63.ttf    |    Bin 0 -> 2260 bytes
+ .../Roboto-Regular.abc.name-languages.61,63.ttx    |   1259 -
+ .../Roboto-Regular.abc.name-languages.61.ttf       |    Bin 0 -> 2048 bytes
+ .../Roboto-Regular.abc.name-languages.61.ttx       |   1127 -
+ .../Roboto-Regular.abc.name-languages.62.ttf       |    Bin 0 -> 1916 bytes
+ .../Roboto-Regular.abc.name-languages.62.ttx       |   1025 -
+ .../Roboto-Regular.abc.name-languages.63.ttf       |    Bin 0 -> 1972 bytes
+ .../Roboto-Regular.abc.name-languages.63.ttx       |   1073 -
+ ...lar.abc.name-languages.retain-all-codepoint.ttf |    Bin 0 -> 2452 bytes
+ ...lar.abc.name-languages.retain-all-codepoint.ttx |   1407 -
+ .../Roboto-Regular.abc.name-legacy.61,62,63.ttf    |    Bin 0 -> 2452 bytes
+ .../Roboto-Regular.abc.name-legacy.61,62,63.ttx    |   1407 -
+ .../Roboto-Regular.abc.name-legacy.61,63.ttf       |    Bin 0 -> 2260 bytes
+ .../Roboto-Regular.abc.name-legacy.61,63.ttx       |   1259 -
+ .../basics/Roboto-Regular.abc.name-legacy.61.ttf   |    Bin 0 -> 2048 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.61.ttx   |   1127 -
+ .../basics/Roboto-Regular.abc.name-legacy.62.ttf   |    Bin 0 -> 1916 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.62.ttx   |   1025 -
+ .../basics/Roboto-Regular.abc.name-legacy.63.ttf   |    Bin 0 -> 1972 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.63.ttx   |   1073 -
+ ...egular.abc.name-legacy.retain-all-codepoint.ttf |    Bin 0 -> 2452 bytes
+ ...egular.abc.name-legacy.retain-all-codepoint.ttx |   1407 -
+ ...egular.abc.no-prune-unicode-ranges.61,62,63.ttf |    Bin 0 -> 2452 bytes
+ ...egular.abc.no-prune-unicode-ranges.61,62,63.ttx |   1407 -
+ ...o-Regular.abc.no-prune-unicode-ranges.61,63.ttf |    Bin 0 -> 2260 bytes
+ ...o-Regular.abc.no-prune-unicode-ranges.61,63.ttx |   1259 -
+ ...boto-Regular.abc.no-prune-unicode-ranges.61.ttf |    Bin 0 -> 2048 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.61.ttx |   1127 -
+ ...boto-Regular.abc.no-prune-unicode-ranges.62.ttf |    Bin 0 -> 1916 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.62.ttx |   1025 -
+ ...boto-Regular.abc.no-prune-unicode-ranges.63.ttf |    Bin 0 -> 1972 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.63.ttx |   1073 -
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf |    Bin 0 -> 2452 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttx |   1407 -
+ .../Roboto-Regular.abc.notdef-outline.61,62,63.ttf |    Bin 0 -> 2452 bytes
+ .../Roboto-Regular.abc.notdef-outline.61,62,63.ttx |   1407 -
+ .../Roboto-Regular.abc.notdef-outline.61,63.ttf    |    Bin 0 -> 2260 bytes
+ .../Roboto-Regular.abc.notdef-outline.61,63.ttx    |   1259 -
+ .../Roboto-Regular.abc.notdef-outline.61.ttf       |    Bin 0 -> 2048 bytes
+ .../Roboto-Regular.abc.notdef-outline.61.ttx       |   1127 -
+ .../Roboto-Regular.abc.notdef-outline.62.ttf       |    Bin 0 -> 1916 bytes
+ .../Roboto-Regular.abc.notdef-outline.62.ttx       |   1025 -
+ .../Roboto-Regular.abc.notdef-outline.63.ttf       |    Bin 0 -> 1972 bytes
+ .../Roboto-Regular.abc.notdef-outline.63.ttx       |   1073 -
+ ...lar.abc.notdef-outline.retain-all-codepoint.ttf |    Bin 0 -> 2452 bytes
+ ...lar.abc.notdef-outline.retain-all-codepoint.ttx |   1407 -
+ .../Roboto-Regular.abc.retain-gids.61,62,63.ttf    |    Bin 0 -> 2452 bytes
+ .../Roboto-Regular.abc.retain-gids.61,62,63.ttx    |   1407 -
+ .../Roboto-Regular.abc.retain-gids.61,63.ttf       |    Bin 0 -> 2276 bytes
+ .../Roboto-Regular.abc.retain-gids.61,63.ttx       |   1264 -
+ .../basics/Roboto-Regular.abc.retain-gids.61.ttf   |    Bin 0 -> 2048 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.61.ttx   |   1127 -
+ .../basics/Roboto-Regular.abc.retain-gids.62.ttf   |    Bin 0 -> 1924 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.62.ttx   |   1030 -
+ .../basics/Roboto-Regular.abc.retain-gids.63.ttf   |    Bin 0 -> 1988 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.63.ttx   |   1083 -
+ ...egular.abc.retain-gids.retain-all-codepoint.ttf |    Bin 0 -> 2452 bytes
+ ...egular.abc.retain-gids.retain-all-codepoint.ttx |   1407 -
+ .../cbdt/NotoColorEmoji.subset.default.2049.ttf    |    Bin 0 -> 3112 bytes
+ .../cbdt/NotoColorEmoji.subset.default.2049.ttx    |    397 -
+ .../cbdt/NotoColorEmoji.subset.default.38,2049.ttf |    Bin 0 -> 4084 bytes
+ .../cbdt/NotoColorEmoji.subset.default.38,2049.ttx |    474 -
+ .../cbdt/NotoColorEmoji.subset.default.38,20E3.ttf |    Bin 0 -> 3568 bytes
+ .../cbdt/NotoColorEmoji.subset.default.38,20E3.ttx |    441 -
+ ...rEmoji.subset.default.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 10124 bytes
+ ...rEmoji.subset.default.38,39,AE,2049,38,20E3.ttx |    898 -
+ .../NotoColorEmoji.subset.default.38,AE,2049.ttf   |    Bin 0 -> 7544 bytes
+ .../NotoColorEmoji.subset.default.38,AE,2049.ttx   |    705 -
+ .../cbdt/NotoColorEmoji.subset.default.39.ttf      |    Bin 0 -> 1920 bytes
+ .../cbdt/NotoColorEmoji.subset.default.39.ttx      |    323 -
+ .../cbdt/NotoColorEmoji.subset.default.AE.ttf      |    Bin 0 -> 4412 bytes
+ .../cbdt/NotoColorEmoji.subset.default.AE.ttx      |    478 -
+ ...lorEmoji.subset.drop-hints-retain-gids.2049.ttf |    Bin 0 -> 3136 bytes
+ ...lorEmoji.subset.drop-hints-retain-gids.2049.ttx |    406 -
+ ...Emoji.subset.drop-hints-retain-gids.38,2049.ttf |    Bin 0 -> 4108 bytes
+ ...Emoji.subset.drop-hints-retain-gids.38,2049.ttx |    480 -
+ ...Emoji.subset.drop-hints-retain-gids.38,20E3.ttf |    Bin 0 -> 3600 bytes
+ ...Emoji.subset.drop-hints-retain-gids.38,20E3.ttx |    450 -
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 10124 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttx |    898 -
+ ...ji.subset.drop-hints-retain-gids.38,AE,2049.ttf |    Bin 0 -> 7564 bytes
+ ...ji.subset.drop-hints-retain-gids.38,AE,2049.ttx |    708 -
+ ...ColorEmoji.subset.drop-hints-retain-gids.39.ttf |    Bin 0 -> 1928 bytes
+ ...ColorEmoji.subset.drop-hints-retain-gids.39.ttx |    326 -
+ ...ColorEmoji.subset.drop-hints-retain-gids.AE.ttf |    Bin 0 -> 4428 bytes
+ ...ColorEmoji.subset.drop-hints-retain-gids.AE.ttx |    484 -
+ .../cbdt/NotoColorEmoji.subset.drop-hints.2049.ttf |    Bin 0 -> 3112 bytes
+ .../cbdt/NotoColorEmoji.subset.drop-hints.2049.ttx |    397 -
+ .../NotoColorEmoji.subset.drop-hints.38,2049.ttf   |    Bin 0 -> 4084 bytes
+ .../NotoColorEmoji.subset.drop-hints.38,2049.ttx   |    474 -
+ .../NotoColorEmoji.subset.drop-hints.38,20E3.ttf   |    Bin 0 -> 3568 bytes
+ .../NotoColorEmoji.subset.drop-hints.38,20E3.ttx   |    441 -
+ ...oji.subset.drop-hints.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 10124 bytes
+ ...oji.subset.drop-hints.38,39,AE,2049,38,20E3.ttx |    898 -
+ ...NotoColorEmoji.subset.drop-hints.38,AE,2049.ttf |    Bin 0 -> 7544 bytes
+ ...NotoColorEmoji.subset.drop-hints.38,AE,2049.ttx |    705 -
+ .../cbdt/NotoColorEmoji.subset.drop-hints.39.ttf   |    Bin 0 -> 1920 bytes
+ .../cbdt/NotoColorEmoji.subset.drop-hints.39.ttx   |    323 -
+ .../cbdt/NotoColorEmoji.subset.drop-hints.AE.ttf   |    Bin 0 -> 4412 bytes
+ .../cbdt/NotoColorEmoji.subset.drop-hints.AE.ttx   |    478 -
+ .../NotoColorEmoji.subset.gap.default.2049.ttf     |    Bin 0 -> 3112 bytes
+ .../NotoColorEmoji.subset.gap.default.2049.ttx     |    397 -
+ .../NotoColorEmoji.subset.gap.default.38,2049.ttf  |    Bin 0 -> 4084 bytes
+ .../NotoColorEmoji.subset.gap.default.38,2049.ttx  |    474 -
+ .../NotoColorEmoji.subset.gap.default.38,20E3.ttf  |    Bin 0 -> 3568 bytes
+ .../NotoColorEmoji.subset.gap.default.38,20E3.ttx  |    441 -
+ ...ji.subset.gap.default.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 9188 bytes
+ ...ji.subset.gap.default.38,39,AE,2049,38,20E3.ttx |    827 -
+ ...otoColorEmoji.subset.gap.default.38,AE,2049.ttf |    Bin 0 -> 7544 bytes
+ ...otoColorEmoji.subset.gap.default.38,AE,2049.ttx |    705 -
+ .../cbdt/NotoColorEmoji.subset.gap.default.39.ttf  |    Bin 0 -> 908 bytes
+ .../cbdt/NotoColorEmoji.subset.gap.default.39.ttx  |    207 -
+ .../cbdt/NotoColorEmoji.subset.gap.default.AE.ttf  |    Bin 0 -> 4412 bytes
+ .../cbdt/NotoColorEmoji.subset.gap.default.AE.ttx  |    478 -
+ ...moji.subset.gap.drop-hints-retain-gids.2049.ttf |    Bin 0 -> 3136 bytes
+ ...moji.subset.gap.drop-hints-retain-gids.2049.ttx |    406 -
+ ...i.subset.gap.drop-hints-retain-gids.38,2049.ttf |    Bin 0 -> 4108 bytes
+ ...i.subset.gap.drop-hints-retain-gids.38,2049.ttx |    480 -
+ ...i.subset.gap.drop-hints-retain-gids.38,20E3.ttf |    Bin 0 -> 3600 bytes
+ ...i.subset.gap.drop-hints-retain-gids.38,20E3.ttx |    450 -
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 9188 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttx |    827 -
+ ...ubset.gap.drop-hints-retain-gids.38,AE,2049.ttf |    Bin 0 -> 7564 bytes
+ ...ubset.gap.drop-hints-retain-gids.38,AE,2049.ttx |    708 -
+ ...rEmoji.subset.gap.drop-hints-retain-gids.39.ttf |    Bin 0 -> 916 bytes
+ ...rEmoji.subset.gap.drop-hints-retain-gids.39.ttx |    210 -
+ ...rEmoji.subset.gap.drop-hints-retain-gids.AE.ttf |    Bin 0 -> 4428 bytes
+ ...rEmoji.subset.gap.drop-hints-retain-gids.AE.ttx |    484 -
+ .../NotoColorEmoji.subset.gap.drop-hints.2049.ttf  |    Bin 0 -> 3112 bytes
+ .../NotoColorEmoji.subset.gap.drop-hints.2049.ttx  |    397 -
+ ...otoColorEmoji.subset.gap.drop-hints.38,2049.ttf |    Bin 0 -> 4084 bytes
+ ...otoColorEmoji.subset.gap.drop-hints.38,2049.ttx |    474 -
+ ...otoColorEmoji.subset.gap.drop-hints.38,20E3.ttf |    Bin 0 -> 3568 bytes
+ ...otoColorEmoji.subset.gap.drop-hints.38,20E3.ttx |    441 -
+ ...subset.gap.drop-hints.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 9188 bytes
+ ...subset.gap.drop-hints.38,39,AE,2049,38,20E3.ttx |    827 -
+ ...ColorEmoji.subset.gap.drop-hints.38,AE,2049.ttf |    Bin 0 -> 7544 bytes
+ ...ColorEmoji.subset.gap.drop-hints.38,AE,2049.ttx |    705 -
+ .../NotoColorEmoji.subset.gap.drop-hints.39.ttf    |    Bin 0 -> 908 bytes
+ .../NotoColorEmoji.subset.gap.drop-hints.39.ttx    |    207 -
+ .../NotoColorEmoji.subset.gap.drop-hints.AE.ttf    |    Bin 0 -> 4412 bytes
+ .../NotoColorEmoji.subset.gap.drop-hints.AE.ttx    |    478 -
+ .../NotoColorEmoji.subset.gap.retain-gids.2049.ttf |    Bin 0 -> 3136 bytes
+ .../NotoColorEmoji.subset.gap.retain-gids.2049.ttx |    406 -
+ ...toColorEmoji.subset.gap.retain-gids.38,2049.ttf |    Bin 0 -> 4108 bytes
+ ...toColorEmoji.subset.gap.retain-gids.38,2049.ttx |    480 -
+ ...toColorEmoji.subset.gap.retain-gids.38,20E3.ttf |    Bin 0 -> 3600 bytes
+ ...toColorEmoji.subset.gap.retain-gids.38,20E3.ttx |    450 -
+ ...ubset.gap.retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 9188 bytes
+ ...ubset.gap.retain-gids.38,39,AE,2049,38,20E3.ttx |    827 -
+ ...olorEmoji.subset.gap.retain-gids.38,AE,2049.ttf |    Bin 0 -> 7564 bytes
+ ...olorEmoji.subset.gap.retain-gids.38,AE,2049.ttx |    708 -
+ .../NotoColorEmoji.subset.gap.retain-gids.39.ttf   |    Bin 0 -> 916 bytes
+ .../NotoColorEmoji.subset.gap.retain-gids.39.ttx   |    210 -
+ .../NotoColorEmoji.subset.gap.retain-gids.AE.ttf   |    Bin 0 -> 4428 bytes
+ .../NotoColorEmoji.subset.gap.retain-gids.AE.ttx   |    484 -
+ ...olorEmoji.subset.index_format3.default.2049.ttf |    Bin 0 -> 3108 bytes
+ ...olorEmoji.subset.index_format3.default.2049.ttx |    397 -
+ ...rEmoji.subset.index_format3.default.38,2049.ttf |    Bin 0 -> 4076 bytes
+ ...rEmoji.subset.index_format3.default.38,2049.ttx |    474 -
+ ...rEmoji.subset.index_format3.default.38,20E3.ttf |    Bin 0 -> 3560 bytes
+ ...rEmoji.subset.index_format3.default.38,20E3.ttx |    441 -
+ ...index_format3.default.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 10112 bytes
+ ...index_format3.default.38,39,AE,2049,38,20E3.ttx |    898 -
+ ...oji.subset.index_format3.default.38,AE,2049.ttf |    Bin 0 -> 7536 bytes
+ ...oji.subset.index_format3.default.38,AE,2049.ttx |    705 -
+ ...oColorEmoji.subset.index_format3.default.39.ttf |    Bin 0 -> 1916 bytes
+ ...oColorEmoji.subset.index_format3.default.39.ttx |    323 -
+ ...oColorEmoji.subset.index_format3.default.AE.ttf |    Bin 0 -> 4408 bytes
+ ...oColorEmoji.subset.index_format3.default.AE.ttx |    478 -
+ ...t.index_format3.drop-hints-retain-gids.2049.ttf |    Bin 0 -> 3132 bytes
+ ...t.index_format3.drop-hints-retain-gids.2049.ttx |    406 -
+ ...ndex_format3.drop-hints-retain-gids.38,2049.ttf |    Bin 0 -> 4100 bytes
+ ...ndex_format3.drop-hints-retain-gids.38,2049.ttx |    480 -
+ ...ndex_format3.drop-hints-retain-gids.38,20E3.ttf |    Bin 0 -> 3592 bytes
+ ...ndex_format3.drop-hints-retain-gids.38,20E3.ttx |    450 -
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 10112 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttx |    898 -
+ ...x_format3.drop-hints-retain-gids.38,AE,2049.ttf |    Bin 0 -> 7552 bytes
+ ...x_format3.drop-hints-retain-gids.38,AE,2049.ttx |    708 -
+ ...set.index_format3.drop-hints-retain-gids.39.ttf |    Bin 0 -> 1924 bytes
+ ...set.index_format3.drop-hints-retain-gids.39.ttx |    326 -
+ ...set.index_format3.drop-hints-retain-gids.AE.ttf |    Bin 0 -> 4424 bytes
+ ...set.index_format3.drop-hints-retain-gids.AE.ttx |    484 -
+ ...rEmoji.subset.index_format3.drop-hints.2049.ttf |    Bin 0 -> 3108 bytes
+ ...rEmoji.subset.index_format3.drop-hints.2049.ttx |    397 -
+ ...oji.subset.index_format3.drop-hints.38,2049.ttf |    Bin 0 -> 4076 bytes
+ ...oji.subset.index_format3.drop-hints.38,2049.ttx |    474 -
+ ...oji.subset.index_format3.drop-hints.38,20E3.ttf |    Bin 0 -> 3560 bytes
+ ...oji.subset.index_format3.drop-hints.38,20E3.ttx |    441 -
+ ...ex_format3.drop-hints.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 10112 bytes
+ ...ex_format3.drop-hints.38,39,AE,2049,38,20E3.ttx |    898 -
+ ....subset.index_format3.drop-hints.38,AE,2049.ttf |    Bin 0 -> 7536 bytes
+ ....subset.index_format3.drop-hints.38,AE,2049.ttx |    705 -
+ ...lorEmoji.subset.index_format3.drop-hints.39.ttf |    Bin 0 -> 1916 bytes
+ ...lorEmoji.subset.index_format3.drop-hints.39.ttx |    323 -
+ ...lorEmoji.subset.index_format3.drop-hints.AE.ttf |    Bin 0 -> 4408 bytes
+ ...lorEmoji.subset.index_format3.drop-hints.AE.ttx |    478 -
+ ...Emoji.subset.index_format3.retain-gids.2049.ttf |    Bin 0 -> 3132 bytes
+ ...Emoji.subset.index_format3.retain-gids.2049.ttx |    406 -
+ ...ji.subset.index_format3.retain-gids.38,2049.ttf |    Bin 0 -> 4100 bytes
+ ...ji.subset.index_format3.retain-gids.38,2049.ttx |    480 -
+ ...ji.subset.index_format3.retain-gids.38,20E3.ttf |    Bin 0 -> 3592 bytes
+ ...ji.subset.index_format3.retain-gids.38,20E3.ttx |    450 -
+ ...x_format3.retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 10112 bytes
+ ...x_format3.retain-gids.38,39,AE,2049,38,20E3.ttx |    898 -
+ ...subset.index_format3.retain-gids.38,AE,2049.ttf |    Bin 0 -> 7552 bytes
+ ...subset.index_format3.retain-gids.38,AE,2049.ttx |    708 -
+ ...orEmoji.subset.index_format3.retain-gids.39.ttf |    Bin 0 -> 1924 bytes
+ ...orEmoji.subset.index_format3.retain-gids.39.ttx |    326 -
+ ...orEmoji.subset.index_format3.retain-gids.AE.ttf |    Bin 0 -> 4424 bytes
+ ...orEmoji.subset.index_format3.retain-gids.AE.ttx |    484 -
+ ...ji.subset.multiple_size_tables.default.2049.ttf |    Bin 0 -> 5312 bytes
+ ...ji.subset.multiple_size_tables.default.2049.ttx |    587 -
+ ...subset.multiple_size_tables.default.38,2049.ttf |    Bin 0 -> 7244 bytes
+ ...subset.multiple_size_tables.default.38,2049.ttx |    736 -
+ ...subset.multiple_size_tables.default.38,20E3.ttf |    Bin 0 -> 6212 bytes
+ ...subset.multiple_size_tables.default.38,20E3.ttx |    671 -
+ ...e_size_tables.default.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 19280 bytes
+ ...e_size_tables.default.38,39,AE,2049,38,20E3.ttx |   1570 -
+ ...set.multiple_size_tables.default.38,AE,2049.ttf |    Bin 0 -> 14140 bytes
+ ...set.multiple_size_tables.default.38,AE,2049.ttx |   1193 -
+ ...moji.subset.multiple_size_tables.default.39.ttf |    Bin 0 -> 2928 bytes
+ ...moji.subset.multiple_size_tables.default.39.ttx |    439 -
+ ...moji.subset.multiple_size_tables.default.AE.ttf |    Bin 0 -> 7916 bytes
+ ...moji.subset.multiple_size_tables.default.AE.ttx |    749 -
+ ...ple_size_tables.drop-hints-retain-gids.2049.ttf |    Bin 0 -> 5336 bytes
+ ...ple_size_tables.drop-hints-retain-gids.2049.ttx |    596 -
+ ..._size_tables.drop-hints-retain-gids.38,2049.ttf |    Bin 0 -> 7268 bytes
+ ..._size_tables.drop-hints-retain-gids.38,2049.ttx |    742 -
+ ..._size_tables.drop-hints-retain-gids.38,20E3.ttf |    Bin 0 -> 6244 bytes
+ ..._size_tables.drop-hints-retain-gids.38,20E3.ttx |    680 -
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 19280 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttx |   1570 -
+ ...ze_tables.drop-hints-retain-gids.38,AE,2049.ttf |    Bin 0 -> 14164 bytes
+ ...ze_tables.drop-hints-retain-gids.38,AE,2049.ttx |   1196 -
+ ...tiple_size_tables.drop-hints-retain-gids.39.ttf |    Bin 0 -> 2936 bytes
+ ...tiple_size_tables.drop-hints-retain-gids.39.ttx |    442 -
+ ...tiple_size_tables.drop-hints-retain-gids.AE.ttf |    Bin 0 -> 7932 bytes
+ ...tiple_size_tables.drop-hints-retain-gids.AE.ttx |    755 -
+ ...subset.multiple_size_tables.drop-hints.2049.ttf |    Bin 0 -> 5312 bytes
+ ...subset.multiple_size_tables.drop-hints.2049.ttx |    587 -
+ ...set.multiple_size_tables.drop-hints.38,2049.ttf |    Bin 0 -> 7244 bytes
+ ...set.multiple_size_tables.drop-hints.38,2049.ttx |    736 -
+ ...set.multiple_size_tables.drop-hints.38,20E3.ttf |    Bin 0 -> 6212 bytes
+ ...set.multiple_size_tables.drop-hints.38,20E3.ttx |    671 -
+ ...ize_tables.drop-hints.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 19280 bytes
+ ...ize_tables.drop-hints.38,39,AE,2049,38,20E3.ttx |   1570 -
+ ....multiple_size_tables.drop-hints.38,AE,2049.ttf |    Bin 0 -> 14140 bytes
+ ....multiple_size_tables.drop-hints.38,AE,2049.ttx |   1193 -
+ ...i.subset.multiple_size_tables.drop-hints.39.ttf |    Bin 0 -> 2928 bytes
+ ...i.subset.multiple_size_tables.drop-hints.39.ttx |    439 -
+ ...i.subset.multiple_size_tables.drop-hints.AE.ttf |    Bin 0 -> 7916 bytes
+ ...i.subset.multiple_size_tables.drop-hints.AE.ttx |    749 -
+ ...ubset.multiple_size_tables.retain-gids.2049.ttf |    Bin 0 -> 5336 bytes
+ ...ubset.multiple_size_tables.retain-gids.2049.ttx |    596 -
+ ...et.multiple_size_tables.retain-gids.38,2049.ttf |    Bin 0 -> 7268 bytes
+ ...et.multiple_size_tables.retain-gids.38,2049.ttx |    742 -
+ ...et.multiple_size_tables.retain-gids.38,20E3.ttf |    Bin 0 -> 6244 bytes
+ ...et.multiple_size_tables.retain-gids.38,20E3.ttx |    680 -
+ ...ze_tables.retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 19280 bytes
+ ...ze_tables.retain-gids.38,39,AE,2049,38,20E3.ttx |   1570 -
+ ...multiple_size_tables.retain-gids.38,AE,2049.ttf |    Bin 0 -> 14164 bytes
+ ...multiple_size_tables.retain-gids.38,AE,2049.ttx |   1196 -
+ ....subset.multiple_size_tables.retain-gids.39.ttf |    Bin 0 -> 2936 bytes
+ ....subset.multiple_size_tables.retain-gids.39.ttx |    442 -
+ ....subset.multiple_size_tables.retain-gids.AE.ttf |    Bin 0 -> 7932 bytes
+ ....subset.multiple_size_tables.retain-gids.AE.ttx |    755 -
+ .../NotoColorEmoji.subset.retain-gids.2049.ttf     |    Bin 0 -> 3136 bytes
+ .../NotoColorEmoji.subset.retain-gids.2049.ttx     |    406 -
+ .../NotoColorEmoji.subset.retain-gids.38,2049.ttf  |    Bin 0 -> 4108 bytes
+ .../NotoColorEmoji.subset.retain-gids.38,2049.ttx  |    480 -
+ .../NotoColorEmoji.subset.retain-gids.38,20E3.ttf  |    Bin 0 -> 3600 bytes
+ .../NotoColorEmoji.subset.retain-gids.38,20E3.ttx  |    450 -
+ ...ji.subset.retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 0 -> 10124 bytes
+ ...ji.subset.retain-gids.38,39,AE,2049,38,20E3.ttx |    898 -
+ ...otoColorEmoji.subset.retain-gids.38,AE,2049.ttf |    Bin 0 -> 7564 bytes
+ ...otoColorEmoji.subset.retain-gids.38,AE,2049.ttx |    708 -
+ .../cbdt/NotoColorEmoji.subset.retain-gids.39.ttf  |    Bin 0 -> 1928 bytes
+ .../cbdt/NotoColorEmoji.subset.retain-gids.39.ttx  |    326 -
+ .../cbdt/NotoColorEmoji.subset.retain-gids.AE.ttf  |    Bin 0 -> 4428 bytes
+ .../cbdt/NotoColorEmoji.subset.retain-gids.AE.ttx  |    484 -
+ ...eSansPro-Regular.default.1FC,21,41,20,62,63.otf |    Bin 0 -> 2580 bytes
+ ...eSansPro-Regular.default.1FC,21,41,20,62,63.ttx |    738 -
+ .../SourceSansPro-Regular.default.61,62,63.otf     |    Bin 0 -> 2216 bytes
+ .../SourceSansPro-Regular.default.61,62,63.ttx     |    587 -
+ ...ourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf |    Bin 0 -> 2328 bytes
+ ...ourceSansPro-Regular.default.D7,D8,D9,DA,DE.ttx |    578 -
+ ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf |    Bin 0 -> 20232 bytes
+ ...subroutinize-retain-gids.1FC,21,41,20,62,63.ttx |   6312 -
+ ...Regular.desubroutinize-retain-gids.61,62,63.otf |    Bin 0 -> 2316 bytes
+ ...Regular.desubroutinize-retain-gids.61,62,63.ttx |    627 -
+ ...r.desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf |    Bin 0 -> 30540 bytes
+ ...r.desubroutinize-retain-gids.D7,D8,D9,DA,DE.ttx |   9248 --
+ ...o-Regular.desubroutinize.1FC,21,41,20,62,63.otf |    Bin 0 -> 2436 bytes
+ ...o-Regular.desubroutinize.1FC,21,41,20,62,63.ttx |    612 -
+ ...urceSansPro-Regular.desubroutinize.61,62,63.otf |    Bin 0 -> 2120 bytes
+ ...urceSansPro-Regular.desubroutinize.61,62,63.ttx |    492 -
+ ...nsPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf |    Bin 0 -> 2312 bytes
+ ...nsPro-Regular.desubroutinize.D7,D8,D9,DA,DE.ttx |    523 -
+ ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf |    Bin 0 -> 20064 bytes
+ ...subroutinize-retain-gids.1FC,21,41,20,62,63.ttx |   6281 -
+ ...p-hints-desubroutinize-retain-gids.61,62,63.otf |    Bin 0 -> 2192 bytes
+ ...p-hints-desubroutinize-retain-gids.61,62,63.ttx |    607 -
+ ...s-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf |    Bin 0 -> 30372 bytes
+ ...s-desubroutinize-retain-gids.D7,D8,D9,DA,DE.ttx |   9215 --
+ ...rop-hints-desubroutinize.1FC,21,41,20,62,63.otf |    Bin 0 -> 2268 bytes
+ ...rop-hints-desubroutinize.1FC,21,41,20,62,63.ttx |    581 -
+ ...-Regular.drop-hints-desubroutinize.61,62,63.otf |    Bin 0 -> 1996 bytes
+ ...-Regular.drop-hints-desubroutinize.61,62,63.ttx |    472 -
+ ...ar.drop-hints-desubroutinize.D7,D8,D9,DA,DE.otf |    Bin 0 -> 2148 bytes
+ ...ar.drop-hints-desubroutinize.D7,D8,D9,DA,DE.ttx |    490 -
+ ...r.drop-hints-retain-gids.1FC,21,41,20,62,63.otf |    Bin 0 -> 20156 bytes
+ ...r.drop-hints-retain-gids.1FC,21,41,20,62,63.ttx |   6367 -
+ ...Pro-Regular.drop-hints-retain-gids.61,62,63.otf |    Bin 0 -> 2228 bytes
+ ...Pro-Regular.drop-hints-retain-gids.61,62,63.ttx |    670 -
+ ...gular.drop-hints-retain-gids.D7,D8,D9,DA,DE.otf |    Bin 0 -> 30384 bytes
+ ...gular.drop-hints-retain-gids.D7,D8,D9,DA,DE.ttx |   9259 --
+ ...nsPro-Regular.drop-hints.1FC,21,41,20,62,63.otf |    Bin 0 -> 2352 bytes
+ ...nsPro-Regular.drop-hints.1FC,21,41,20,62,63.ttx |    667 -
+ .../SourceSansPro-Regular.drop-hints.61,62,63.otf  |    Bin 0 -> 2060 bytes
+ .../SourceSansPro-Regular.drop-hints.61,62,63.ttx  |    535 -
+ ...ceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf |    Bin 0 -> 2164 bytes
+ ...ceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.ttx |    534 -
+ ...sPro-Regular.retain-gids.1FC,21,41,20,62,63.otf |    Bin 0 -> 20384 bytes
+ ...sPro-Regular.retain-gids.1FC,21,41,20,62,63.ttx |   6438 -
+ .../SourceSansPro-Regular.retain-gids.61,62,63.otf |    Bin 0 -> 2384 bytes
+ .../SourceSansPro-Regular.retain-gids.61,62,63.ttx |    722 -
+ ...eSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.otf |    Bin 0 -> 30556 bytes
+ ...eSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.ttx |   9303 --
+ ...ubset.default.3042,3044,3046,3048,304A,304B.otf |    Bin 0 -> 4884 bytes
+ ...ubset.default.3042,3044,3046,3048,304A,304B.ttx |   1165 -
+ ...ubset.default.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 0 -> 6276 bytes
+ ...ubset.default.3042,3044,3046,73E0,5EA6,8F38.ttx |   1708 -
+ ...eHanSans-Regular_subset.default.61,63,65,6B.otf |    Bin 0 -> 2588 bytes
+ ...eHanSans-Regular_subset.default.61,63,65,6B.ttx |    688 -
+ ...ubset.default.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 0 -> 6736 bytes
+ ...ubset.default.660E,6975,73E0,5EA6,8F38,6E05.ttx |   1585 -
+ .../SourceHanSans-Regular_subset.default.660E.otf  |    Bin 0 -> 2456 bytes
+ .../SourceHanSans-Regular_subset.default.660E.ttx  |    577 -
+ ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf |    Bin 0 -> 129876 bytes
+ ...e-retain-gids.3042,3044,3046,3048,304A,304B.ttx |  62430 --------
+ ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 0 -> 130920 bytes
+ ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.ttx |  62745 --------
+ ...bset.desubroutinize-retain-gids.61,63,65,6B.otf |    Bin 0 -> 3412 bytes
+ ...bset.desubroutinize-retain-gids.61,63,65,6B.ttx |   1081 -
+ ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 0 -> 122048 bytes
+ ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.ttx |  57783 --------
+ ...ular_subset.desubroutinize-retain-gids.660E.otf |    Bin 0 -> 50760 bytes
+ ...ular_subset.desubroutinize-retain-gids.660E.ttx |  24455 ----
+ ...esubroutinize.3042,3044,3046,3048,304A,304B.otf |    Bin 0 -> 4724 bytes
+ ...esubroutinize.3042,3044,3046,3048,304A,304B.ttx |   1044 -
+ ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 0 -> 5928 bytes
+ ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.ttx |   1414 -
+ ...s-Regular_subset.desubroutinize.61,63,65,6B.otf |    Bin 0 -> 2520 bytes
+ ...s-Regular_subset.desubroutinize.61,63,65,6B.ttx |    630 -
+ ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 0 -> 6232 bytes
+ ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.ttx |   1152 -
+ ...eHanSans-Regular_subset.desubroutinize.660E.otf |    Bin 0 -> 2440 bytes
+ ...eHanSans-Regular_subset.desubroutinize.660E.ttx |    560 -
+ ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf |    Bin 0 -> 129448 bytes
+ ...e-retain-gids.3042,3044,3046,3048,304A,304B.ttx |  62346 --------
+ ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 0 -> 130312 bytes
+ ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.ttx |  62647 --------
+ ...ints-desubroutinize-retain-gids.61,63,65,6B.otf |    Bin 0 -> 3288 bytes
+ ...ints-desubroutinize-retain-gids.61,63,65,6B.ttx |   1055 -
+ ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 0 -> 121284 bytes
+ ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.ttx |  57675 --------
+ ....drop-hints-desubroutinize-retain-gids.660E.otf |    Bin 0 -> 50540 bytes
+ ....drop-hints-desubroutinize-retain-gids.660E.ttx |  24416 ----
+ ...esubroutinize.3042,3044,3046,3048,304A,304B.otf |    Bin 0 -> 4420 bytes
+ ...esubroutinize.3042,3044,3046,3048,304A,304B.ttx |    986 -
+ ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 0 -> 5416 bytes
+ ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.ttx |   1337 -
+ ...ubset.drop-hints-desubroutinize.61,63,65,6B.otf |    Bin 0 -> 2416 bytes
+ ...ubset.drop-hints-desubroutinize.61,63,65,6B.ttx |    609 -
+ ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 0 -> 5556 bytes
+ ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.ttx |   1063 -
+ ...gular_subset.drop-hints-desubroutinize.660E.otf |    Bin 0 -> 2308 bytes
+ ...gular_subset.drop-hints-desubroutinize.660E.ttx |    540 -
+ ...s-retain-gids.3042,3044,3046,3048,304A,304B.otf |    Bin 0 -> 129576 bytes
+ ...s-retain-gids.3042,3044,3046,3048,304A,304B.ttx |  62443 --------
+ ...s-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 0 -> 130604 bytes
+ ...s-retain-gids.3042,3044,3046,73E0,5EA6,8F38.ttx |  62929 ---------
+ ...r_subset.drop-hints-retain-gids.61,63,65,6B.otf |    Bin 0 -> 3248 bytes
+ ...r_subset.drop-hints-retain-gids.61,63,65,6B.ttx |   1089 -
+ ...s-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 0 -> 121776 bytes
+ ...s-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.ttx |  58100 --------
+ ...-Regular_subset.drop-hints-retain-gids.660E.otf |    Bin 0 -> 50552 bytes
+ ...-Regular_subset.drop-hints-retain-gids.660E.ttx |  24429 ----
+ ...et.drop-hints.3042,3044,3046,3048,304A,304B.otf |    Bin 0 -> 4548 bytes
+ ...et.drop-hints.3042,3044,3046,3048,304A,304B.ttx |   1083 -
+ ...et.drop-hints.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 0 -> 5708 bytes
+ ...et.drop-hints.3042,3044,3046,73E0,5EA6,8F38.ttx |   1619 -
+ ...nSans-Regular_subset.drop-hints.61,63,65,6B.otf |    Bin 0 -> 2448 bytes
+ ...nSans-Regular_subset.drop-hints.61,63,65,6B.ttx |    643 -
+ ...et.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 0 -> 6048 bytes
+ ...et.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.ttx |   1488 -
+ ...ourceHanSans-Regular_subset.drop-hints.660E.otf |    Bin 0 -> 2316 bytes
+ ...ourceHanSans-Regular_subset.drop-hints.660E.ttx |    553 -
+ ...t.retain-gids.3042,3044,3046,3048,304A,304B.otf |    Bin 0 -> 130036 bytes
+ ...t.retain-gids.3042,3044,3046,3048,304A,304B.ttx |  62551 --------
+ ...t.retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 0 -> 131272 bytes
+ ...t.retain-gids.3042,3044,3046,73E0,5EA6,8F38.ttx |  63039 ---------
+ ...Sans-Regular_subset.retain-gids.61,63,65,6B.otf |    Bin 0 -> 3408 bytes
+ ...Sans-Regular_subset.retain-gids.61,63,65,6B.ttx |   1139 -
+ ...t.retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 0 -> 122552 bytes
+ ...t.retain-gids.660E,6975,73E0,5EA6,8F38,6E05.ttx |  58216 --------
+ ...urceHanSans-Regular_subset.retain-gids.660E.otf |    Bin 0 -> 50776 bytes
+ ...urceHanSans-Regular_subset.retain-gids.660E.ttx |  24472 ----
+ ...039,1005,100A,103A,1038,1010,103D,1031,104A.otf |    Bin 0 -> 7724 bytes
+ ...039,1005,100A,103A,1038,1010,103D,1031,104A.ttx |   2971 -
+ ...otoSerifMyanmar-Regular.notdef-outline.1092.otf |    Bin 0 -> 1380 bytes
+ ...otoSerifMyanmar-Regular.notdef-outline.1092.ttx |    264 -
+ .../cmap/AdobeBlank-Regular.default.61,62.ttf      |    Bin 0 -> 1252 bytes
+ .../cmap/AdobeBlank-Regular.default.61,62.ttx      |    322 -
+ .../cmap/AdobeBlank-Regular.default.61,FEFA.ttf    |    Bin 0 -> 1264 bytes
+ .../cmap/AdobeBlank-Regular.default.61,FEFA.ttx    |    320 -
+ .../cmap/AdobeBlank-Regular.default.FEE6,FECF.ttf  |    Bin 0 -> 1216 bytes
+ .../cmap/AdobeBlank-Regular.default.FEE6,FECF.ttx  |    314 -
+ .../cmap/AdobeBlank-Regular.default.FEF9,FEFA.ttf  |    Bin 0 -> 1204 bytes
+ .../cmap/AdobeBlank-Regular.default.FEF9,FEFA.ttx  |    314 -
+ .../cmap/AdobeBlank-Regular.default.FEFA.ttf       |    Bin 0 -> 1184 bytes
+ .../cmap/AdobeBlank-Regular.default.FEFA.ttx       |    303 -
+ ...eBlank-Regular.drop-hints-retain-gids.61,62.ttf |    Bin 0 -> 1468 bytes
+ ...eBlank-Regular.drop-hints-retain-gids.61,62.ttx |    606 -
+ ...lank-Regular.drop-hints-retain-gids.61,FEFA.ttf |    Bin 0 -> 8232 bytes
+ ...lank-Regular.drop-hints-retain-gids.61,FEFA.ttx |   7356 -
+ ...nk-Regular.drop-hints-retain-gids.FEE6,FECF.ttf |    Bin 0 -> 8104 bytes
+ ...nk-Regular.drop-hints-retain-gids.FEE6,FECF.ttx |   7270 -
+ ...nk-Regular.drop-hints-retain-gids.FEF9,FEFA.ttf |    Bin 0 -> 8172 bytes
+ ...nk-Regular.drop-hints-retain-gids.FEF9,FEFA.ttx |   7350 -
+ ...beBlank-Regular.drop-hints-retain-gids.FEFA.ttf |    Bin 0 -> 8156 bytes
+ ...beBlank-Regular.drop-hints-retain-gids.FEFA.ttx |   7343 -
+ .../cmap/AdobeBlank-Regular.drop-hints.61,62.ttf   |    Bin 0 -> 1080 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.61,62.ttx   |    218 -
+ .../cmap/AdobeBlank-Regular.drop-hints.61,FEFA.ttf |    Bin 0 -> 1092 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.61,FEFA.ttx |    216 -
+ .../AdobeBlank-Regular.drop-hints.FEE6,FECF.ttf    |    Bin 0 -> 1044 bytes
+ .../AdobeBlank-Regular.drop-hints.FEE6,FECF.ttx    |    210 -
+ .../AdobeBlank-Regular.drop-hints.FEF9,FEFA.ttf    |    Bin 0 -> 1032 bytes
+ .../AdobeBlank-Regular.drop-hints.FEF9,FEFA.ttx    |    210 -
+ .../cmap/AdobeBlank-Regular.drop-hints.FEFA.ttf    |    Bin 0 -> 1012 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.FEFA.ttx    |    199 -
+ .../cmap/AdobeBlank-Regular.name-ids.61,62.ttf     |    Bin 0 -> 1000 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.61,62.ttx     |    310 -
+ .../cmap/AdobeBlank-Regular.name-ids.61,FEFA.ttf   |    Bin 0 -> 1012 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.61,FEFA.ttx   |    308 -
+ .../cmap/AdobeBlank-Regular.name-ids.FEE6,FECF.ttf |    Bin 0 -> 964 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEE6,FECF.ttx |    302 -
+ .../cmap/AdobeBlank-Regular.name-ids.FEF9,FEFA.ttf |    Bin 0 -> 952 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEF9,FEFA.ttx |    302 -
+ .../cmap/AdobeBlank-Regular.name-ids.FEFA.ttf      |    Bin 0 -> 932 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEFA.ttx      |    291 -
+ .../cmap/AdobeBlank-Regular.retain-gids.61,62.ttf  |    Bin 0 -> 1640 bytes
+ .../cmap/AdobeBlank-Regular.retain-gids.61,62.ttx  |    710 -
+ .../AdobeBlank-Regular.retain-gids.61,FEFA.ttf     |    Bin 0 -> 8404 bytes
+ .../AdobeBlank-Regular.retain-gids.61,FEFA.ttx     |   7460 -
+ .../AdobeBlank-Regular.retain-gids.FEE6,FECF.ttf   |    Bin 0 -> 8276 bytes
+ .../AdobeBlank-Regular.retain-gids.FEE6,FECF.ttx   |   7374 -
+ .../AdobeBlank-Regular.retain-gids.FEF9,FEFA.ttf   |    Bin 0 -> 8344 bytes
+ .../AdobeBlank-Regular.retain-gids.FEF9,FEFA.ttx   |   7454 -
+ .../cmap/AdobeBlank-Regular.retain-gids.FEFA.ttf   |    Bin 0 -> 8328 bytes
+ .../cmap/AdobeBlank-Regular.retain-gids.FEFA.ttx   |   7447 -
+ .../cmap14/cmap14_font1.default.4E00,4E02,4E03.otf |    Bin 0 -> 1360 bytes
+ .../cmap14/cmap14_font1.default.4E00,4E02,4E03.ttx |    276 -
+ .../cmap14/cmap14_font1.default.4E00,4E03.otf      |    Bin 0 -> 1236 bytes
+ .../cmap14/cmap14_font1.default.4E00,4E03.ttx      |    261 -
+ .../cmap14/cmap14_font1.default.4E00,4E05,4E07.otf |    Bin 0 -> 1328 bytes
+ .../cmap14/cmap14_font1.default.4E00,4E05,4E07.ttx |    278 -
+ .../cmap14/cmap14_font1.default.4E02,4E03,4E08.otf |    Bin 0 -> 1576 bytes
+ .../cmap14/cmap14_font1.default.4E02,4E03,4E08.ttx |    294 -
+ .../expected/cmap14/cmap14_font1.default.4E02.otf  |    Bin 0 -> 996 bytes
+ .../expected/cmap14/cmap14_font1.default.4E02.ttx  |    233 -
+ .../expected/cmap14/cmap14_font1.default.4E03.otf  |    Bin 0 -> 1080 bytes
+ .../expected/cmap14/cmap14_font1.default.4E03.ttx  |    241 -
+ .../cmap14_font1.default.4E05,4E07,4E08,4E09.otf   |    Bin 0 -> 1848 bytes
+ .../cmap14_font1.default.4E05,4E07,4E08,4E09.ttx   |    329 -
+ .../cmap14/cmap14_font1.default.4E08,4E09.otf      |    Bin 0 -> 1720 bytes
+ .../cmap14/cmap14_font1.default.4E08,4E09.ttx      |    302 -
+ .../expected/cmap14/cmap14_font1.default.4E08.otf  |    Bin 0 -> 1384 bytes
+ .../expected/cmap14/cmap14_font1.default.4E08.ttx  |    265 -
+ .../cmap14_font1.default.retain-all-codepoint.otf  |    Bin 0 -> 2348 bytes
+ .../cmap14_font1.default.retain-all-codepoint.ttx  |    418 -
+ ...font1.drop-hints-retain-gids.4E00,4E02,4E03.otf |    Bin 0 -> 1388 bytes
+ ...font1.drop-hints-retain-gids.4E00,4E02,4E03.ttx |    318 -
+ ...ap14_font1.drop-hints-retain-gids.4E00,4E03.otf |    Bin 0 -> 1272 bytes
+ ...ap14_font1.drop-hints-retain-gids.4E00,4E03.ttx |    308 -
+ ...font1.drop-hints-retain-gids.4E00,4E05,4E07.otf |    Bin 0 -> 1396 bytes
+ ...font1.drop-hints-retain-gids.4E00,4E05,4E07.ttx |    340 -
+ ...font1.drop-hints-retain-gids.4E02,4E03,4E08.otf |    Bin 0 -> 1720 bytes
+ ...font1.drop-hints-retain-gids.4E02,4E03,4E08.ttx |    391 -
+ .../cmap14_font1.drop-hints-retain-gids.4E02.otf   |    Bin 0 -> 1028 bytes
+ .../cmap14_font1.drop-hints-retain-gids.4E02.ttx   |    280 -
+ .../cmap14_font1.drop-hints-retain-gids.4E03.otf   |    Bin 0 -> 1124 bytes
+ .../cmap14_font1.drop-hints-retain-gids.4E03.ttx   |    293 -
+ ....drop-hints-retain-gids.4E05,4E07,4E08,4E09.otf |    Bin 0 -> 1984 bytes
+ ....drop-hints-retain-gids.4E05,4E07,4E08,4E09.ttx |    421 -
+ ...ap14_font1.drop-hints-retain-gids.4E08,4E09.otf |    Bin 0 -> 1872 bytes
+ ...ap14_font1.drop-hints-retain-gids.4E08,4E09.ttx |    404 -
+ .../cmap14_font1.drop-hints-retain-gids.4E08.otf   |    Bin 0 -> 1544 bytes
+ .../cmap14_font1.drop-hints-retain-gids.4E08.ttx   |    372 -
+ ...drop-hints-retain-gids.retain-all-codepoint.otf |    Bin 0 -> 2436 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttx |    480 -
+ .../cmap14_font1.drop-hints.4E00,4E02,4E03.otf     |    Bin 0 -> 1292 bytes
+ .../cmap14_font1.drop-hints.4E00,4E02,4E03.ttx     |    268 -
+ .../cmap14/cmap14_font1.drop-hints.4E00,4E03.otf   |    Bin 0 -> 1168 bytes
+ .../cmap14/cmap14_font1.drop-hints.4E00,4E03.ttx   |    253 -
+ .../cmap14_font1.drop-hints.4E00,4E05,4E07.otf     |    Bin 0 -> 1260 bytes
+ .../cmap14_font1.drop-hints.4E00,4E05,4E07.ttx     |    270 -
+ .../cmap14_font1.drop-hints.4E02,4E03,4E08.otf     |    Bin 0 -> 1512 bytes
+ .../cmap14_font1.drop-hints.4E02,4E03,4E08.ttx     |    286 -
+ .../cmap14/cmap14_font1.drop-hints.4E02.otf        |    Bin 0 -> 928 bytes
+ .../cmap14/cmap14_font1.drop-hints.4E02.ttx        |    225 -
+ .../cmap14/cmap14_font1.drop-hints.4E03.otf        |    Bin 0 -> 1012 bytes
+ .../cmap14/cmap14_font1.drop-hints.4E03.ttx        |    233 -
+ ...cmap14_font1.drop-hints.4E05,4E07,4E08,4E09.otf |    Bin 0 -> 1780 bytes
+ ...cmap14_font1.drop-hints.4E05,4E07,4E08,4E09.ttx |    321 -
+ .../cmap14/cmap14_font1.drop-hints.4E08,4E09.otf   |    Bin 0 -> 1652 bytes
+ .../cmap14/cmap14_font1.drop-hints.4E08,4E09.ttx   |    294 -
+ .../cmap14/cmap14_font1.drop-hints.4E08.otf        |    Bin 0 -> 1316 bytes
+ .../cmap14/cmap14_font1.drop-hints.4E08.ttx        |    257 -
+ ...map14_font1.drop-hints.retain-all-codepoint.otf |    Bin 0 -> 2280 bytes
+ ...map14_font1.drop-hints.retain-all-codepoint.ttx |    410 -
+ .../cmap14/cmap14_font1.gids.4E00,4E02,4E03.otf    |    Bin 0 -> 1388 bytes
+ .../cmap14/cmap14_font1.gids.4E00,4E02,4E03.ttx    |    297 -
+ .../cmap14/cmap14_font1.gids.4E00,4E03.otf         |    Bin 0 -> 1380 bytes
+ .../cmap14/cmap14_font1.gids.4E00,4E03.ttx         |    289 -
+ .../cmap14/cmap14_font1.gids.4E00,4E05,4E07.otf    |    Bin 0 -> 1620 bytes
+ .../cmap14/cmap14_font1.gids.4E00,4E05,4E07.ttx    |    318 -
+ .../cmap14/cmap14_font1.gids.4E02,4E03,4E08.otf    |    Bin 0 -> 1744 bytes
+ .../cmap14/cmap14_font1.gids.4E02,4E03,4E08.ttx    |    326 -
+ .../expected/cmap14/cmap14_font1.gids.4E02.otf     |    Bin 0 -> 1312 bytes
+ .../expected/cmap14/cmap14_font1.gids.4E02.ttx     |    277 -
+ .../expected/cmap14/cmap14_font1.gids.4E03.otf     |    Bin 0 -> 1352 bytes
+ .../expected/cmap14/cmap14_font1.gids.4E03.ttx     |    280 -
+ .../cmap14_font1.gids.4E05,4E07,4E08,4E09.otf      |    Bin 0 -> 2164 bytes
+ .../cmap14_font1.gids.4E05,4E07,4E08,4E09.ttx      |    373 -
+ .../cmap14/cmap14_font1.gids.4E08,4E09.otf         |    Bin 0 -> 2036 bytes
+ .../cmap14/cmap14_font1.gids.4E08,4E09.ttx         |    346 -
+ .../expected/cmap14/cmap14_font1.gids.4E08.otf     |    Bin 0 -> 1704 bytes
+ .../expected/cmap14/cmap14_font1.gids.4E08.ttx     |    309 -
+ .../cmap14_font1.gids.retain-all-codepoint.otf     |    Bin 0 -> 2380 bytes
+ .../cmap14_font1.gids.retain-all-codepoint.ttx     |    439 -
+ .../cmap14_font1.name-ids.4E00,4E02,4E03.otf       |    Bin 0 -> 1292 bytes
+ .../cmap14_font1.name-ids.4E00,4E02,4E03.ttx       |    264 -
+ .../cmap14/cmap14_font1.name-ids.4E00,4E03.otf     |    Bin 0 -> 1168 bytes
+ .../cmap14/cmap14_font1.name-ids.4E00,4E03.ttx     |    249 -
+ .../cmap14_font1.name-ids.4E00,4E05,4E07.otf       |    Bin 0 -> 1260 bytes
+ .../cmap14_font1.name-ids.4E00,4E05,4E07.ttx       |    266 -
+ .../cmap14_font1.name-ids.4E02,4E03,4E08.otf       |    Bin 0 -> 1508 bytes
+ .../cmap14_font1.name-ids.4E02,4E03,4E08.ttx       |    282 -
+ .../expected/cmap14/cmap14_font1.name-ids.4E02.otf |    Bin 0 -> 928 bytes
+ .../expected/cmap14/cmap14_font1.name-ids.4E02.ttx |    221 -
+ .../expected/cmap14/cmap14_font1.name-ids.4E03.otf |    Bin 0 -> 1012 bytes
+ .../expected/cmap14/cmap14_font1.name-ids.4E03.ttx |    229 -
+ .../cmap14_font1.name-ids.4E05,4E07,4E08,4E09.otf  |    Bin 0 -> 1780 bytes
+ .../cmap14_font1.name-ids.4E05,4E07,4E08,4E09.ttx  |    317 -
+ .../cmap14/cmap14_font1.name-ids.4E08,4E09.otf     |    Bin 0 -> 1652 bytes
+ .../cmap14/cmap14_font1.name-ids.4E08,4E09.ttx     |    290 -
+ .../expected/cmap14/cmap14_font1.name-ids.4E08.otf |    Bin 0 -> 1316 bytes
+ .../expected/cmap14/cmap14_font1.name-ids.4E08.ttx |    253 -
+ .../cmap14_font1.name-ids.retain-all-codepoint.otf |    Bin 0 -> 2280 bytes
+ .../cmap14_font1.name-ids.retain-all-codepoint.ttx |    406 -
+ .../cmap14_font1.retain-gids.4E00,4E02,4E03.otf    |    Bin 0 -> 1452 bytes
+ .../cmap14_font1.retain-gids.4E00,4E02,4E03.ttx    |    326 -
+ .../cmap14/cmap14_font1.retain-gids.4E00,4E03.otf  |    Bin 0 -> 1340 bytes
+ .../cmap14/cmap14_font1.retain-gids.4E00,4E03.ttx  |    316 -
+ .../cmap14_font1.retain-gids.4E00,4E05,4E07.otf    |    Bin 0 -> 1464 bytes
+ .../cmap14_font1.retain-gids.4E00,4E05,4E07.ttx    |    348 -
+ .../cmap14_font1.retain-gids.4E02,4E03,4E08.otf    |    Bin 0 -> 1788 bytes
+ .../cmap14_font1.retain-gids.4E02,4E03,4E08.ttx    |    399 -
+ .../cmap14/cmap14_font1.retain-gids.4E02.otf       |    Bin 0 -> 1096 bytes
+ .../cmap14/cmap14_font1.retain-gids.4E02.ttx       |    288 -
+ .../cmap14/cmap14_font1.retain-gids.4E03.otf       |    Bin 0 -> 1192 bytes
+ .../cmap14/cmap14_font1.retain-gids.4E03.ttx       |    301 -
+ ...map14_font1.retain-gids.4E05,4E07,4E08,4E09.otf |    Bin 0 -> 2048 bytes
+ ...map14_font1.retain-gids.4E05,4E07,4E08,4E09.ttx |    429 -
+ .../cmap14/cmap14_font1.retain-gids.4E08,4E09.otf  |    Bin 0 -> 1940 bytes
+ .../cmap14/cmap14_font1.retain-gids.4E08,4E09.ttx  |    412 -
+ .../cmap14/cmap14_font1.retain-gids.4E08.otf       |    Bin 0 -> 1608 bytes
+ .../cmap14/cmap14_font1.retain-gids.4E08.ttx       |    380 -
+ ...ap14_font1.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 2500 bytes
+ ...ap14_font1.retain-gids.retain-all-codepoint.ttx |    488 -
+ .../cmap14/cmap14_font2.default.4E00,4E02,4E03.otf |    Bin 0 -> 1360 bytes
+ .../cmap14/cmap14_font2.default.4E00,4E02,4E03.ttx |    276 -
+ .../cmap14/cmap14_font2.default.4E00,4E03.otf      |    Bin 0 -> 1236 bytes
+ .../cmap14/cmap14_font2.default.4E00,4E03.ttx      |    261 -
+ .../cmap14/cmap14_font2.default.4E00,4E05,4E07.otf |    Bin 0 -> 1332 bytes
+ .../cmap14/cmap14_font2.default.4E00,4E05,4E07.ttx |    278 -
+ .../cmap14/cmap14_font2.default.4E02,4E03,4E08.otf |    Bin 0 -> 1576 bytes
+ .../cmap14/cmap14_font2.default.4E02,4E03,4E08.ttx |    294 -
+ .../expected/cmap14/cmap14_font2.default.4E02.otf  |    Bin 0 -> 992 bytes
+ .../expected/cmap14/cmap14_font2.default.4E02.ttx  |    233 -
+ .../expected/cmap14/cmap14_font2.default.4E03.otf  |    Bin 0 -> 1076 bytes
+ .../expected/cmap14/cmap14_font2.default.4E03.ttx  |    241 -
+ .../cmap14_font2.default.4E05,4E07,4E08,4E09.otf   |    Bin 0 -> 1848 bytes
+ .../cmap14_font2.default.4E05,4E07,4E08,4E09.ttx   |    329 -
+ .../cmap14/cmap14_font2.default.4E08,4E09.otf      |    Bin 0 -> 1716 bytes
+ .../cmap14/cmap14_font2.default.4E08,4E09.ttx      |    302 -
+ .../expected/cmap14/cmap14_font2.default.4E08.otf  |    Bin 0 -> 1380 bytes
+ .../expected/cmap14/cmap14_font2.default.4E08.ttx  |    265 -
+ .../cmap14_font2.default.retain-all-codepoint.otf  |    Bin 0 -> 2344 bytes
+ .../cmap14_font2.default.retain-all-codepoint.ttx  |    418 -
+ ...font2.drop-hints-retain-gids.4E00,4E02,4E03.otf |    Bin 0 -> 1388 bytes
+ ...font2.drop-hints-retain-gids.4E00,4E02,4E03.ttx |    318 -
+ ...ap14_font2.drop-hints-retain-gids.4E00,4E03.otf |    Bin 0 -> 1272 bytes
+ ...ap14_font2.drop-hints-retain-gids.4E00,4E03.ttx |    308 -
+ ...font2.drop-hints-retain-gids.4E00,4E05,4E07.otf |    Bin 0 -> 1400 bytes
+ ...font2.drop-hints-retain-gids.4E00,4E05,4E07.ttx |    340 -
+ ...font2.drop-hints-retain-gids.4E02,4E03,4E08.otf |    Bin 0 -> 1720 bytes
+ ...font2.drop-hints-retain-gids.4E02,4E03,4E08.ttx |    391 -
+ .../cmap14_font2.drop-hints-retain-gids.4E02.otf   |    Bin 0 -> 1024 bytes
+ .../cmap14_font2.drop-hints-retain-gids.4E02.ttx   |    280 -
+ .../cmap14_font2.drop-hints-retain-gids.4E03.otf   |    Bin 0 -> 1120 bytes
+ .../cmap14_font2.drop-hints-retain-gids.4E03.ttx   |    293 -
+ ....drop-hints-retain-gids.4E05,4E07,4E08,4E09.otf |    Bin 0 -> 1984 bytes
+ ....drop-hints-retain-gids.4E05,4E07,4E08,4E09.ttx |    421 -
+ ...ap14_font2.drop-hints-retain-gids.4E08,4E09.otf |    Bin 0 -> 1868 bytes
+ ...ap14_font2.drop-hints-retain-gids.4E08,4E09.ttx |    404 -
+ .../cmap14_font2.drop-hints-retain-gids.4E08.otf   |    Bin 0 -> 1540 bytes
+ .../cmap14_font2.drop-hints-retain-gids.4E08.ttx   |    372 -
+ ...drop-hints-retain-gids.retain-all-codepoint.otf |    Bin 0 -> 2432 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttx |    480 -
+ .../cmap14_font2.drop-hints.4E00,4E02,4E03.otf     |    Bin 0 -> 1292 bytes
+ .../cmap14_font2.drop-hints.4E00,4E02,4E03.ttx     |    268 -
+ .../cmap14/cmap14_font2.drop-hints.4E00,4E03.otf   |    Bin 0 -> 1168 bytes
+ .../cmap14/cmap14_font2.drop-hints.4E00,4E03.ttx   |    253 -
+ .../cmap14_font2.drop-hints.4E00,4E05,4E07.otf     |    Bin 0 -> 1264 bytes
+ .../cmap14_font2.drop-hints.4E00,4E05,4E07.ttx     |    270 -
+ .../cmap14_font2.drop-hints.4E02,4E03,4E08.otf     |    Bin 0 -> 1512 bytes
+ .../cmap14_font2.drop-hints.4E02,4E03,4E08.ttx     |    286 -
+ .../cmap14/cmap14_font2.drop-hints.4E02.otf        |    Bin 0 -> 924 bytes
+ .../cmap14/cmap14_font2.drop-hints.4E02.ttx        |    225 -
+ .../cmap14/cmap14_font2.drop-hints.4E03.otf        |    Bin 0 -> 1008 bytes
+ .../cmap14/cmap14_font2.drop-hints.4E03.ttx        |    233 -
+ ...cmap14_font2.drop-hints.4E05,4E07,4E08,4E09.otf |    Bin 0 -> 1780 bytes
+ ...cmap14_font2.drop-hints.4E05,4E07,4E08,4E09.ttx |    321 -
+ .../cmap14/cmap14_font2.drop-hints.4E08,4E09.otf   |    Bin 0 -> 1648 bytes
+ .../cmap14/cmap14_font2.drop-hints.4E08,4E09.ttx   |    294 -
+ .../cmap14/cmap14_font2.drop-hints.4E08.otf        |    Bin 0 -> 1312 bytes
+ .../cmap14/cmap14_font2.drop-hints.4E08.ttx        |    257 -
+ ...map14_font2.drop-hints.retain-all-codepoint.otf |    Bin 0 -> 2276 bytes
+ ...map14_font2.drop-hints.retain-all-codepoint.ttx |    410 -
+ .../cmap14/cmap14_font2.gids.4E00,4E02,4E03.otf    |    Bin 0 -> 1388 bytes
+ .../cmap14/cmap14_font2.gids.4E00,4E02,4E03.ttx    |    297 -
+ .../cmap14/cmap14_font2.gids.4E00,4E03.otf         |    Bin 0 -> 1380 bytes
+ .../cmap14/cmap14_font2.gids.4E00,4E03.ttx         |    289 -
+ .../cmap14/cmap14_font2.gids.4E00,4E05,4E07.otf    |    Bin 0 -> 1624 bytes
+ .../cmap14/cmap14_font2.gids.4E00,4E05,4E07.ttx    |    318 -
+ .../cmap14/cmap14_font2.gids.4E02,4E03,4E08.otf    |    Bin 0 -> 1744 bytes
+ .../cmap14/cmap14_font2.gids.4E02,4E03,4E08.ttx    |    326 -
+ .../expected/cmap14/cmap14_font2.gids.4E02.otf     |    Bin 0 -> 1308 bytes
+ .../expected/cmap14/cmap14_font2.gids.4E02.ttx     |    277 -
+ .../expected/cmap14/cmap14_font2.gids.4E03.otf     |    Bin 0 -> 1348 bytes
+ .../expected/cmap14/cmap14_font2.gids.4E03.ttx     |    280 -
+ .../cmap14_font2.gids.4E05,4E07,4E08,4E09.otf      |    Bin 0 -> 2164 bytes
+ .../cmap14_font2.gids.4E05,4E07,4E08,4E09.ttx      |    373 -
+ .../cmap14/cmap14_font2.gids.4E08,4E09.otf         |    Bin 0 -> 2032 bytes
+ .../cmap14/cmap14_font2.gids.4E08,4E09.ttx         |    346 -
+ .../expected/cmap14/cmap14_font2.gids.4E08.otf     |    Bin 0 -> 1700 bytes
+ .../expected/cmap14/cmap14_font2.gids.4E08.ttx     |    309 -
+ .../cmap14_font2.gids.retain-all-codepoint.otf     |    Bin 0 -> 2376 bytes
+ .../cmap14_font2.gids.retain-all-codepoint.ttx     |    439 -
+ .../cmap14_font2.name-ids.4E00,4E02,4E03.otf       |    Bin 0 -> 1292 bytes
+ .../cmap14_font2.name-ids.4E00,4E02,4E03.ttx       |    264 -
+ .../cmap14/cmap14_font2.name-ids.4E00,4E03.otf     |    Bin 0 -> 1168 bytes
+ .../cmap14/cmap14_font2.name-ids.4E00,4E03.ttx     |    249 -
+ .../cmap14_font2.name-ids.4E00,4E05,4E07.otf       |    Bin 0 -> 1264 bytes
+ .../cmap14_font2.name-ids.4E00,4E05,4E07.ttx       |    266 -
+ .../cmap14_font2.name-ids.4E02,4E03,4E08.otf       |    Bin 0 -> 1508 bytes
+ .../cmap14_font2.name-ids.4E02,4E03,4E08.ttx       |    282 -
+ .../expected/cmap14/cmap14_font2.name-ids.4E02.otf |    Bin 0 -> 924 bytes
+ .../expected/cmap14/cmap14_font2.name-ids.4E02.ttx |    221 -
+ .../expected/cmap14/cmap14_font2.name-ids.4E03.otf |    Bin 0 -> 1008 bytes
+ .../expected/cmap14/cmap14_font2.name-ids.4E03.ttx |    229 -
+ .../cmap14_font2.name-ids.4E05,4E07,4E08,4E09.otf  |    Bin 0 -> 1780 bytes
+ .../cmap14_font2.name-ids.4E05,4E07,4E08,4E09.ttx  |    317 -
+ .../cmap14/cmap14_font2.name-ids.4E08,4E09.otf     |    Bin 0 -> 1648 bytes
+ .../cmap14/cmap14_font2.name-ids.4E08,4E09.ttx     |    290 -
+ .../expected/cmap14/cmap14_font2.name-ids.4E08.otf |    Bin 0 -> 1312 bytes
+ .../expected/cmap14/cmap14_font2.name-ids.4E08.ttx |    253 -
+ .../cmap14_font2.name-ids.retain-all-codepoint.otf |    Bin 0 -> 2276 bytes
+ .../cmap14_font2.name-ids.retain-all-codepoint.ttx |    406 -
+ .../cmap14_font2.retain-gids.4E00,4E02,4E03.otf    |    Bin 0 -> 1452 bytes
+ .../cmap14_font2.retain-gids.4E00,4E02,4E03.ttx    |    326 -
+ .../cmap14/cmap14_font2.retain-gids.4E00,4E03.otf  |    Bin 0 -> 1340 bytes
+ .../cmap14/cmap14_font2.retain-gids.4E00,4E03.ttx  |    316 -
+ .../cmap14_font2.retain-gids.4E00,4E05,4E07.otf    |    Bin 0 -> 1468 bytes
+ .../cmap14_font2.retain-gids.4E00,4E05,4E07.ttx    |    348 -
+ .../cmap14_font2.retain-gids.4E02,4E03,4E08.otf    |    Bin 0 -> 1788 bytes
+ .../cmap14_font2.retain-gids.4E02,4E03,4E08.ttx    |    399 -
+ .../cmap14/cmap14_font2.retain-gids.4E02.otf       |    Bin 0 -> 1092 bytes
+ .../cmap14/cmap14_font2.retain-gids.4E02.ttx       |    288 -
+ .../cmap14/cmap14_font2.retain-gids.4E03.otf       |    Bin 0 -> 1188 bytes
+ .../cmap14/cmap14_font2.retain-gids.4E03.ttx       |    301 -
+ ...map14_font2.retain-gids.4E05,4E07,4E08,4E09.otf |    Bin 0 -> 2048 bytes
+ ...map14_font2.retain-gids.4E05,4E07,4E08,4E09.ttx |    429 -
+ .../cmap14/cmap14_font2.retain-gids.4E08,4E09.otf  |    Bin 0 -> 1936 bytes
+ .../cmap14/cmap14_font2.retain-gids.4E08,4E09.ttx  |    412 -
+ .../cmap14/cmap14_font2.retain-gids.4E08.otf       |    Bin 0 -> 1604 bytes
+ .../cmap14/cmap14_font2.retain-gids.4E08.ttx       |    380 -
+ ...ap14_font2.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 2496 bytes
+ ...ap14_font2.retain-gids.retain-all-codepoint.ttx |    488 -
+ .../TwemojiMozilla.subset.default.32,3297,3299.ttf |    Bin 0 -> 1936 bytes
+ .../TwemojiMozilla.subset.default.32,3297,3299.ttx |    626 -
+ .../colr/TwemojiMozilla.subset.default.32,3297.ttf |    Bin 0 -> 1400 bytes
+ .../colr/TwemojiMozilla.subset.default.32,3297.ttx |    411 -
+ .../colr/TwemojiMozilla.subset.default.32,3299.ttf |    Bin 0 -> 1576 bytes
+ .../colr/TwemojiMozilla.subset.default.32,3299.ttx |    475 -
+ .../colr/TwemojiMozilla.subset.default.32.ttf      |    Bin 0 -> 932 bytes
+ .../colr/TwemojiMozilla.subset.default.32.ttx      |    231 -
+ .../TwemojiMozilla.subset.default.3297,3299.ttf    |    Bin 0 -> 1916 bytes
+ .../TwemojiMozilla.subset.default.3297,3299.ttx    |    617 -
+ .../colr/TwemojiMozilla.subset.default.3297.ttf    |    Bin 0 -> 1376 bytes
+ .../colr/TwemojiMozilla.subset.default.3297.ttx    |    402 -
+ .../colr/TwemojiMozilla.subset.default.3299.ttf    |    Bin 0 -> 1552 bytes
+ .../colr/TwemojiMozilla.subset.default.3299.ttx    |    466 -
+ ....subset.drop-hints-retain-gids.32,3297,3299.ttf |    Bin 0 -> 1916 bytes
+ ....subset.drop-hints-retain-gids.32,3297,3299.ttx |    621 -
+ ...zilla.subset.drop-hints-retain-gids.32,3297.ttf |    Bin 0 -> 1396 bytes
+ ...zilla.subset.drop-hints-retain-gids.32,3297.ttx |    410 -
+ ...zilla.subset.drop-hints-retain-gids.32,3299.ttf |    Bin 0 -> 1576 bytes
+ ...zilla.subset.drop-hints-retain-gids.32,3299.ttx |    478 -
+ ...ojiMozilla.subset.drop-hints-retain-gids.32.ttf |    Bin 0 -> 912 bytes
+ ...ojiMozilla.subset.drop-hints-retain-gids.32.ttx |    226 -
+ ...lla.subset.drop-hints-retain-gids.3297,3299.ttf |    Bin 0 -> 1900 bytes
+ ...lla.subset.drop-hints-retain-gids.3297,3299.ttx |    616 -
+ ...iMozilla.subset.drop-hints-retain-gids.3297.ttf |    Bin 0 -> 1372 bytes
+ ...iMozilla.subset.drop-hints-retain-gids.3297.ttx |    405 -
+ ...iMozilla.subset.drop-hints-retain-gids.3299.ttf |    Bin 0 -> 1552 bytes
+ ...iMozilla.subset.drop-hints-retain-gids.3299.ttx |    473 -
+ ...emojiMozilla.subset.drop-hints.32,3297,3299.ttf |    Bin 0 -> 1916 bytes
+ ...emojiMozilla.subset.drop-hints.32,3297,3299.ttx |    621 -
+ .../TwemojiMozilla.subset.drop-hints.32,3297.ttf   |    Bin 0 -> 1380 bytes
+ .../TwemojiMozilla.subset.drop-hints.32,3297.ttx   |    406 -
+ .../TwemojiMozilla.subset.drop-hints.32,3299.ttf   |    Bin 0 -> 1556 bytes
+ .../TwemojiMozilla.subset.drop-hints.32,3299.ttx   |    470 -
+ .../colr/TwemojiMozilla.subset.drop-hints.32.ttf   |    Bin 0 -> 912 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.32.ttx   |    226 -
+ .../TwemojiMozilla.subset.drop-hints.3297,3299.ttf |    Bin 0 -> 1896 bytes
+ .../TwemojiMozilla.subset.drop-hints.3297,3299.ttx |    612 -
+ .../colr/TwemojiMozilla.subset.drop-hints.3297.ttf |    Bin 0 -> 1356 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.3297.ttx |    397 -
+ .../colr/TwemojiMozilla.subset.drop-hints.3299.ttf |    Bin 0 -> 1532 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.3299.ttx |    461 -
+ ...mojiMozilla.subset.retain-gids.32,3297,3299.ttf |    Bin 0 -> 1936 bytes
+ ...mojiMozilla.subset.retain-gids.32,3297,3299.ttx |    626 -
+ .../TwemojiMozilla.subset.retain-gids.32,3297.ttf  |    Bin 0 -> 1416 bytes
+ .../TwemojiMozilla.subset.retain-gids.32,3297.ttx  |    415 -
+ .../TwemojiMozilla.subset.retain-gids.32,3299.ttf  |    Bin 0 -> 1596 bytes
+ .../TwemojiMozilla.subset.retain-gids.32,3299.ttx  |    483 -
+ .../colr/TwemojiMozilla.subset.retain-gids.32.ttf  |    Bin 0 -> 932 bytes
+ .../colr/TwemojiMozilla.subset.retain-gids.32.ttx  |    231 -
+ ...TwemojiMozilla.subset.retain-gids.3297,3299.ttf |    Bin 0 -> 1920 bytes
+ ...TwemojiMozilla.subset.retain-gids.3297,3299.ttx |    621 -
+ .../TwemojiMozilla.subset.retain-gids.3297.ttf     |    Bin 0 -> 1392 bytes
+ .../TwemojiMozilla.subset.retain-gids.3297.ttx     |    410 -
+ .../TwemojiMozilla.subset.retain-gids.3299.ttf     |    Bin 0 -> 1572 bytes
+ .../TwemojiMozilla.subset.retain-gids.3299.ttx     |    478 -
+ .../colr_with_components/colr-table.default.6B.ttf |    Bin 0 -> 4260 bytes
+ .../colr_with_components/colr-table.default.6B.ttx |   1435 -
+ .../colr-table.drop-hints-retain-gids.6B.ttf       |    Bin 0 -> 4984 bytes
+ .../colr-table.drop-hints-retain-gids.6B.ttx       |   1919 -
+ .../colr-table.drop-hints.6B.ttf                   |    Bin 0 -> 4260 bytes
+ .../colr-table.drop-hints.6B.ttx                   |   1435 -
+ .../colr-table.retain-gids.6B.ttf                  |    Bin 0 -> 4984 bytes
+ .../colr-table.retain-gids.6B.ttx                  |   1919 -
+ ...oColrEmojiGlyf-Regular.subset.default.1f35e.ttf |    Bin 0 -> 3004 bytes
+ ...oColrEmojiGlyf-Regular.subset.default.1f35e.ttx |   1077 -
+ ...oColrEmojiGlyf-Regular.subset.default.1f696.ttf |    Bin 0 -> 3752 bytes
+ ...oColrEmojiGlyf-Regular.subset.default.1f696.ttx |   1449 -
+ ...Regular.subset.drop-hints-retain-gids.1f35e.ttf |    Bin 0 -> 3516 bytes
+ ...Regular.subset.drop-hints-retain-gids.1f35e.ttx |   1417 -
+ ...Regular.subset.drop-hints-retain-gids.1f696.ttf |    Bin 0 -> 5048 bytes
+ ...Regular.subset.drop-hints-retain-gids.1f696.ttx |   2313 -
+ ...lrEmojiGlyf-Regular.subset.drop-hints.1f35e.ttf |    Bin 0 -> 3004 bytes
+ ...lrEmojiGlyf-Regular.subset.drop-hints.1f35e.ttx |   1077 -
+ ...lrEmojiGlyf-Regular.subset.drop-hints.1f696.ttf |    Bin 0 -> 3752 bytes
+ ...lrEmojiGlyf-Regular.subset.drop-hints.1f696.ttx |   1449 -
+ ...rEmojiGlyf-Regular.subset.retain-gids.1f35e.ttf |    Bin 0 -> 3516 bytes
+ ...rEmojiGlyf-Regular.subset.retain-gids.1f35e.ttx |   1417 -
+ ...rEmojiGlyf-Regular.subset.retain-gids.1f696.ttf |    Bin 0 -> 5048 bytes
+ ...rEmojiGlyf-Regular.subset.retain-gids.1f696.ttx |   2313 -
+ .../colrv1/TestCOLRv1.default.E000,E004.ttf        |    Bin 0 -> 900 bytes
+ .../colrv1/TestCOLRv1.default.E000,E004.ttx        |    316 -
+ .../colrv1/TestCOLRv1.default.E003,E004.ttf        |    Bin 0 -> 1000 bytes
+ .../colrv1/TestCOLRv1.default.E003,E004.ttx        |    367 -
+ .../expected/colrv1/TestCOLRv1.default.E004.ttf    |    Bin 0 -> 744 bytes
+ .../expected/colrv1/TestCOLRv1.default.E004.ttx    |    231 -
+ .../TestCOLRv1.default.retain-all-codepoint.ttf    |    Bin 0 -> 1444 bytes
+ .../TestCOLRv1.default.retain-all-codepoint.ttx    |    596 -
+ ...TestCOLRv1.drop-hints-retain-gids.E000,E004.ttf |    Bin 0 -> 984 bytes
+ ...TestCOLRv1.drop-hints-retain-gids.E000,E004.ttx |    364 -
+ ...TestCOLRv1.drop-hints-retain-gids.E003,E004.ttf |    Bin 0 -> 1076 bytes
+ ...TestCOLRv1.drop-hints-retain-gids.E003,E004.ttx |    411 -
+ .../TestCOLRv1.drop-hints-retain-gids.E004.ttf     |    Bin 0 -> 836 bytes
+ .../TestCOLRv1.drop-hints-retain-gids.E004.ttx     |    291 -
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf |    Bin 0 -> 1444 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttx |    596 -
+ .../colrv1/TestCOLRv1.drop-hints.E000,E004.ttf     |    Bin 0 -> 900 bytes
+ .../colrv1/TestCOLRv1.drop-hints.E000,E004.ttx     |    316 -
+ .../colrv1/TestCOLRv1.drop-hints.E003,E004.ttf     |    Bin 0 -> 1000 bytes
+ .../colrv1/TestCOLRv1.drop-hints.E003,E004.ttx     |    367 -
+ .../expected/colrv1/TestCOLRv1.drop-hints.E004.ttf |    Bin 0 -> 744 bytes
+ .../expected/colrv1/TestCOLRv1.drop-hints.E004.ttx |    231 -
+ .../TestCOLRv1.drop-hints.retain-all-codepoint.ttf |    Bin 0 -> 1444 bytes
+ .../TestCOLRv1.drop-hints.retain-all-codepoint.ttx |    596 -
+ .../colrv1/TestCOLRv1.retain-gids.E000,E004.ttf    |    Bin 0 -> 984 bytes
+ .../colrv1/TestCOLRv1.retain-gids.E000,E004.ttx    |    364 -
+ .../colrv1/TestCOLRv1.retain-gids.E003,E004.ttf    |    Bin 0 -> 1076 bytes
+ .../colrv1/TestCOLRv1.retain-gids.E003,E004.ttx    |    411 -
+ .../colrv1/TestCOLRv1.retain-gids.E004.ttf         |    Bin 0 -> 836 bytes
+ .../colrv1/TestCOLRv1.retain-gids.E004.ttx         |    291 -
+ ...TestCOLRv1.retain-gids.retain-all-codepoint.ttf |    Bin 0 -> 1444 bytes
+ ...TestCOLRv1.retain-gids.retain-all-codepoint.ttx |    596 -
+ .../Roboto-Regular.default.1FC,21,41,20,62,63.ttf  |    Bin 0 -> 3080 bytes
+ .../Roboto-Regular.default.1FC,21,41,20,62,63.ttx  |   1659 -
+ .../full-font/Roboto-Regular.default.61,62,63.ttf  |    Bin 0 -> 2672 bytes
+ .../full-font/Roboto-Regular.default.61,62,63.ttx  |   1422 -
+ .../Roboto-Regular.default.D7,D8,D9,DA,DE.ttf      |    Bin 0 -> 3024 bytes
+ .../Roboto-Regular.default.D7,D8,D9,DA,DE.ttx      |   1571 -
+ ...oboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf |    Bin 0 -> 1632 bytes
+ ...oboto-Regular.drop-hints.1FC,21,41,20,62,63.ttx |    549 -
+ .../Roboto-Regular.drop-hints.61,62,63.ttf         |    Bin 0 -> 1412 bytes
+ .../Roboto-Regular.drop-hints.61,62,63.ttx         |    494 -
+ .../Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf   |    Bin 0 -> 1648 bytes
+ .../Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttx   |    529 -
+ ...ifVariable-Roman.default.1FC,21,41,20,62,63.ttf |    Bin 0 -> 3992 bytes
+ ...ifVariable-Roman.default.1FC,21,41,20,62,63.ttx |   1355 -
+ .../SourceSerifVariable-Roman.default.61,62,63.ttf |    Bin 0 -> 3832 bytes
+ .../SourceSerifVariable-Roman.default.61,62,63.ttx |   1262 -
+ ...eSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf |    Bin 0 -> 4396 bytes
+ ...eSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttx |   1522 -
+ ...ariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf |    Bin 0 -> 3968 bytes
+ ...ariable-Roman.drop-hints.1FC,21,41,20,62,63.ttx |   1349 -
+ ...urceSerifVariable-Roman.drop-hints.61,62,63.ttf |    Bin 0 -> 3832 bytes
+ ...urceSerifVariable-Roman.drop-hints.61,62,63.ttx |   1262 -
+ ...rifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf |    Bin 0 -> 4396 bytes
+ ...rifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttx |   1522 -
+ .../Mplus1p-Regular.default.1D715,1D7D8,41,42.ttf  |    Bin 0 -> 2344 bytes
+ .../Mplus1p-Regular.default.1D715,1D7D8,41,42.ttx  |   1187 -
+ .../japanese/Mplus1p-Regular.default.25771.ttf     |    Bin 0 -> 1992 bytes
+ .../japanese/Mplus1p-Regular.default.25771.ttx     |   1033 -
+ ...gular.default.3042,3044,3046,3048,304A,304B.ttf |    Bin 0 -> 2704 bytes
+ ...gular.default.3042,3044,3046,3048,304A,304B.ttx |   1296 -
+ ...gular.default.3042,3044,3046,73E0,5EA6,8F38.ttf |    Bin 0 -> 2948 bytes
+ ...gular.default.3042,3044,3046,73E0,5EA6,8F38.ttx |   1403 -
+ .../Mplus1p-Regular.default.61,63,65,6B.ttf        |    Bin 0 -> 2324 bytes
+ .../Mplus1p-Regular.default.61,63,65,6B.ttx        |   1172 -
+ ...gular.default.660E,6975,73E0,5EA6,8F38,6E05.ttf |    Bin 0 -> 3244 bytes
+ ...gular.default.660E,6975,73E0,5EA6,8F38,6E05.ttx |   1522 -
+ .../japanese/Mplus1p-Regular.default.660E.ttf      |    Bin 0 -> 1984 bytes
+ .../japanese/Mplus1p-Regular.default.660E.ttx      |   1024 -
+ ...plus1p-Regular.drop-hints.1D715,1D7D8,41,42.ttf |    Bin 0 -> 1616 bytes
+ ...plus1p-Regular.drop-hints.1D715,1D7D8,41,42.ttx |    522 -
+ .../japanese/Mplus1p-Regular.drop-hints.25771.ttf  |    Bin 0 -> 1264 bytes
+ .../japanese/Mplus1p-Regular.drop-hints.25771.ttx  |    368 -
+ ...ar.drop-hints.3042,3044,3046,3048,304A,304B.ttf |    Bin 0 -> 1976 bytes
+ ...ar.drop-hints.3042,3044,3046,3048,304A,304B.ttx |    631 -
+ ...ar.drop-hints.3042,3044,3046,73E0,5EA6,8F38.ttf |    Bin 0 -> 2220 bytes
+ ...ar.drop-hints.3042,3044,3046,73E0,5EA6,8F38.ttx |    738 -
+ .../Mplus1p-Regular.drop-hints.61,63,65,6B.ttf     |    Bin 0 -> 1596 bytes
+ .../Mplus1p-Regular.drop-hints.61,63,65,6B.ttx     |    507 -
+ ...ar.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.ttf |    Bin 0 -> 2516 bytes
+ ...ar.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.ttx |    857 -
+ .../japanese/Mplus1p-Regular.drop-hints.660E.ttf   |    Bin 0 -> 1256 bytes
+ .../japanese/Mplus1p-Regular.drop-hints.660E.ttx   |    359 -
+ ...Mplus1p-Regular.keep-gdef.1D715,1D7D8,41,42.ttf |    Bin 0 -> 2344 bytes
+ ...Mplus1p-Regular.keep-gdef.1D715,1D7D8,41,42.ttx |   1187 -
+ .../japanese/Mplus1p-Regular.keep-gdef.25771.ttf   |    Bin 0 -> 1992 bytes
+ .../japanese/Mplus1p-Regular.keep-gdef.25771.ttx   |   1033 -
+ ...lar.keep-gdef.3042,3044,3046,3048,304A,304B.ttf |    Bin 0 -> 2704 bytes
+ ...lar.keep-gdef.3042,3044,3046,3048,304A,304B.ttx |   1296 -
+ ...lar.keep-gdef.3042,3044,3046,73E0,5EA6,8F38.ttf |    Bin 0 -> 2948 bytes
+ ...lar.keep-gdef.3042,3044,3046,73E0,5EA6,8F38.ttx |   1403 -
+ .../Mplus1p-Regular.keep-gdef.61,63,65,6B.ttf      |    Bin 0 -> 2324 bytes
+ .../Mplus1p-Regular.keep-gdef.61,63,65,6B.ttx      |   1172 -
+ ...lar.keep-gdef.660E,6975,73E0,5EA6,8F38,6E05.ttf |    Bin 0 -> 3244 bytes
+ ...lar.keep-gdef.660E,6975,73E0,5EA6,8F38,6E05.ttx |   1522 -
+ .../japanese/Mplus1p-Regular.keep-gdef.660E.ttf    |    Bin 0 -> 1984 bytes
+ .../japanese/Mplus1p-Regular.keep-gdef.660E.ttx    |   1024 -
+ ...text1_multiple_subrules_f1.default.41,42,43.otf |    Bin 0 -> 1328 bytes
+ ...text1_multiple_subrules_f1.default.41,42,43.ttx |    284 -
+ ...context1_multiple_subrules_f1.default.41,42.otf |    Bin 0 -> 1228 bytes
+ ...context1_multiple_subrules_f1.default.41,42.ttx |    265 -
+ ...context1_multiple_subrules_f1.default.41,43.otf |    Bin 0 -> 1332 bytes
+ ...context1_multiple_subrules_f1.default.41,43.ttx |    275 -
+ ...os_context1_multiple_subrules_f1.default.41.otf |    Bin 0 -> 1216 bytes
+ ...os_context1_multiple_subrules_f1.default.41.ttx |    256 -
+ ...le_subrules_f1.default.retain-all-codepoint.otf |    Bin 0 -> 3700 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.ttx |   1247 -
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.otf |    Bin 0 -> 2028 bytes
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.ttx |    604 -
+ ...ext1_multiple_subrules_f1.retain-gids.41,42.otf |    Bin 0 -> 1932 bytes
+ ...ext1_multiple_subrules_f1.retain-gids.41,42.ttx |    585 -
+ ...ext1_multiple_subrules_f1.retain-gids.41,43.otf |    Bin 0 -> 2048 bytes
+ ...ext1_multiple_subrules_f1.retain-gids.41,43.ttx |    600 -
+ ...ontext1_multiple_subrules_f1.retain-gids.41.otf |    Bin 0 -> 1916 bytes
+ ...ontext1_multiple_subrules_f1.retain-gids.41.ttx |    576 -
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3700 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.ttx |   1247 -
+ ...text2_multiple_subrules_f1.default.41,42,43.otf |    Bin 0 -> 1328 bytes
+ ...text2_multiple_subrules_f1.default.41,42,43.ttx |    284 -
+ ...context2_multiple_subrules_f1.default.41,42.otf |    Bin 0 -> 1228 bytes
+ ...context2_multiple_subrules_f1.default.41,42.ttx |    265 -
+ ...context2_multiple_subrules_f1.default.41,43.otf |    Bin 0 -> 1332 bytes
+ ...context2_multiple_subrules_f1.default.41,43.ttx |    275 -
+ ...os_context2_multiple_subrules_f1.default.41.otf |    Bin 0 -> 1216 bytes
+ ...os_context2_multiple_subrules_f1.default.41.ttx |    256 -
+ ...le_subrules_f1.default.retain-all-codepoint.otf |    Bin 0 -> 3700 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.ttx |   1247 -
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.otf |    Bin 0 -> 2028 bytes
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.ttx |    604 -
+ ...ext2_multiple_subrules_f1.retain-gids.41,42.otf |    Bin 0 -> 1932 bytes
+ ...ext2_multiple_subrules_f1.retain-gids.41,42.ttx |    585 -
+ ...ext2_multiple_subrules_f1.retain-gids.41,43.otf |    Bin 0 -> 2048 bytes
+ ...ext2_multiple_subrules_f1.retain-gids.41,43.ttx |    600 -
+ ...ontext2_multiple_subrules_f1.retain-gids.41.otf |    Bin 0 -> 1916 bytes
+ ...ontext2_multiple_subrules_f1.retain-gids.41.ttx |    576 -
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3700 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.ttx |   1247 -
+ .../gpos_context3_simple_f1.default.41,42,43.otf   |    Bin 0 -> 1308 bytes
+ .../gpos_context3_simple_f1.default.41,42,43.ttx   |    284 -
+ .../gpos_context3_simple_f1.default.41,42.otf      |    Bin 0 -> 1208 bytes
+ .../gpos_context3_simple_f1.default.41,42.ttx      |    265 -
+ .../gpos_context3_simple_f1.default.41,43.otf      |    Bin 0 -> 1312 bytes
+ .../gpos_context3_simple_f1.default.41,43.ttx      |    275 -
+ .../gpos_context3_simple_f1.default.41.otf         |    Bin 0 -> 1196 bytes
+ .../gpos_context3_simple_f1.default.41.ttx         |    256 -
+ ...ext3_simple_f1.default.retain-all-codepoint.otf |    Bin 0 -> 3680 bytes
+ ...ext3_simple_f1.default.retain-all-codepoint.ttx |   1247 -
+ ...pos_context3_simple_f1.retain-gids.41,42,43.otf |    Bin 0 -> 2008 bytes
+ ...pos_context3_simple_f1.retain-gids.41,42,43.ttx |    604 -
+ .../gpos_context3_simple_f1.retain-gids.41,42.otf  |    Bin 0 -> 1912 bytes
+ .../gpos_context3_simple_f1.retain-gids.41,42.ttx  |    585 -
+ .../gpos_context3_simple_f1.retain-gids.41,43.otf  |    Bin 0 -> 2028 bytes
+ .../gpos_context3_simple_f1.retain-gids.41,43.ttx  |    600 -
+ .../gpos_context3_simple_f1.retain-gids.41.otf     |    Bin 0 -> 1896 bytes
+ .../gpos_context3_simple_f1.retain-gids.41.ttx     |    576 -
+ ..._simple_f1.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3680 bytes
+ ..._simple_f1.retain-gids.retain-all-codepoint.ttx |   1247 -
+ .../IndicTestJalandhar-Regular.default.A01.ttf     |    Bin 0 -> 4176 bytes
+ .../IndicTestJalandhar-Regular.default.A01.ttx     |   2916 -
+ .../IndicTestJalandhar-Regular.default.A05,A06.ttf |    Bin 0 -> 4752 bytes
+ .../IndicTestJalandhar-Regular.default.A05,A06.ttx |   3167 -
+ .../IndicTestJalandhar-Regular.default.A07,A1B.ttf |    Bin 0 -> 4724 bytes
+ .../IndicTestJalandhar-Regular.default.A07,A1B.ttx |   3148 -
+ ...andhar-Regular.default.retain-all-codepoint.ttf |    Bin 0 -> 49244 bytes
+ ...andhar-Regular.default.retain-all-codepoint.ttx |  22554 ---
+ .../IndicTestJalandhar-Regular.drop-hints.A01.ttf  |    Bin 0 -> 1036 bytes
+ .../IndicTestJalandhar-Regular.drop-hints.A01.ttx  |    281 -
+ ...dicTestJalandhar-Regular.drop-hints.A05,A06.ttf |    Bin 0 -> 1344 bytes
+ ...dicTestJalandhar-Regular.drop-hints.A05,A06.ttx |    403 -
+ ...dicTestJalandhar-Regular.drop-hints.A07,A1B.ttf |    Bin 0 -> 1344 bytes
+ ...dicTestJalandhar-Regular.drop-hints.A07,A1B.ttx |    404 -
+ ...har-Regular.drop-hints.retain-all-codepoint.ttf |    Bin 0 -> 29464 bytes
+ ...har-Regular.drop-hints.retain-all-codepoint.ttx |  11627 --
+ .../IndicTestJalandhar-Regular.keep-gdef.A01.ttf   |    Bin 0 -> 4176 bytes
+ .../IndicTestJalandhar-Regular.keep-gdef.A01.ttx   |   2916 -
+ ...ndicTestJalandhar-Regular.keep-gdef.A05,A06.ttf |    Bin 0 -> 4752 bytes
+ ...ndicTestJalandhar-Regular.keep-gdef.A05,A06.ttx |   3167 -
+ ...ndicTestJalandhar-Regular.keep-gdef.A07,A1B.ttf |    Bin 0 -> 4724 bytes
+ ...ndicTestJalandhar-Regular.keep-gdef.A07,A1B.ttx |   3148 -
+ ...dhar-Regular.keep-gdef.retain-all-codepoint.ttf |    Bin 0 -> 49244 bytes
+ ...dhar-Regular.keep-gdef.retain-all-codepoint.ttx |  22554 ---
+ .../AdobeVFPrototype.default.41,42,43,57.otf       |    Bin 0 -> 5440 bytes
+ .../AdobeVFPrototype.default.41,42,43,57.ttx       |   1536 -
+ .../AdobeVFPrototype.default.41,42,43.otf          |    Bin 0 -> 4908 bytes
+ .../AdobeVFPrototype.default.41,42,43.ttx          |   1338 -
+ .../AdobeVFPrototype.default.41,42.otf             |    Bin 0 -> 4432 bytes
+ .../AdobeVFPrototype.default.41,42.ttx             |   1201 -
+ .../AdobeVFPrototype.default.41,56,57.otf          |    Bin 0 -> 4576 bytes
+ .../AdobeVFPrototype.default.41,56,57.ttx          |   1310 -
+ .../AdobeVFPrototype.default.41.otf                |    Bin 0 -> 3728 bytes
+ .../AdobeVFPrototype.default.41.ttx                |   1000 -
+ .../AdobeVFPrototype.default.42,57.otf             |    Bin 0 -> 4564 bytes
+ .../AdobeVFPrototype.default.42,57.ttx             |   1253 -
+ .../AdobeVFPrototype.drop-hints.41,42,43,57.otf    |    Bin 0 -> 5252 bytes
+ .../AdobeVFPrototype.drop-hints.41,42,43,57.ttx    |   1500 -
+ .../AdobeVFPrototype.drop-hints.41,42,43.otf       |    Bin 0 -> 4720 bytes
+ .../AdobeVFPrototype.drop-hints.41,42,43.ttx       |   1302 -
+ .../AdobeVFPrototype.drop-hints.41,42.otf          |    Bin 0 -> 4244 bytes
+ .../AdobeVFPrototype.drop-hints.41,42.ttx          |   1165 -
+ .../AdobeVFPrototype.drop-hints.41,56,57.otf       |    Bin 0 -> 4384 bytes
+ .../AdobeVFPrototype.drop-hints.41,56,57.ttx       |   1274 -
+ .../AdobeVFPrototype.drop-hints.41.otf             |    Bin 0 -> 3540 bytes
+ .../AdobeVFPrototype.drop-hints.41.ttx             |    964 -
+ .../AdobeVFPrototype.drop-hints.42,57.otf          |    Bin 0 -> 4376 bytes
+ .../AdobeVFPrototype.drop-hints.42,57.ttx          |   1217 -
+ ...AdobeVFPrototype.keep-gdef-gpos.41,42,43,57.otf |    Bin 0 -> 5440 bytes
+ ...AdobeVFPrototype.keep-gdef-gpos.41,42,43,57.ttx |   1536 -
+ .../AdobeVFPrototype.keep-gdef-gpos.41,42,43.otf   |    Bin 0 -> 4908 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41,42,43.ttx   |   1338 -
+ .../AdobeVFPrototype.keep-gdef-gpos.41,42.otf      |    Bin 0 -> 4432 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41,42.ttx      |   1201 -
+ .../AdobeVFPrototype.keep-gdef-gpos.41,56,57.otf   |    Bin 0 -> 4576 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41,56,57.ttx   |   1310 -
+ .../AdobeVFPrototype.keep-gdef-gpos.41.otf         |    Bin 0 -> 3728 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41.ttx         |   1000 -
+ .../AdobeVFPrototype.keep-gdef-gpos.42,57.otf      |    Bin 0 -> 4564 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.42,57.ttx      |   1253 -
+ .../Roboto-Regular.default.1E00,303.ttf            |    Bin 0 -> 2524 bytes
+ .../Roboto-Regular.default.1E00,303.ttx            |   1258 -
+ .../layout.gdef/Roboto-Regular.default.303.ttf     |    Bin 0 -> 2116 bytes
+ .../layout.gdef/Roboto-Regular.default.303.ttx     |   1012 -
+ .../Roboto-Regular.default.309,20,30F.ttf          |    Bin 0 -> 2212 bytes
+ .../Roboto-Regular.default.309,20,30F.ttx          |   1054 -
+ .../layout.gdef/Roboto-Regular.default.323.ttf     |    Bin 0 -> 2008 bytes
+ .../layout.gdef/Roboto-Regular.default.323.ttx     |    949 -
+ .../Roboto-Regular.default.41,42,43.ttf            |    Bin 0 -> 2572 bytes
+ .../Roboto-Regular.default.41,42,43.ttx            |   1349 -
+ .../Roboto-Regular.drop-hints.1E00,303.ttf         |    Bin 0 -> 1380 bytes
+ .../Roboto-Regular.drop-hints.1E00,303.ttx         |    443 -
+ .../layout.gdef/Roboto-Regular.drop-hints.303.ttf  |    Bin 0 -> 1112 bytes
+ .../layout.gdef/Roboto-Regular.drop-hints.303.ttx  |    312 -
+ .../Roboto-Regular.drop-hints.309,20,30F.ttf       |    Bin 0 -> 1172 bytes
+ .../Roboto-Regular.drop-hints.309,20,30F.ttx       |    328 -
+ .../layout.gdef/Roboto-Regular.drop-hints.323.ttf  |    Bin 0 -> 1056 bytes
+ .../layout.gdef/Roboto-Regular.drop-hints.323.ttx  |    291 -
+ .../Roboto-Regular.drop-hints.41,42,43.ttf         |    Bin 0 -> 1388 bytes
+ .../Roboto-Regular.drop-hints.41,42,43.ttx         |    480 -
+ .../Roboto-Regular.keep-gdef-gpos.1E00,303.ttf     |    Bin 0 -> 2524 bytes
+ .../Roboto-Regular.keep-gdef-gpos.1E00,303.ttx     |   1258 -
+ .../Roboto-Regular.keep-gdef-gpos.303.ttf          |    Bin 0 -> 2116 bytes
+ .../Roboto-Regular.keep-gdef-gpos.303.ttx          |   1012 -
+ .../Roboto-Regular.keep-gdef-gpos.309,20,30F.ttf   |    Bin 0 -> 2212 bytes
+ .../Roboto-Regular.keep-gdef-gpos.309,20,30F.ttx   |   1054 -
+ .../Roboto-Regular.keep-gdef-gpos.323.ttf          |    Bin 0 -> 2008 bytes
+ .../Roboto-Regular.keep-gdef-gpos.323.ttx          |    949 -
+ .../Roboto-Regular.keep-gdef-gpos.41,42,43.ttf     |    Bin 0 -> 2572 bytes
+ .../Roboto-Regular.keep-gdef-gpos.41,42,43.ttx     |   1349 -
+ .../layout.gpos/gpos1_2_font.default.41,43.otf     |    Bin 0 -> 1292 bytes
+ .../layout.gpos/gpos1_2_font.default.41,43.ttx     |    275 -
+ .../layout.gpos/gpos1_2_font.default.41,46.otf     |    Bin 0 -> 1424 bytes
+ .../layout.gpos/gpos1_2_font.default.41,46.ttx     |    286 -
+ .../layout.gpos/gpos1_2_font.default.41.otf        |    Bin 0 -> 1176 bytes
+ .../layout.gpos/gpos1_2_font.default.41.ttx        |    256 -
+ .../layout.gpos/gpos1_2_font.default.42,44.otf     |    Bin 0 -> 1268 bytes
+ .../layout.gpos/gpos1_2_font.default.42,44.ttx     |    265 -
+ .../layout.gpos/gpos1_2_font.default.43,46.otf     |    Bin 0 -> 1288 bytes
+ .../layout.gpos/gpos1_2_font.default.43,46.ttx     |    275 -
+ .../gpos1_2_font.default.retain-all-codepoint.otf  |    Bin 0 -> 3604 bytes
+ .../gpos1_2_font.default.retain-all-codepoint.ttx  |   1221 -
+ .../layout.gpos/gpos1_2_font.retain-gids.41,43.otf |    Bin 0 -> 2008 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.41,43.ttx |    600 -
+ .../layout.gpos/gpos1_2_font.retain-gids.41,46.otf |    Bin 0 -> 2172 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.41,46.ttx |    626 -
+ .../layout.gpos/gpos1_2_font.retain-gids.41.otf    |    Bin 0 -> 1876 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.41.ttx    |    576 -
+ .../layout.gpos/gpos1_2_font.retain-gids.42,44.otf |    Bin 0 -> 1992 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.42,44.ttx |    595 -
+ .../layout.gpos/gpos1_2_font.retain-gids.43,46.otf |    Bin 0 -> 2036 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.43,46.ttx |    615 -
+ ...os1_2_font.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3604 bytes
+ ...os1_2_font.retain-gids.retain-all-codepoint.ttx |   1221 -
+ .../gpos2_1_font7.default.21,23,25.otf             |    Bin 0 -> 1360 bytes
+ .../gpos2_1_font7.default.21,23,25.ttx             |    287 -
+ .../layout.gpos2/gpos2_1_font7.default.21,23.otf   |    Bin 0 -> 1240 bytes
+ .../layout.gpos2/gpos2_1_font7.default.21,23.ttx   |    268 -
+ .../layout.gpos2/gpos2_1_font7.default.2E,23.otf   |    Bin 0 -> 1508 bytes
+ .../layout.gpos2/gpos2_1_font7.default.2E,23.ttx   |    291 -
+ .../gpos2_1_font7.default.41,42,43.otf             |    Bin 0 -> 1288 bytes
+ .../gpos2_1_font7.default.41,42,43.ttx             |    284 -
+ .../gpos2_1_font7.default.retain-all-codepoint.otf |    Bin 0 -> 3604 bytes
+ .../gpos2_1_font7.default.retain-all-codepoint.ttx |   1221 -
+ .../gpos2_1_font7.retain-gids.21,23,25.otf         |    Bin 0 -> 1696 bytes
+ .../gpos2_1_font7.retain-gids.21,23,25.ttx         |    457 -
+ .../gpos2_1_font7.retain-gids.21,23.otf            |    Bin 0 -> 1564 bytes
+ .../gpos2_1_font7.retain-gids.21,23.ttx            |    433 -
+ .../gpos2_1_font7.retain-gids.2E,23.otf            |    Bin 0 -> 1944 bytes
+ .../gpos2_1_font7.retain-gids.2E,23.ttx            |    511 -
+ .../gpos2_1_font7.retain-gids.41,42,43.otf         |    Bin 0 -> 1988 bytes
+ .../gpos2_1_font7.retain-gids.41,42,43.ttx         |    604 -
+ ...s2_1_font7.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3604 bytes
+ ...s2_1_font7.retain-gids.retain-all-codepoint.ttx |   1221 -
+ .../gpos2_2_font5.default.21,23,25.otf             |    Bin 0 -> 1360 bytes
+ .../gpos2_2_font5.default.21,23,25.ttx             |    287 -
+ .../layout.gpos2/gpos2_2_font5.default.21,23.otf   |    Bin 0 -> 1240 bytes
+ .../layout.gpos2/gpos2_2_font5.default.21,23.ttx   |    268 -
+ .../layout.gpos2/gpos2_2_font5.default.2E,23.otf   |    Bin 0 -> 1508 bytes
+ .../layout.gpos2/gpos2_2_font5.default.2E,23.ttx   |    291 -
+ .../gpos2_2_font5.default.41,42,43.otf             |    Bin 0 -> 1288 bytes
+ .../gpos2_2_font5.default.41,42,43.ttx             |    284 -
+ .../gpos2_2_font5.default.retain-all-codepoint.otf |    Bin 0 -> 3604 bytes
+ .../gpos2_2_font5.default.retain-all-codepoint.ttx |   1221 -
+ .../gpos2_2_font5.retain-gids.21,23,25.otf         |    Bin 0 -> 1696 bytes
+ .../gpos2_2_font5.retain-gids.21,23,25.ttx         |    457 -
+ .../gpos2_2_font5.retain-gids.21,23.otf            |    Bin 0 -> 1564 bytes
+ .../gpos2_2_font5.retain-gids.21,23.ttx            |    433 -
+ .../gpos2_2_font5.retain-gids.2E,23.otf            |    Bin 0 -> 1944 bytes
+ .../gpos2_2_font5.retain-gids.2E,23.ttx            |    511 -
+ .../gpos2_2_font5.retain-gids.41,42,43.otf         |    Bin 0 -> 1988 bytes
+ .../gpos2_2_font5.retain-gids.41,42,43.ttx         |    604 -
+ ...s2_2_font5.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3604 bytes
+ ...s2_2_font5.retain-gids.retain-all-codepoint.ttx |   1221 -
+ .../layout.gpos3/gpos3_font3.default.28,29.otf     |    Bin 0 -> 1248 bytes
+ .../layout.gpos3/gpos3_font3.default.28,29.ttx     |    276 -
+ .../layout.gpos3/gpos3_font3.default.28,2B.otf     |    Bin 0 -> 1376 bytes
+ .../layout.gpos3/gpos3_font3.default.28,2B.ttx     |    282 -
+ .../layout.gpos3/gpos3_font3.default.29,2B.otf     |    Bin 0 -> 1292 bytes
+ .../layout.gpos3/gpos3_font3.default.29,2B.ttx     |    277 -
+ .../layout.gpos3/gpos3_font3.default.41,42,43.otf  |    Bin 0 -> 1284 bytes
+ .../layout.gpos3/gpos3_font3.default.41,42,43.ttx  |    284 -
+ .../gpos3_font3.default.retain-all-codepoint.otf   |    Bin 0 -> 3636 bytes
+ .../gpos3_font3.default.retain-all-codepoint.ttx   |   1228 -
+ .../layout.gpos3/gpos3_font3.retain-gids.28,29.otf |    Bin 0 -> 1632 bytes
+ .../layout.gpos3/gpos3_font3.retain-gids.28,29.ttx |    471 -
+ .../layout.gpos3/gpos3_font3.retain-gids.28,2B.otf |    Bin 0 -> 1780 bytes
+ .../layout.gpos3/gpos3_font3.retain-gids.28,2B.ttx |    487 -
+ .../layout.gpos3/gpos3_font3.retain-gids.29,2B.otf |    Bin 0 -> 1696 bytes
+ .../layout.gpos3/gpos3_font3.retain-gids.29,2B.ttx |    482 -
+ .../gpos3_font3.retain-gids.41,42,43.otf           |    Bin 0 -> 1984 bytes
+ .../gpos3_font3.retain-gids.41,42,43.ttx           |    604 -
+ ...pos3_font3.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3636 bytes
+ ...pos3_font3.retain-gids.retain-all-codepoint.ttx |   1228 -
+ ...pos4_multiple_anchors_1.default.41,42,43,44.otf |    Bin 0 -> 1516 bytes
+ ...pos4_multiple_anchors_1.default.41,42,43,44.ttx |    304 -
+ ...pos4_multiple_anchors_1.default.41,42,43,45.otf |    Bin 0 -> 1524 bytes
+ ...pos4_multiple_anchors_1.default.41,42,43,45.ttx |    305 -
+ .../gpos4_multiple_anchors_1.default.41,42,43.otf  |    Bin 0 -> 1308 bytes
+ .../gpos4_multiple_anchors_1.default.41,42,43.ttx  |    284 -
+ .../gpos4_multiple_anchors_1.default.41,42.otf     |    Bin 0 -> 1208 bytes
+ .../gpos4_multiple_anchors_1.default.41,42.ttx     |    265 -
+ ...4_multiple_anchors_1.default.41,43,44,45,46.otf |    Bin 0 -> 1864 bytes
+ ...4_multiple_anchors_1.default.41,43,44,45,46.ttx |    336 -
+ .../gpos4_multiple_anchors_1.default.41,43,44.otf  |    Bin 0 -> 1524 bytes
+ .../gpos4_multiple_anchors_1.default.41,43,44.ttx  |    295 -
+ .../gpos4_multiple_anchors_1.default.41,43,45.otf  |    Bin 0 -> 1532 bytes
+ .../gpos4_multiple_anchors_1.default.41,43,45.ttx  |    296 -
+ .../gpos4_multiple_anchors_1.default.41,43.otf     |    Bin 0 -> 1312 bytes
+ .../gpos4_multiple_anchors_1.default.41,43.ttx     |    275 -
+ .../gpos4_multiple_anchors_1.default.41.otf        |    Bin 0 -> 1196 bytes
+ .../gpos4_multiple_anchors_1.default.41.ttx        |    256 -
+ ...iple_anchors_1.default.retain-all-codepoint.otf |    Bin 0 -> 3668 bytes
+ ...iple_anchors_1.default.retain-all-codepoint.ttx |   1233 -
+ ..._multiple_anchors_1.retain-gids.41,42,43,44.otf |    Bin 0 -> 2220 bytes
+ ..._multiple_anchors_1.retain-gids.41,42,43,44.ttx |    624 -
+ ..._multiple_anchors_1.retain-gids.41,42,43,45.otf |    Bin 0 -> 2244 bytes
+ ..._multiple_anchors_1.retain-gids.41,42,43,45.ttx |    630 -
+ ...os4_multiple_anchors_1.retain-gids.41,42,43.otf |    Bin 0 -> 2008 bytes
+ ...os4_multiple_anchors_1.retain-gids.41,42,43.ttx |    604 -
+ .../gpos4_multiple_anchors_1.retain-gids.41,42.otf |    Bin 0 -> 1912 bytes
+ .../gpos4_multiple_anchors_1.retain-gids.41,42.ttx |    585 -
+ ...ltiple_anchors_1.retain-gids.41,43,44,45,46.otf |    Bin 0 -> 2584 bytes
+ ...ltiple_anchors_1.retain-gids.41,43,44,45,46.ttx |    661 -
+ ...os4_multiple_anchors_1.retain-gids.41,43,44.otf |    Bin 0 -> 2240 bytes
+ ...os4_multiple_anchors_1.retain-gids.41,43,44.ttx |    620 -
+ ...os4_multiple_anchors_1.retain-gids.41,43,45.otf |    Bin 0 -> 2260 bytes
+ ...os4_multiple_anchors_1.retain-gids.41,43,45.ttx |    626 -
+ .../gpos4_multiple_anchors_1.retain-gids.41,43.otf |    Bin 0 -> 2028 bytes
+ .../gpos4_multiple_anchors_1.retain-gids.41,43.ttx |    600 -
+ .../gpos4_multiple_anchors_1.retain-gids.41.otf    |    Bin 0 -> 1896 bytes
+ .../gpos4_multiple_anchors_1.retain-gids.41.ttx    |    576 -
+ ..._anchors_1.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3668 bytes
+ ..._anchors_1.retain-gids.retain-all-codepoint.ttx |   1233 -
+ .../gpos5_font1.default.41,42,43,44.otf            |    Bin 0 -> 1536 bytes
+ .../gpos5_font1.default.41,42,43,44.ttx            |    323 -
+ .../gpos5_font1.default.41,42,43,45.otf            |    Bin 0 -> 1544 bytes
+ .../gpos5_font1.default.41,42,43,45.ttx            |    324 -
+ .../layout.gpos5/gpos5_font1.default.41,42,43.otf  |    Bin 0 -> 1328 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42,43.ttx  |    303 -
+ .../layout.gpos5/gpos5_font1.default.41,42,44.otf  |    Bin 0 -> 1460 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42,44.ttx  |    304 -
+ .../layout.gpos5/gpos5_font1.default.41,42,45.otf  |    Bin 0 -> 1448 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42,45.ttx  |    305 -
+ .../layout.gpos5/gpos5_font1.default.41,42.otf     |    Bin 0 -> 1228 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42.ttx     |    284 -
+ .../layout.gpos5/gpos5_font1.default.41,43.otf     |    Bin 0 -> 1332 bytes
+ .../layout.gpos5/gpos5_font1.default.41,43.ttx     |    294 -
+ .../layout.gpos5/gpos5_font1.default.41.otf        |    Bin 0 -> 1216 bytes
+ .../layout.gpos5/gpos5_font1.default.41.ttx        |    275 -
+ .../layout.gpos5/gpos5_font1.default.42.otf        |    Bin 0 -> 1076 bytes
+ .../layout.gpos5/gpos5_font1.default.42.ttx        |    264 -
+ .../gpos5_font1.default.retain-all-codepoint.otf   |    Bin 0 -> 3688 bytes
+ .../gpos5_font1.default.retain-all-codepoint.ttx   |   1250 -
+ .../gpos5_font1.retain-gids.41,42,43,44.otf        |    Bin 0 -> 2240 bytes
+ .../gpos5_font1.retain-gids.41,42,43,44.ttx        |    643 -
+ .../gpos5_font1.retain-gids.41,42,43,45.otf        |    Bin 0 -> 2264 bytes
+ .../gpos5_font1.retain-gids.41,42,43,45.ttx        |    649 -
+ .../gpos5_font1.retain-gids.41,42,43.otf           |    Bin 0 -> 2028 bytes
+ .../gpos5_font1.retain-gids.41,42,43.ttx           |    623 -
+ .../gpos5_font1.retain-gids.41,42,44.otf           |    Bin 0 -> 2176 bytes
+ .../gpos5_font1.retain-gids.41,42,44.ttx           |    629 -
+ .../gpos5_font1.retain-gids.41,42,45.otf           |    Bin 0 -> 2172 bytes
+ .../gpos5_font1.retain-gids.41,42,45.ttx           |    635 -
+ .../layout.gpos5/gpos5_font1.retain-gids.41,42.otf |    Bin 0 -> 1932 bytes
+ .../layout.gpos5/gpos5_font1.retain-gids.41,42.ttx |    604 -
+ .../layout.gpos5/gpos5_font1.retain-gids.41,43.otf |    Bin 0 -> 2048 bytes
+ .../layout.gpos5/gpos5_font1.retain-gids.41,43.ttx |    619 -
+ .../layout.gpos5/gpos5_font1.retain-gids.41.otf    |    Bin 0 -> 1916 bytes
+ .../layout.gpos5/gpos5_font1.retain-gids.41.ttx    |    595 -
+ .../layout.gpos5/gpos5_font1.retain-gids.42.otf    |    Bin 0 -> 1788 bytes
+ .../layout.gpos5/gpos5_font1.retain-gids.42.ttx    |    589 -
+ ...pos5_font1.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3688 bytes
+ ...pos5_font1.retain-gids.retain-all-codepoint.ttx |   1250 -
+ .../gpos6_font1.default.41,42,43,44.otf            |    Bin 0 -> 1492 bytes
+ .../gpos6_font1.default.41,42,43,44.ttx            |    304 -
+ .../gpos6_font1.default.41,42,43,45.otf            |    Bin 0 -> 1500 bytes
+ .../gpos6_font1.default.41,42,43,45.ttx            |    305 -
+ .../layout.gpos6/gpos6_font1.default.41,42,43.otf  |    Bin 0 -> 1284 bytes
+ .../layout.gpos6/gpos6_font1.default.41,42,43.ttx  |    284 -
+ .../layout.gpos6/gpos6_font1.default.41,42.otf     |    Bin 0 -> 1184 bytes
+ .../layout.gpos6/gpos6_font1.default.41,42.ttx     |    265 -
+ .../gpos6_font1.default.41,43,44,45,46.otf         |    Bin 0 -> 1840 bytes
+ .../gpos6_font1.default.41,43,44,45,46.ttx         |    336 -
+ .../layout.gpos6/gpos6_font1.default.41,43,44.otf  |    Bin 0 -> 1500 bytes
+ .../layout.gpos6/gpos6_font1.default.41,43,44.ttx  |    295 -
+ .../layout.gpos6/gpos6_font1.default.41,43,45.otf  |    Bin 0 -> 1508 bytes
+ .../layout.gpos6/gpos6_font1.default.41,43,45.ttx  |    296 -
+ .../layout.gpos6/gpos6_font1.default.41,43.otf     |    Bin 0 -> 1288 bytes
+ .../layout.gpos6/gpos6_font1.default.41,43.ttx     |    275 -
+ .../layout.gpos6/gpos6_font1.default.41.otf        |    Bin 0 -> 1172 bytes
+ .../layout.gpos6/gpos6_font1.default.41.ttx        |    256 -
+ .../gpos6_font1.default.retain-all-codepoint.otf   |    Bin 0 -> 3644 bytes
+ .../gpos6_font1.default.retain-all-codepoint.ttx   |   1231 -
+ .../gpos6_font1.retain-gids.41,42,43,44.otf        |    Bin 0 -> 2196 bytes
+ .../gpos6_font1.retain-gids.41,42,43,44.ttx        |    624 -
+ .../gpos6_font1.retain-gids.41,42,43,45.otf        |    Bin 0 -> 2220 bytes
+ .../gpos6_font1.retain-gids.41,42,43,45.ttx        |    630 -
+ .../gpos6_font1.retain-gids.41,42,43.otf           |    Bin 0 -> 1984 bytes
+ .../gpos6_font1.retain-gids.41,42,43.ttx           |    604 -
+ .../layout.gpos6/gpos6_font1.retain-gids.41,42.otf |    Bin 0 -> 1888 bytes
+ .../layout.gpos6/gpos6_font1.retain-gids.41,42.ttx |    585 -
+ .../gpos6_font1.retain-gids.41,43,44,45,46.otf     |    Bin 0 -> 2560 bytes
+ .../gpos6_font1.retain-gids.41,43,44,45,46.ttx     |    661 -
+ .../gpos6_font1.retain-gids.41,43,44.otf           |    Bin 0 -> 2216 bytes
+ .../gpos6_font1.retain-gids.41,43,44.ttx           |    620 -
+ .../gpos6_font1.retain-gids.41,43,45.otf           |    Bin 0 -> 2236 bytes
+ .../gpos6_font1.retain-gids.41,43,45.ttx           |    626 -
+ .../layout.gpos6/gpos6_font1.retain-gids.41,43.otf |    Bin 0 -> 2004 bytes
+ .../layout.gpos6/gpos6_font1.retain-gids.41,43.ttx |    600 -
+ .../layout.gpos6/gpos6_font1.retain-gids.41.otf    |    Bin 0 -> 1872 bytes
+ .../layout.gpos6/gpos6_font1.retain-gids.41.ttx    |    576 -
+ ...pos6_font1.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3644 bytes
+ ...pos6_font1.retain-gids.retain-all-codepoint.ttx |   1231 -
+ ...ular.default.627,644,623,62D,644,627,645,2E.ttf |    Bin 0 -> 12684 bytes
+ ...ular.default.627,644,623,62D,644,627,645,2E.ttx |   4529 -
+ .../Amiri-Regular.default.627,644,62D,628.ttf      |    Bin 0 -> 9992 bytes
+ .../Amiri-Regular.default.627,644,62D,628.ttx      |   3537 -
+ .../Amiri-Regular.default.627,644.ttf              |    Bin 0 -> 4168 bytes
+ .../Amiri-Regular.default.627,644.ttx              |   1383 -
+ ...-Regular.default.633,645,627,621,20,644,627.ttf |    Bin 0 -> 9516 bytes
+ ...-Regular.default.633,645,627,621,20,644,627.ttx |   3371 -
+ .../Amiri-Regular.default.63A,64A,631.ttf          |    Bin 0 -> 7324 bytes
+ .../Amiri-Regular.default.63A,64A,631.ttx          |   2587 -
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttf |    Bin 0 -> 48012 bytes
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttx |  28725 ----
+ .../Amiri-Regular.retain-gids.627,644,62D,628.ttf  |    Bin 0 -> 42640 bytes
+ .../Amiri-Regular.retain-gids.627,644,62D,628.ttx  |  25101 ----
+ .../Amiri-Regular.retain-gids.627,644.ttf          |    Bin 0 -> 36696 bytes
+ .../Amiri-Regular.retain-gids.627,644.ttx          |  23003 ---
+ ...ular.retain-gids.633,645,627,621,20,644,627.ttf |    Bin 0 -> 45908 bytes
+ ...ular.retain-gids.633,645,627,621,20,644,627.ttx |  27759 ----
+ .../Amiri-Regular.retain-gids.63A,64A,631.ttf      |    Bin 0 -> 37988 bytes
+ .../Amiri-Regular.retain-gids.63A,64A,631.ttx      |  22911 ---
+ ...g1_multiple_subrules_f1.default.30,31,32,33.otf |    Bin 0 -> 1840 bytes
+ ...g1_multiple_subrules_f1.default.30,31,32,33.ttx |    328 -
+ ...ning1_multiple_subrules_f1.default.41,42,43.otf |    Bin 0 -> 1332 bytes
+ ...ning1_multiple_subrules_f1.default.41,42,43.ttx |    284 -
+ ...le_subrules_f1.default.retain-all-codepoint.otf |    Bin 0 -> 3704 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.ttx |   1247 -
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf |    Bin 0 -> 2304 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.ttx |    563 -
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.otf |    Bin 0 -> 2032 bytes
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.ttx |    604 -
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3704 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.ttx |   1247 -
+ ...g2_multiple_subrules_f1.default.30,31,32,33.otf |    Bin 0 -> 1840 bytes
+ ...g2_multiple_subrules_f1.default.30,31,32,33.ttx |    328 -
+ ...ning2_multiple_subrules_f1.default.41,42,43.otf |    Bin 0 -> 1332 bytes
+ ...ning2_multiple_subrules_f1.default.41,42,43.ttx |    284 -
+ ...le_subrules_f1.default.retain-all-codepoint.otf |    Bin 0 -> 3704 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.ttx |   1247 -
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf |    Bin 0 -> 2304 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.ttx |    563 -
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.otf |    Bin 0 -> 2032 bytes
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.ttx |    604 -
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3704 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.ttx |   1247 -
+ ...pos_chaining3_simple_f1.default.30,31,32,33.otf |    Bin 0 -> 1816 bytes
+ ...pos_chaining3_simple_f1.default.30,31,32,33.ttx |    328 -
+ .../gpos_chaining3_simple_f1.default.41,42,43.otf  |    Bin 0 -> 1308 bytes
+ .../gpos_chaining3_simple_f1.default.41,42,43.ttx  |    284 -
+ ...ing3_simple_f1.default.retain-all-codepoint.otf |    Bin 0 -> 3680 bytes
+ ...ing3_simple_f1.default.retain-all-codepoint.ttx |   1247 -
+ ...chaining3_simple_f1.retain-gids.30,31,32,33.otf |    Bin 0 -> 2280 bytes
+ ...chaining3_simple_f1.retain-gids.30,31,32,33.ttx |    563 -
+ ...os_chaining3_simple_f1.retain-gids.41,42,43.otf |    Bin 0 -> 2008 bytes
+ ...os_chaining3_simple_f1.retain-gids.41,42,43.ttx |    604 -
+ ..._simple_f1.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3680 bytes
+ ..._simple_f1.retain-gids.retain-all-codepoint.ttx |   1247 -
+ .../layout.gpos9/gpos9_font2.default.41,42.otf     |    Bin 0 -> 1184 bytes
+ .../layout.gpos9/gpos9_font2.default.41,42.ttx     |    265 -
+ .../layout.gpos9/gpos9_font2.default.41.otf        |    Bin 0 -> 1172 bytes
+ .../layout.gpos9/gpos9_font2.default.41.ttx        |    256 -
+ .../layout.gpos9/gpos9_font2.default.42.otf        |    Bin 0 -> 1032 bytes
+ .../layout.gpos9/gpos9_font2.default.42.ttx        |    245 -
+ .../layout.gpos9/gpos9_font2.retain-gids.41,42.otf |    Bin 0 -> 1888 bytes
+ .../layout.gpos9/gpos9_font2.retain-gids.41,42.ttx |    585 -
+ .../layout.gpos9/gpos9_font2.retain-gids.41.otf    |    Bin 0 -> 1872 bytes
+ .../layout.gpos9/gpos9_font2.retain-gids.41.ttx    |    576 -
+ .../layout.gpos9/gpos9_font2.retain-gids.42.otf    |    Bin 0 -> 1744 bytes
+ .../layout.gpos9/gpos9_font2.retain-gids.42.ttx    |    570 -
+ ...ub_alternate_substitution.default.53A9,53F1.otf |    Bin 0 -> 4348 bytes
+ ...ub_alternate_substitution.default.53A9,53F1.ttx |   1009 -
+ .../gsub_alternate_substitution.default.53A9.otf   |    Bin 0 -> 3904 bytes
+ .../gsub_alternate_substitution.default.53A9.ttx   |    924 -
+ .../gsub_alternate_substitution.default.53F1.otf   |    Bin 0 -> 2452 bytes
+ .../gsub_alternate_substitution.default.53F1.ttx   |    638 -
+ ...e_substitution.default.retain-all-codepoint.otf |    Bin 0 -> 6040 bytes
+ ...e_substitution.default.retain-all-codepoint.ttx |   1387 -
+ ...lternate_substitution.retain-gids.53A9,53F1.otf |    Bin 0 -> 4472 bytes
+ ...lternate_substitution.retain-gids.53A9,53F1.ttx |   1063 -
+ ...sub_alternate_substitution.retain-gids.53A9.otf |    Bin 0 -> 4056 bytes
+ ...sub_alternate_substitution.retain-gids.53A9.ttx |    990 -
+ ...sub_alternate_substitution.retain-gids.53F1.otf |    Bin 0 -> 2648 bytes
+ ...sub_alternate_substitution.retain-gids.53F1.ttx |    728 -
+ ...bstitution.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 6132 bytes
+ ...bstitution.retain-gids.retain-all-codepoint.ttx |   1423 -
+ ...text1_multiple_subrules_f2.default.41,42,43.otf |    Bin 0 -> 1340 bytes
+ ...text1_multiple_subrules_f2.default.41,42,43.ttx |    290 -
+ ...context1_multiple_subrules_f2.default.41,42.otf |    Bin 0 -> 1240 bytes
+ ...context1_multiple_subrules_f2.default.41,42.ttx |    271 -
+ ...context1_multiple_subrules_f2.default.41,43.otf |    Bin 0 -> 1344 bytes
+ ...context1_multiple_subrules_f2.default.41,43.ttx |    281 -
+ ...ub_context1_multiple_subrules_f2.default.41.otf |    Bin 0 -> 1228 bytes
+ ...ub_context1_multiple_subrules_f2.default.41.ttx |    262 -
+ ...le_subrules_f2.default.retain-all-codepoint.otf |    Bin 0 -> 3712 bytes
+ ...le_subrules_f2.default.retain-all-codepoint.ttx |   1253 -
+ ...1_multiple_subrules_f2.retain-gids.41,42,43.otf |    Bin 0 -> 2040 bytes
+ ...1_multiple_subrules_f2.retain-gids.41,42,43.ttx |    610 -
+ ...ext1_multiple_subrules_f2.retain-gids.41,42.otf |    Bin 0 -> 1944 bytes
+ ...ext1_multiple_subrules_f2.retain-gids.41,42.ttx |    591 -
+ ...ext1_multiple_subrules_f2.retain-gids.41,43.otf |    Bin 0 -> 2060 bytes
+ ...ext1_multiple_subrules_f2.retain-gids.41,43.ttx |    606 -
+ ...ontext1_multiple_subrules_f2.retain-gids.41.otf |    Bin 0 -> 1928 bytes
+ ...ontext1_multiple_subrules_f2.retain-gids.41.ttx |    582 -
+ ...ubrules_f2.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3712 bytes
+ ...ubrules_f2.retain-gids.retain-all-codepoint.ttx |   1253 -
+ ...text2_multiple_subrules_f2.default.41,42,43.otf |    Bin 0 -> 1340 bytes
+ ...text2_multiple_subrules_f2.default.41,42,43.ttx |    290 -
+ ...context2_multiple_subrules_f2.default.41,42.otf |    Bin 0 -> 1240 bytes
+ ...context2_multiple_subrules_f2.default.41,42.ttx |    271 -
+ ...context2_multiple_subrules_f2.default.41,43.otf |    Bin 0 -> 1344 bytes
+ ...context2_multiple_subrules_f2.default.41,43.ttx |    281 -
+ ...ub_context2_multiple_subrules_f2.default.41.otf |    Bin 0 -> 1228 bytes
+ ...ub_context2_multiple_subrules_f2.default.41.ttx |    262 -
+ ...le_subrules_f2.default.retain-all-codepoint.otf |    Bin 0 -> 3712 bytes
+ ...le_subrules_f2.default.retain-all-codepoint.ttx |   1253 -
+ ...2_multiple_subrules_f2.retain-gids.41,42,43.otf |    Bin 0 -> 2040 bytes
+ ...2_multiple_subrules_f2.retain-gids.41,42,43.ttx |    610 -
+ ...ext2_multiple_subrules_f2.retain-gids.41,42.otf |    Bin 0 -> 1944 bytes
+ ...ext2_multiple_subrules_f2.retain-gids.41,42.ttx |    591 -
+ ...ext2_multiple_subrules_f2.retain-gids.41,43.otf |    Bin 0 -> 2060 bytes
+ ...ext2_multiple_subrules_f2.retain-gids.41,43.ttx |    606 -
+ ...ontext2_multiple_subrules_f2.retain-gids.41.otf |    Bin 0 -> 1928 bytes
+ ...ontext2_multiple_subrules_f2.retain-gids.41.ttx |    582 -
+ ...ubrules_f2.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3712 bytes
+ ...ubrules_f2.retain-gids.retain-all-codepoint.ttx |   1253 -
+ ...sub_context3_successive_f1.default.41,42,43.otf |    Bin 0 -> 1328 bytes
+ ...sub_context3_successive_f1.default.41,42,43.ttx |    290 -
+ .../gsub_context3_successive_f1.default.41,42.otf  |    Bin 0 -> 1228 bytes
+ .../gsub_context3_successive_f1.default.41,42.ttx  |    271 -
+ .../gsub_context3_successive_f1.default.41,43.otf  |    Bin 0 -> 1332 bytes
+ .../gsub_context3_successive_f1.default.41,43.ttx  |    281 -
+ .../gsub_context3_successive_f1.default.41.otf     |    Bin 0 -> 1216 bytes
+ .../gsub_context3_successive_f1.default.41.ttx     |    262 -
+ ..._successive_f1.default.retain-all-codepoint.otf |    Bin 0 -> 3700 bytes
+ ..._successive_f1.default.retain-all-codepoint.ttx |   1253 -
+ ...context3_successive_f1.retain-gids.41,42,43.otf |    Bin 0 -> 2028 bytes
+ ...context3_successive_f1.retain-gids.41,42,43.ttx |    610 -
+ ...ub_context3_successive_f1.retain-gids.41,42.otf |    Bin 0 -> 1932 bytes
+ ...ub_context3_successive_f1.retain-gids.41,42.ttx |    591 -
+ ...ub_context3_successive_f1.retain-gids.41,43.otf |    Bin 0 -> 2048 bytes
+ ...ub_context3_successive_f1.retain-gids.41,43.ttx |    606 -
+ .../gsub_context3_successive_f1.retain-gids.41.otf |    Bin 0 -> 1916 bytes
+ .../gsub_context3_successive_f1.retain-gids.41.ttx |    582 -
+ ...cessive_f1.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3700 bytes
+ ...cessive_f1.retain-gids.retain-all-codepoint.ttx |   1253 -
+ ...g1_multiple_subrules_f1.default.30,31,32,33.otf |    Bin 0 -> 1852 bytes
+ ...g1_multiple_subrules_f1.default.30,31,32,33.ttx |    334 -
+ ...ning1_multiple_subrules_f1.default.41,42,43.otf |    Bin 0 -> 1344 bytes
+ ...ning1_multiple_subrules_f1.default.41,42,43.ttx |    290 -
+ ...le_subrules_f1.default.retain-all-codepoint.otf |    Bin 0 -> 3716 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.ttx |   1253 -
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf |    Bin 0 -> 2316 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.ttx |    569 -
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.otf |    Bin 0 -> 2044 bytes
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.ttx |    610 -
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3716 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.ttx |   1253 -
+ ...g2_multiple_subrules_f1.default.30,31,32,33.otf |    Bin 0 -> 1852 bytes
+ ...g2_multiple_subrules_f1.default.30,31,32,33.ttx |    334 -
+ ...ning2_multiple_subrules_f1.default.41,42,43.otf |    Bin 0 -> 1344 bytes
+ ...ning2_multiple_subrules_f1.default.41,42,43.ttx |    290 -
+ ...le_subrules_f1.default.retain-all-codepoint.otf |    Bin 0 -> 3716 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.ttx |   1253 -
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf |    Bin 0 -> 2316 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.ttx |    569 -
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.otf |    Bin 0 -> 2044 bytes
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.ttx |    610 -
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3716 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.ttx |   1253 -
+ ...sub_chaining3_simple_f2.default.30,31,32,33.otf |    Bin 0 -> 1828 bytes
+ ...sub_chaining3_simple_f2.default.30,31,32,33.ttx |    334 -
+ .../gsub_chaining3_simple_f2.default.41,42,43.otf  |    Bin 0 -> 1320 bytes
+ .../gsub_chaining3_simple_f2.default.41,42,43.ttx  |    290 -
+ ...ing3_simple_f2.default.retain-all-codepoint.otf |    Bin 0 -> 3692 bytes
+ ...ing3_simple_f2.default.retain-all-codepoint.ttx |   1253 -
+ ...chaining3_simple_f2.retain-gids.30,31,32,33.otf |    Bin 0 -> 2292 bytes
+ ...chaining3_simple_f2.retain-gids.30,31,32,33.ttx |    569 -
+ ...ub_chaining3_simple_f2.retain-gids.41,42,43.otf |    Bin 0 -> 2020 bytes
+ ...ub_chaining3_simple_f2.retain-gids.41,42,43.ttx |    610 -
+ ..._simple_f2.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3692 bytes
+ ..._simple_f2.retain-gids.retain-all-codepoint.ttx |   1253 -
+ ..._created.default.41,42,43,44,45,46,47,48,49.otf |    Bin 0 -> 2176 bytes
+ ..._created.default.41,42,43,44,45,46,47,48,49.ttx |    392 -
+ ...nually_created.default.41,42,43,44,45,46,47.otf |    Bin 0 -> 1888 bytes
+ ...nually_created.default.41,42,43,44,45,46,47.ttx |    357 -
+ ...nually_created.default.41,42,43,44,45,46,4D.otf |    Bin 0 -> 1852 bytes
+ ...nually_created.default.41,42,43,44,45,46,4D.ttx |    351 -
+ ...nually_created.default.41,42,43,44,45,46,51.otf |    Bin 0 -> 1932 bytes
+ ...nually_created.default.41,42,43,44,45,46,51.ttx |    364 -
+ ..._manually_created.default.41,42,43,44,45,46.otf |    Bin 0 -> 1832 bytes
+ ..._manually_created.default.41,42,43,44,45,46.ttx |    343 -
+ .../gsub8_manually_created.default.41,42,43.otf    |    Bin 0 -> 1284 bytes
+ .../gsub8_manually_created.default.41,42,43.ttx    |    285 -
+ .../gsub8_manually_created.default.41.otf          |    Bin 0 -> 1172 bytes
+ .../gsub8_manually_created.default.41.ttx          |    259 -
+ .../gsub8_manually_created.default.61.otf          |    Bin 0 -> 1224 bytes
+ .../gsub8_manually_created.default.61.ttx          |    268 -
+ ...nually_created.default.retain-all-codepoint.otf |    Bin 0 -> 3656 bytes
+ ...nually_created.default.retain-all-codepoint.ttx |   1152 -
+ ...ated.retain-gids.41,42,43,44,45,46,47,48,49.otf |    Bin 0 -> 2884 bytes
+ ...ated.retain-gids.41,42,43,44,45,46,47,48,49.ttx |    712 -
+ ...ly_created.retain-gids.41,42,43,44,45,46,47.otf |    Bin 0 -> 2596 bytes
+ ...ly_created.retain-gids.41,42,43,44,45,46,47.ttx |    677 -
+ ...ly_created.retain-gids.41,42,43,44,45,46,4D.otf |    Bin 0 -> 2636 bytes
+ ...ly_created.retain-gids.41,42,43,44,45,46,4D.ttx |    701 -
+ ...ly_created.retain-gids.41,42,43,44,45,46,51.otf |    Bin 0 -> 2760 bytes
+ ...ly_created.retain-gids.41,42,43,44,45,46,51.ttx |    734 -
+ ...ually_created.retain-gids.41,42,43,44,45,46.otf |    Bin 0 -> 2540 bytes
+ ...ually_created.retain-gids.41,42,43,44,45,46.ttx |    663 -
+ ...gsub8_manually_created.retain-gids.41,42,43.otf |    Bin 0 -> 1984 bytes
+ ...gsub8_manually_created.retain-gids.41,42,43.ttx |    605 -
+ .../gsub8_manually_created.retain-gids.41.otf      |    Bin 0 -> 1872 bytes
+ .../gsub8_manually_created.retain-gids.41.ttx      |    579 -
+ .../gsub8_manually_created.retain-gids.61.otf      |    Bin 0 -> 2276 bytes
+ .../gsub8_manually_created.retain-gids.61.ttx      |    748 -
+ ...ly_created.retain-gids.retain-all-codepoint.otf |    Bin 0 -> 3656 bytes
+ ...ly_created.retain-gids.retain-all-codepoint.ttx |   1152 -
+ .../expected/layout.khmer/Khmer.default.1780.ttf   |    Bin 0 -> 4204 bytes
+ .../expected/layout.khmer/Khmer.default.1780.ttx   |   2504 -
+ ...ult.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf |    Bin 0 -> 6412 bytes
+ ...ult.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttx |   3406 -
+ .../expected/layout.khmer/Khmer.default.31.ttf     |    Bin 0 -> 4140 bytes
+ .../expected/layout.khmer/Khmer.default.31.ttx     |   2486 -
+ .../layout.khmer/Khmer.retain-gids.1780.ttf        |    Bin 0 -> 4464 bytes
+ .../layout.khmer/Khmer.retain-gids.1780.ttx        |   2676 -
+ ...ids.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf |    Bin 0 -> 7848 bytes
+ ...ids.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttx |   4310 -
+ .../expected/layout.khmer/Khmer.retain-gids.31.ttf |    Bin 0 -> 4256 bytes
+ .../expected/layout.khmer/Khmer.retain-gids.31.ttx |   2562 -
+ ...Bold.default.627,644,623,62D,644,627,645,2E.ttf |    Bin 0 -> 11396 bytes
+ ...Bold.default.627,644,623,62D,644,627,645,2E.ttx |   4986 -
+ ...toNastaliqUrdu-Bold.default.627,644,62D,628.ttf |    Bin 0 -> 18248 bytes
+ ...toNastaliqUrdu-Bold.default.627,644,62D,628.ttx |   9792 --
+ .../NotoNastaliqUrdu-Bold.default.627,644.ttf      |    Bin 0 -> 3528 bytes
+ .../NotoNastaliqUrdu-Bold.default.627,644.ttx      |   1326 -
+ ...rdu-Bold.default.633,645,627,621,20,644,627.ttf |    Bin 0 -> 12368 bytes
+ ...rdu-Bold.default.633,645,627,621,20,644,627.ttx |   5279 -
+ .../NotoNastaliqUrdu-Bold.default.63A,64A,631.ttf  |    Bin 0 -> 20368 bytes
+ .../NotoNastaliqUrdu-Bold.default.63A,64A,631.ttx  |  10363 --
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttf |    Bin 0 -> 18232 bytes
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttx |   9170 --
+ ...staliqUrdu-Bold.retain-gids.627,644,62D,628.ttf |    Bin 0 -> 24376 bytes
+ ...staliqUrdu-Bold.retain-gids.627,644,62D,628.ttx |  13452 --
+ .../NotoNastaliqUrdu-Bold.retain-gids.627,644.ttf  |    Bin 0 -> 9176 bytes
+ .../NotoNastaliqUrdu-Bold.retain-gids.627,644.ttx  |   5158 -
+ ...Bold.retain-gids.633,645,627,621,20,644,627.ttf |    Bin 0 -> 18172 bytes
+ ...Bold.retain-gids.633,645,627,621,20,644,627.ttx |   8915 --
+ ...toNastaliqUrdu-Bold.retain-gids.63A,64A,631.ttf |    Bin 0 -> 26588 bytes
+ ...toNastaliqUrdu-Bold.retain-gids.63A,64A,631.ttx |  14027 --
+ .../Roboto-Regular.smallcaps.default.41,42,43.ttf  |    Bin 0 -> 2464 bytes
+ .../Roboto-Regular.smallcaps.default.41,42,43.ttx  |   1251 -
+ .../Roboto-Regular.smallcaps.default.41,43.ttf     |    Bin 0 -> 2284 bytes
+ .../Roboto-Regular.smallcaps.default.41,43.ttx     |   1120 -
+ .../layout/Roboto-Regular.smallcaps.default.41.ttf |    Bin 0 -> 2084 bytes
+ .../layout/Roboto-Regular.smallcaps.default.41.ttx |   1008 -
+ .../layout/Roboto-Regular.smallcaps.default.43.ttf |    Bin 0 -> 2116 bytes
+ .../layout/Roboto-Regular.smallcaps.default.43.ttx |   1017 -
+ .../Roboto-Regular.smallcaps.default.CA,CB.ttf     |    Bin 0 -> 2388 bytes
+ .../Roboto-Regular.smallcaps.default.CA,CB.ttx     |   1200 -
+ ...boto-Regular.smallcaps.retain-gids.41,42,43.ttf |    Bin 0 -> 2716 bytes
+ ...boto-Regular.smallcaps.retain-gids.41,42,43.ttx |   1431 -
+ .../Roboto-Regular.smallcaps.retain-gids.41,43.ttf |    Bin 0 -> 2548 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.41,43.ttx |   1305 -
+ .../Roboto-Regular.smallcaps.retain-gids.41.ttf    |    Bin 0 -> 2336 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.41.ttx    |   1188 -
+ .../Roboto-Regular.smallcaps.retain-gids.43.ttf    |    Bin 0 -> 2384 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.43.ttx    |   1207 -
+ .../Roboto-Regular.smallcaps.retain-gids.CA,CB.ttf |    Bin 0 -> 6476 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.CA,CB.ttx |   4120 -
+ .../data/expected/sbix/sbix.default.58,59.ttf      |    Bin 0 -> 193528 bytes
+ .../data/expected/sbix/sbix.default.58,59.ttx      |  12367 --
+ test/subset/data/expected/sbix/sbix.default.58.ttf |    Bin 0 -> 121168 bytes
+ test/subset/data/expected/sbix/sbix.default.58.ttx |   7801 -
+ test/subset/data/expected/sbix/sbix.default.59.ttf |    Bin 0 -> 89364 bytes
+ test/subset/data/expected/sbix/sbix.default.59.ttx |   5813 -
+ .../sbix/sbix.drop-hints-retain-gids.58,59.ttf     |    Bin 0 -> 193528 bytes
+ .../sbix/sbix.drop-hints-retain-gids.58,59.ttx     |  12367 --
+ .../sbix/sbix.drop-hints-retain-gids.58.ttf        |    Bin 0 -> 121168 bytes
+ .../sbix/sbix.drop-hints-retain-gids.58.ttx        |   7801 -
+ .../sbix/sbix.drop-hints-retain-gids.59.ttf        |    Bin 0 -> 89404 bytes
+ .../sbix/sbix.drop-hints-retain-gids.59.ttx        |   5826 -
+ .../data/expected/sbix/sbix.drop-hints.58,59.ttf   |    Bin 0 -> 193528 bytes
+ .../data/expected/sbix/sbix.drop-hints.58,59.ttx   |  12367 --
+ .../data/expected/sbix/sbix.drop-hints.58.ttf      |    Bin 0 -> 121168 bytes
+ .../data/expected/sbix/sbix.drop-hints.58.ttx      |   7801 -
+ .../data/expected/sbix/sbix.drop-hints.59.ttf      |    Bin 0 -> 89364 bytes
+ .../data/expected/sbix/sbix.drop-hints.59.ttx      |   5813 -
+ .../data/expected/sbix/sbix.retain-gids.58,59.ttf  |    Bin 0 -> 193528 bytes
+ .../data/expected/sbix/sbix.retain-gids.58,59.ttx  |  12367 --
+ .../data/expected/sbix/sbix.retain-gids.58.ttf     |    Bin 0 -> 121168 bytes
+ .../data/expected/sbix/sbix.retain-gids.58.ttx     |   7801 -
+ .../data/expected/sbix/sbix.retain-gids.59.ttf     |    Bin 0 -> 89404 bytes
+ .../data/expected/sbix/sbix.retain-gids.59.ttx     |   5826 -
+ .../variable/Fraunces.default.26,66,69,124,125.ttf |    Bin 0 -> 15792 bytes
+ .../variable/Fraunces.default.26,66,69,124,125.ttx |   6907 -
+ .../data/expected/variable/Fraunces.default.61.ttf |    Bin 0 -> 4228 bytes
+ .../data/expected/variable/Fraunces.default.61.ttx |   1427 -
+ test/subset/generate-expected-outputs.py           |      1 -
+ test/subset/run-tests.py                           |     29 +-
+ test/subset/subset_test_suite.py                   |     18 +-
+ 1945 files changed, 23 insertions(+), 3999130 deletions(-)
+
+commit 62a535f154a9453c7d16c669094c254666a6caac
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Aug 3 10:11:27 2021 -0600
+
+    [khmer] Fix comment
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/3104
+
+ src/hb-ot-shape-complex-indic.cc   | 7 ++++---
+ src/hb-ot-shape-complex-khmer.cc   | 3 ++-
+ src/hb-ot-shape-complex-myanmar.cc | 3 ++-
+ src/hb-ot-shape-complex-use.cc     | 3 ++-
+ 4 files changed, 10 insertions(+), 6 deletions(-)
+
+commit 2cc9ed2b9e3de9e162e9d127edce377f059fd56b
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Mon Aug 2 22:00:11 2021 +0200
+
+    [test] More lookup_collect_glyphs() tests
+
+ test/api/test-ot-collect-glyphs.c | 95 +++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 95 insertions(+)
+
+commit 06640374016f1e78d1fbfa8c5e7b09f8b04a44cc
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Mon Aug 2 19:52:59 2021 +0200
+
+    [test] More lookup_collect_glyphs() tests
+
+ test/api/test-ot-collect-glyphs.c | 66 +++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 66 insertions(+)
+
+commit ecdd8e3f18700113032a88cdfdc94bcf55e08542
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Mon Aug 2 19:36:20 2021 +0200
+
+    [test] More lookup_collect_glyphs() tests
+
+ test/api/fonts/Qahiri-Regular.ttf | Bin 0 -> 35984 bytes
+ test/api/test-ot-collect-glyphs.c | 122 ++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 122 insertions(+)
+
+commit f998d7e1ceee3c797104e90cc25caeff56407745
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Mon Aug 2 16:10:13 2021 +0200
+
+    [test] Add API test for lookup_collect_glyphs()
+    
+    We don’t seem to have any tests exercising this API at all, and it is a
+    good check of GSUB/GPOS code.
+
+ test/api/Makefile.am              |   1 +
+ test/api/meson.build              |   1 +
+ test/api/test-ot-collect-glyphs.c | 209 ++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 211 insertions(+)
+
+commit 47d47e8c43d71c6d6570d354400c0757940bbb94
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sun Aug 1 22:12:08 2021 -0600
+
+    [util/hb-shape/hb-subset] Don't terminate on first error in batch mode
+    
+    There's no reason to quit processing.  The failure is already
+    communicated via stdout in both cases.
+
+ util/hb-shape.cc  | 4 ----
+ util/hb-subset.cc | 3 ---
+ 2 files changed, 7 deletions(-)
+
+commit a363ce573c3aa706de3aecf0515519a5d7842af2
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sun Aug 1 22:11:13 2021 -0600
+
+    [util/hb-subset] Minor refactor of batch mode
+    
+    To match recent changes to hb-shape.
+
+ util/hb-subset.cc | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+commit 10e73d188a28e777b7950e37a9eed908f3a19615
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Sun Aug 1 11:11:12 2021 +0200
+
+    [test] Add batch mode to hb-subset and use it
+    
+    time meson test --suite=subset down from:
+    real    0m22.822s
+    user    0m44.561s
+    sys     0m9.255s
+    
+    to:
+    real    0m19.418s
+    user    0m38.171s
+    sys     0m3.587s
+    
+    Does not seem to help much, but it is something.
+    
+    Part of https://github.com/harfbuzz/harfbuzz/issues/3089
+
+ test/subset/run-repack-tests.py | 17 ++++++++++++++---
+ test/subset/run-tests.py        | 17 ++++++++++++++---
+ util/hb-subset.cc               | 34 ++++++++++++++++++++++++++++++++++
+ 3 files changed, 62 insertions(+), 6 deletions(-)
+
+commit 75f314c47150270a04b659c3218ba1e4738d13d2
+Merge: ed99c8062 1fd3a261e
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sun Aug 1 12:06:49 2021 -0600
+
+    Merge pull request #3103 from harfbuzz/test-reference
+    
+    [test] Remove unused shaping tests reference mode
+
+commit 1fd3a261e526745b1a99bf1eece8e87bcc673d49
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Sun Aug 1 19:38:39 2021 +0200
+
+    [test] Remove unused shaping tests reference mode
+
+ test/shaping/run-tests.py | 35 +++++++++++------------------------
+ 1 file changed, 11 insertions(+), 24 deletions(-)
+
+commit ed99c80623ce6c81e5efedd97f2374b41f33d14b
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sun Aug 1 08:14:59 2021 -0600
+
+    [util/hb-shape] Refactor driver type duplication
+
+ util/hb-shape.cc | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+commit 05cf81283b90531710f060f7ef6e3216fe8b5330
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sun Aug 1 07:59:25 2021 -0600
+
+    [util/hb-shape] Fix use of EOF as end-of-line
+    
+    EOF is -1, which was being treated as a valid char (255).
+    Use int instead.
+
+ test/api/test-style.c  |  2 +-
+ util/main-font-text.hh |  2 +-
+ util/options.cc        | 15 ++++++++-------
+ util/options.hh        |  2 +-
+ 4 files changed, 11 insertions(+), 10 deletions(-)
+
+commit ee7473b8a447a05a67b185bd9ff6fac3f2ca24d8
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Jul 30 12:55:28 2021 -0600
+
+    [mutex] Remove unused HB_MUTEX_IMPL_INIT / HB_MUTEX_INIT
+    
+    https://github.com/harfbuzz/harfbuzz/pull/3100#issuecomment-890089096
+
+ src/hb-mutex.hh | 8 +-------
+ 1 file changed, 1 insertion(+), 7 deletions(-)
+
+commit 0e37c07f4c116c983693ce87ae6828b1ca77a347
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Jul 30 12:52:59 2021 -0600
+
+    Revert "Construct user_data in hb_object"
+    
+    This reverts commit a78eb43c79e7a2d870add6b686426748e104b7b3.
+    
+    See: https://github.com/harfbuzz/harfbuzz/pull/3100#issuecomment-890088227
+
+ src/hb-object.hh | 3 ---
+ 1 file changed, 3 deletions(-)
+
+commit 5dc4cd71cc950ccf2bbeee2a9f03e5908850b1eb
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Jul 30 12:37:40 2021 -0600
+
+    [blob] Minor change in destruction
+    
+    No semantic change.
+
+ src/hb-blob.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 7cbcdaf68a59ae87420503f7b5be490745607fbe
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Jul 30 11:26:46 2021 -0600
+
+    Whitespace
+
+ test/subset/data/tests/cff-full-font.tests        | 1 -
+ test/subset/data/tests/cff-japanese.tests         | 3 ---
+ test/subset/data/tests/japanese.tests             | 2 --
+ test/subset/data/tests/layout.gdef-varstore.tests | 1 -
+ 4 files changed, 7 deletions(-)
+
+commit 5d283aa0bd65739f78b384590e070e8cfb531d74
+Merge: bbeb3a62b f6c67a5fc
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Jul 30 10:15:09 2021 -0600
+
+    Merge pull request #3095 from harfbuzz/subset-tests-speed
+    
+    [test] Speed-up subset tests by saving TTX dump
+
+commit bbeb3a62b0efbb598d8683f7c4b6cc7069a58aeb
+Merge: a78eb43c7 b63ac5717
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Jul 30 09:54:55 2021 -0600
+
+    Merge pull request #3096 from googlefonts/multi_flag
+    
+    [subset] change input and plan flags to be bit sets.
+
+commit b63ac5717479cd8264e717f4e6a2df97d352bb67
+Author: Garret Rieger <grieger at google.com>
+Date:   Thu Jul 29 18:23:41 2021 -0700
+
+    [subset] bail if collection region indices is in error.
+
+ src/hb-ot-layout-common.hh | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit f9d8e4a97620eecd8dba3469b1bc115b3fbe242a
+Author: Garret Rieger <grieger at google.com>
+Date:   Thu Jul 29 15:25:41 2021 -0700
+
+    [subset] switch ..._set_flags to not take a mask.
+
+ src/hb-subset-input.cc           | 21 ++++++++-------------
+ src/hb-subset-input.hh           |  4 +++-
+ src/hb-subset-plan.hh            |  2 +-
+ src/hb-subset.h                  | 35 +++++++++++++++--------------------
+ test/api/hb-subset-test.h        |  3 +--
+ test/api/test-subset-cff1.c      | 20 +++++++++-----------
+ test/api/test-subset-cff2.c      |  9 ++++-----
+ test/api/test-subset-glyf.c      | 12 ++++++------
+ test/api/test-subset-gvar.c      |  2 +-
+ test/api/test-subset-hvar.c      |  4 ++--
+ test/api/test-subset-vvar.c      |  2 +-
+ test/api/test-subset.c           | 11 ++---------
+ test/fuzzing/hb-subset-fuzzer.cc |  6 +++---
+ util/options.hh                  |  9 +++++----
+ 14 files changed, 61 insertions(+), 79 deletions(-)
+
+commit 46d4a5e67353517bb27d0ac2d944b7343a8cff3c
+Author: Garret Rieger <grieger at google.com>
+Date:   Thu Jul 29 15:07:13 2021 -0700
+
+    [subset] Convert subset plan to use a flags bit set.
+
+ src/hb-ot-glyf-table.hh        | 15 +++++++++------
+ src/hb-ot-layout-gpos-table.hh |  6 +++---
+ src/hb-ot-maxp-table.hh        |  2 +-
+ src/hb-ot-name-table.hh        |  6 +++++-
+ src/hb-ot-os2-table.hh         |  3 ++-
+ src/hb-ot-post-table.hh        |  5 +++--
+ src/hb-ot-var-gvar-table.hh    |  8 ++++++--
+ src/hb-ot-var-hvar-table.hh    |  2 +-
+ src/hb-subset-cff-common.hh    | 13 ++++++++-----
+ src/hb-subset-cff1.cc          |  4 ++--
+ src/hb-subset-cff2.cc          |  4 ++--
+ src/hb-subset-plan.cc          | 29 +++++++++++++++++------------
+ src/hb-subset-plan.hh          | 13 ++-----------
+ src/hb-subset.cc               |  4 ++--
+ 14 files changed, 63 insertions(+), 51 deletions(-)
+
+commit 3d534b146c545d95e4b81fbec2c5a7a73531fae5
+Author: Garret Rieger <grieger at google.com>
+Date:   Thu Jul 29 11:52:14 2021 -0700
+
+    [subset] convert subset input flags into bit flags.
+    
+    Store the flags in a bit set. Updates the public api to work with the bit set directly.
+
+ src/hb-subset-input.cc           | 103 +++++++--------------------------------
+ src/hb-subset-input.hh           |  12 +----
+ src/hb-subset-plan.cc            |  22 ++++-----
+ src/hb-subset.h                  |  62 ++++++++++++-----------
+ test/api/hb-subset-test.h        |   4 +-
+ test/api/test-subset-cff1.c      |  24 ++++-----
+ test/api/test-subset-cff2.c      |  11 +++--
+ test/api/test-subset-glyf.c      |  12 ++---
+ test/api/test-subset-gvar.c      |   2 +-
+ test/api/test-subset-hvar.c      |   4 +-
+ test/api/test-subset-vvar.c      |   2 +-
+ test/api/test-subset.c           |  41 ++++++++++++++++
+ test/fuzzing/hb-subset-fuzzer.cc |  33 +++----------
+ util/hb-subset.cc                |   2 +-
+ util/options-subset.cc           |  23 +++++----
+ util/options.hh                  |  24 +++++++++
+ 16 files changed, 180 insertions(+), 201 deletions(-)
+
+commit f6c67a5fcfcf64e6e01b337c34d366f167800410
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Fri Jul 30 02:20:19 2021 +0200
+
+    [test] Open file in UTF-8
+    
+    It is 2021 and Python still does not default to UTF-8 on Windows!
+
+ test/subset/run-tests.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit bafbade087d18f0045181ad31829a0a4ffbf0544
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Fri Jul 30 01:42:45 2021 +0200
+
+    [test] Force FontTools to use \n on all platforms
+    
+    On Windows in helfuly uses \r\n.
+
+ test/subset/run-tests.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit a78eb43c79e7a2d870add6b686426748e104b7b3
+Author: Ben Wagner <bungeman at chromium.org>
+Date:   Thu Jul 29 17:35:25 2021 -0400
+
+    Construct user_data in hb_object
+    
+    hb_object's user_data is created lazily. The previous implementation of
+    hb_object_set_user_data created space for the user_data but did not
+    actually construct it. This means that hb_user_data_array_t's lock was
+    not constructed. If hb_mutex_t is backed by an implementation which
+    requires that it be constructed (not just zero initialized) then errors
+    will occur when taking the lock when setting the user data.
+    
+    Change hb_object_set_user_data to construct the user_data in the created
+    space and hb_object_fini to call the destructor.
+
+ src/hb-object.hh | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 278f44dcee34cea25403e42e06668f0afe2328c1
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Thu Jul 29 23:43:56 2021 +0200
+
+    [test] Speed-up subset tests by saving TTX dump
+    
+    Speed-up subset tests by saving TTX dump of expected output instead of
+    generating it each time the tests are run.
+    
+    Cuts down meson test --suite=subset on my system from:
+    real    0m38.977s
+    user    1m12.024s
+    sys     0m10.547s
+    
+    to:
+    real    0m22.291s
+    user    0m44.548s
+    sys     0m9.221s
+    
+    Part of https://github.com/harfbuzz/harfbuzz/issues/3089
+
+ .../Comfortaa-Regular-new.default.61,62,63.ttf     |    Bin 7060 -> 0 bytes
+ .../Comfortaa-Regular-new.default.61,62,63.ttx     |   4507 +
+ .../basics/Comfortaa-Regular-new.default.61,63.ttf |    Bin 6692 -> 0 bytes
+ .../basics/Comfortaa-Regular-new.default.61,63.ttx |   4359 +
+ .../basics/Comfortaa-Regular-new.default.61.ttf    |    Bin 6328 -> 0 bytes
+ .../basics/Comfortaa-Regular-new.default.61.ttx    |   4198 +
+ .../basics/Comfortaa-Regular-new.default.62.ttf    |    Bin 6200 -> 0 bytes
+ .../basics/Comfortaa-Regular-new.default.62.ttx    |   4151 +
+ .../basics/Comfortaa-Regular-new.default.63.ttf    |    Bin 6256 -> 0 bytes
+ .../basics/Comfortaa-Regular-new.default.63.ttx    |   4209 +
+ ...aa-Regular-new.default.retain-all-codepoint.ttf |    Bin 220928 -> 0 bytes
+ ...aa-Regular-new.default.retain-all-codepoint.ttx | 132956 +++++++++++++++++
+ ...Regular-new.drop-hints-retain-gids.61,62,63.ttf |    Bin 4608 -> 0 bytes
+ ...Regular-new.drop-hints-retain-gids.61,62,63.ttx |   1918 +
+ ...aa-Regular-new.drop-hints-retain-gids.61,63.ttf |    Bin 4312 -> 0 bytes
+ ...aa-Regular-new.drop-hints-retain-gids.61,63.ttx |   1785 +
+ ...ortaa-Regular-new.drop-hints-retain-gids.61.ttf |    Bin 3724 -> 0 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.61.ttx |   1493 +
+ ...ortaa-Regular-new.drop-hints-retain-gids.62.ttf |    Bin 3900 -> 0 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.62.ttx |   1600 +
+ ...ortaa-Regular-new.drop-hints-retain-gids.63.ttf |    Bin 3972 -> 0 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.63.ttx |   1662 +
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf |    Bin 189800 -> 0 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttx | 122816 ++++++++++++++++
+ .../Comfortaa-Regular-new.drop-hints.61,62,63.ttf  |    Bin 2600 -> 0 bytes
+ .../Comfortaa-Regular-new.drop-hints.61,62,63.ttx  |    813 +
+ .../Comfortaa-Regular-new.drop-hints.61,63.ttf     |    Bin 2296 -> 0 bytes
+ .../Comfortaa-Regular-new.drop-hints.61,63.ttx     |    675 +
+ .../basics/Comfortaa-Regular-new.drop-hints.61.ttf |    Bin 1976 -> 0 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.61.ttx |    523 +
+ .../basics/Comfortaa-Regular-new.drop-hints.62.ttf |    Bin 1900 -> 0 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.62.ttx |    490 +
+ .../basics/Comfortaa-Regular-new.drop-hints.63.ttf |    Bin 1968 -> 0 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.63.ttx |    547 +
+ ...Regular-new.drop-hints.retain-all-codepoint.ttf |    Bin 189756 -> 0 bytes
+ ...Regular-new.drop-hints.retain-all-codepoint.ttx | 122806 ++++++++++++++++
+ .../basics/Comfortaa-Regular-new.gids.61,62,63.ttf |    Bin 7988 -> 0 bytes
+ .../basics/Comfortaa-Regular-new.gids.61,62,63.ttx |   4929 +
+ .../basics/Comfortaa-Regular-new.gids.61,63.ttf    |    Bin 7628 -> 0 bytes
+ .../basics/Comfortaa-Regular-new.gids.61,63.ttx    |   4778 +
+ .../basics/Comfortaa-Regular-new.gids.61.ttf       |    Bin 7256 -> 0 bytes
+ .../basics/Comfortaa-Regular-new.gids.61.ttx       |   4614 +
+ .../basics/Comfortaa-Regular-new.gids.62.ttf       |    Bin 7184 -> 0 bytes
+ .../basics/Comfortaa-Regular-new.gids.62.ttx       |   4606 +
+ .../basics/Comfortaa-Regular-new.gids.63.ttf       |    Bin 7180 -> 0 bytes
+ .../basics/Comfortaa-Regular-new.gids.63.ttx       |   4623 +
+ ...ortaa-Regular-new.gids.retain-all-codepoint.ttf |    Bin 220928 -> 0 bytes
+ ...ortaa-Regular-new.gids.retain-all-codepoint.ttx | 132956 +++++++++++++++++
+ .../Comfortaa-Regular-new.glyph-names.61,62,63.ttf |    Bin 7072 -> 0 bytes
+ .../Comfortaa-Regular-new.glyph-names.61,62,63.ttx |   4519 +
+ .../Comfortaa-Regular-new.glyph-names.61,63.ttf    |    Bin 6700 -> 0 bytes
+ .../Comfortaa-Regular-new.glyph-names.61,63.ttx    |   4371 +
+ .../Comfortaa-Regular-new.glyph-names.61.ttf       |    Bin 6336 -> 0 bytes
+ .../Comfortaa-Regular-new.glyph-names.61.ttx       |   4210 +
+ .../Comfortaa-Regular-new.glyph-names.62.ttf       |    Bin 6208 -> 0 bytes
+ .../Comfortaa-Regular-new.glyph-names.62.ttx       |   4163 +
+ .../Comfortaa-Regular-new.glyph-names.63.ttf       |    Bin 6264 -> 0 bytes
+ .../Comfortaa-Regular-new.glyph-names.63.ttx       |   4221 +
+ ...egular-new.glyph-names.retain-all-codepoint.ttf |    Bin 227920 -> 0 bytes
+ ...egular-new.glyph-names.retain-all-codepoint.ttx | 133598 ++++++++++++++++++
+ ...gular-new.keep-all-layout-features.61,62,63.ttf |    Bin 7504 -> 0 bytes
+ ...gular-new.keep-all-layout-features.61,62,63.ttx |   4670 +
+ ...-Regular-new.keep-all-layout-features.61,63.ttf |    Bin 7140 -> 0 bytes
+ ...-Regular-new.keep-all-layout-features.61,63.ttx |   4519 +
+ ...taa-Regular-new.keep-all-layout-features.61.ttf |    Bin 6772 -> 0 bytes
+ ...taa-Regular-new.keep-all-layout-features.61.ttx |   4355 +
+ ...taa-Regular-new.keep-all-layout-features.62.ttf |    Bin 6200 -> 0 bytes
+ ...taa-Regular-new.keep-all-layout-features.62.ttx |   4151 +
+ ...taa-Regular-new.keep-all-layout-features.63.ttf |    Bin 6256 -> 0 bytes
+ ...taa-Regular-new.keep-all-layout-features.63.ttx |   4209 +
+ ...ep-all-layout-features.retain-all-codepoint.ttf |    Bin 221620 -> 0 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttx | 133303 +++++++++++++++++
+ ...fortaa-Regular-new.layout-features.61,62,63.ttf |    Bin 7060 -> 0 bytes
+ ...fortaa-Regular-new.layout-features.61,62,63.ttx |   4507 +
+ ...Comfortaa-Regular-new.layout-features.61,63.ttf |    Bin 6692 -> 0 bytes
+ ...Comfortaa-Regular-new.layout-features.61,63.ttx |   4359 +
+ .../Comfortaa-Regular-new.layout-features.61.ttf   |    Bin 6328 -> 0 bytes
+ .../Comfortaa-Regular-new.layout-features.61.ttx   |   4198 +
+ .../Comfortaa-Regular-new.layout-features.62.ttf   |    Bin 6200 -> 0 bytes
+ .../Comfortaa-Regular-new.layout-features.62.ttx   |   4151 +
+ .../Comfortaa-Regular-new.layout-features.63.ttf   |    Bin 6256 -> 0 bytes
+ .../Comfortaa-Regular-new.layout-features.63.ttx   |   4209 +
+ ...ar-new.layout-features.retain-all-codepoint.ttf |    Bin 219124 -> 0 bytes
+ ...ar-new.layout-features.retain-all-codepoint.ttx | 131168 +++++++++++++++++
+ .../Comfortaa-Regular-new.name-ids.61,62,63.ttf    |    Bin 6800 -> 0 bytes
+ .../Comfortaa-Regular-new.name-ids.61,62,63.ttx    |   4495 +
+ .../Comfortaa-Regular-new.name-ids.61,63.ttf       |    Bin 6432 -> 0 bytes
+ .../Comfortaa-Regular-new.name-ids.61,63.ttx       |   4347 +
+ .../basics/Comfortaa-Regular-new.name-ids.61.ttf   |    Bin 6068 -> 0 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.61.ttx   |   4186 +
+ .../basics/Comfortaa-Regular-new.name-ids.62.ttf   |    Bin 5940 -> 0 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.62.ttx   |   4139 +
+ .../basics/Comfortaa-Regular-new.name-ids.63.ttf   |    Bin 5996 -> 0 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.63.ttx   |   4197 +
+ ...a-Regular-new.name-ids.retain-all-codepoint.ttf |    Bin 220668 -> 0 bytes
+ ...a-Regular-new.name-ids.retain-all-codepoint.ttx | 132944 +++++++++++++++++
+ ...mfortaa-Regular-new.name-languages.61,62,63.ttf |    Bin 7060 -> 0 bytes
+ ...mfortaa-Regular-new.name-languages.61,62,63.ttx |   4507 +
+ .../Comfortaa-Regular-new.name-languages.61,63.ttf |    Bin 6692 -> 0 bytes
+ .../Comfortaa-Regular-new.name-languages.61,63.ttx |   4359 +
+ .../Comfortaa-Regular-new.name-languages.61.ttf    |    Bin 6328 -> 0 bytes
+ .../Comfortaa-Regular-new.name-languages.61.ttx    |   4198 +
+ .../Comfortaa-Regular-new.name-languages.62.ttf    |    Bin 6200 -> 0 bytes
+ .../Comfortaa-Regular-new.name-languages.62.ttx    |   4151 +
+ .../Comfortaa-Regular-new.name-languages.63.ttf    |    Bin 6256 -> 0 bytes
+ .../Comfortaa-Regular-new.name-languages.63.ttx    |   4209 +
+ ...lar-new.name-languages.retain-all-codepoint.ttf |    Bin 220928 -> 0 bytes
+ ...lar-new.name-languages.retain-all-codepoint.ttx | 132956 +++++++++++++++++
+ .../Comfortaa-Regular-new.name-legacy.61,62,63.ttf |    Bin 7060 -> 0 bytes
+ .../Comfortaa-Regular-new.name-legacy.61,62,63.ttx |   4507 +
+ .../Comfortaa-Regular-new.name-legacy.61,63.ttf    |    Bin 6692 -> 0 bytes
+ .../Comfortaa-Regular-new.name-legacy.61,63.ttx    |   4359 +
+ .../Comfortaa-Regular-new.name-legacy.61.ttf       |    Bin 6328 -> 0 bytes
+ .../Comfortaa-Regular-new.name-legacy.61.ttx       |   4198 +
+ .../Comfortaa-Regular-new.name-legacy.62.ttf       |    Bin 6200 -> 0 bytes
+ .../Comfortaa-Regular-new.name-legacy.62.ttx       |   4151 +
+ .../Comfortaa-Regular-new.name-legacy.63.ttf       |    Bin 6256 -> 0 bytes
+ .../Comfortaa-Regular-new.name-legacy.63.ttx       |   4209 +
+ ...egular-new.name-legacy.retain-all-codepoint.ttf |    Bin 220928 -> 0 bytes
+ ...egular-new.name-legacy.retain-all-codepoint.ttx | 132956 +++++++++++++++++
+ ...egular-new.no-prune-unicode-ranges.61,62,63.ttf |    Bin 7060 -> 0 bytes
+ ...egular-new.no-prune-unicode-ranges.61,62,63.ttx |   4507 +
+ ...a-Regular-new.no-prune-unicode-ranges.61,63.ttf |    Bin 6692 -> 0 bytes
+ ...a-Regular-new.no-prune-unicode-ranges.61,63.ttx |   4359 +
+ ...rtaa-Regular-new.no-prune-unicode-ranges.61.ttf |    Bin 6328 -> 0 bytes
+ ...rtaa-Regular-new.no-prune-unicode-ranges.61.ttx |   4198 +
+ ...rtaa-Regular-new.no-prune-unicode-ranges.62.ttf |    Bin 6200 -> 0 bytes
+ ...rtaa-Regular-new.no-prune-unicode-ranges.62.ttx |   4151 +
+ ...rtaa-Regular-new.no-prune-unicode-ranges.63.ttf |    Bin 6256 -> 0 bytes
+ ...rtaa-Regular-new.no-prune-unicode-ranges.63.ttx |   4209 +
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf |    Bin 220928 -> 0 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttx | 132956 +++++++++++++++++
+ ...mfortaa-Regular-new.notdef-outline.61,62,63.ttf |    Bin 7652 -> 0 bytes
+ ...mfortaa-Regular-new.notdef-outline.61,62,63.ttx |   4758 +
+ .../Comfortaa-Regular-new.notdef-outline.61,63.ttf |    Bin 7284 -> 0 bytes
+ .../Comfortaa-Regular-new.notdef-outline.61,63.ttx |   4610 +
+ .../Comfortaa-Regular-new.notdef-outline.61.ttf    |    Bin 6920 -> 0 bytes
+ .../Comfortaa-Regular-new.notdef-outline.61.ttx    |   4449 +
+ .../Comfortaa-Regular-new.notdef-outline.62.ttf    |    Bin 6796 -> 0 bytes
+ .../Comfortaa-Regular-new.notdef-outline.62.ttx    |   4402 +
+ .../Comfortaa-Regular-new.notdef-outline.63.ttf    |    Bin 6844 -> 0 bytes
+ .../Comfortaa-Regular-new.notdef-outline.63.ttx    |   4460 +
+ ...lar-new.notdef-outline.retain-all-codepoint.ttf |    Bin 221524 -> 0 bytes
+ ...lar-new.notdef-outline.retain-all-codepoint.ttx | 133207 +++++++++++++++++
+ .../Comfortaa-Regular-new.retain-gids.61,62,63.ttf |    Bin 9068 -> 0 bytes
+ .../Comfortaa-Regular-new.retain-gids.61,62,63.ttx |   5612 +
+ .../Comfortaa-Regular-new.retain-gids.61,63.ttf    |    Bin 8708 -> 0 bytes
+ .../Comfortaa-Regular-new.retain-gids.61,63.ttx    |   5469 +
+ .../Comfortaa-Regular-new.retain-gids.61.ttf       |    Bin 8076 -> 0 bytes
+ .../Comfortaa-Regular-new.retain-gids.61.ttx       |   5168 +
+ .../Comfortaa-Regular-new.retain-gids.62.ttf       |    Bin 8200 -> 0 bytes
+ .../Comfortaa-Regular-new.retain-gids.62.ttx       |   5261 +
+ .../Comfortaa-Regular-new.retain-gids.63.ttf       |    Bin 8260 -> 0 bytes
+ .../Comfortaa-Regular-new.retain-gids.63.ttx       |   5324 +
+ ...egular-new.retain-gids.retain-all-codepoint.ttf |    Bin 220972 -> 0 bytes
+ ...egular-new.retain-gids.retain-all-codepoint.ttx | 132966 +++++++++++++++++
+ ...numMyeongjo-Regular-subset.default.61,62,63.ttf |    Bin 4128 -> 0 bytes
+ ...numMyeongjo-Regular-subset.default.61,62,63.ttx |   2032 +
+ .../NanumMyeongjo-Regular-subset.default.61,63.ttf |    Bin 3580 -> 0 bytes
+ .../NanumMyeongjo-Regular-subset.default.61,63.ttx |   1822 +
+ .../NanumMyeongjo-Regular-subset.default.61.ttf    |    Bin 3156 -> 0 bytes
+ .../NanumMyeongjo-Regular-subset.default.61.ttx    |   1696 +
+ .../NanumMyeongjo-Regular-subset.default.62.ttf    |    Bin 3180 -> 0 bytes
+ .../NanumMyeongjo-Regular-subset.default.62.ttx    |   1719 +
+ .../NanumMyeongjo-Regular-subset.default.63.ttf    |    Bin 3048 -> 0 bytes
+ .../NanumMyeongjo-Regular-subset.default.63.ttx    |   1635 +
+ ...Regular-subset.default.retain-all-codepoint.ttf |    Bin 9524 -> 0 bytes
+ ...Regular-subset.default.retain-all-codepoint.ttx |   4391 +
+ ...ular-subset.drop-hints-retain-gids.61,62,63.ttf |    Bin 1452 -> 0 bytes
+ ...ular-subset.drop-hints-retain-gids.61,62,63.ttx |    380 +
+ ...Regular-subset.drop-hints-retain-gids.61,63.ttf |    Bin 1284 -> 0 bytes
+ ...Regular-subset.drop-hints-retain-gids.61,63.ttx |    314 +
+ ...jo-Regular-subset.drop-hints-retain-gids.61.ttf |    Bin 1128 -> 0 bytes
+ ...jo-Regular-subset.drop-hints-retain-gids.61.ttx |    254 +
+ ...jo-Regular-subset.drop-hints-retain-gids.62.ttf |    Bin 1144 -> 0 bytes
+ ...jo-Regular-subset.drop-hints-retain-gids.62.ttx |    261 +
+ ...jo-Regular-subset.drop-hints-retain-gids.63.ttf |    Bin 1116 -> 0 bytes
+ ...jo-Regular-subset.drop-hints-retain-gids.63.ttx |    251 +
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf |    Bin 3536 -> 0 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttx |   1215 +
+ ...Myeongjo-Regular-subset.drop-hints.61,62,63.ttf |    Bin 1452 -> 0 bytes
+ ...Myeongjo-Regular-subset.drop-hints.61,62,63.ttx |    380 +
+ ...numMyeongjo-Regular-subset.drop-hints.61,63.ttf |    Bin 1276 -> 0 bytes
+ ...numMyeongjo-Regular-subset.drop-hints.61,63.ttx |    310 +
+ .../NanumMyeongjo-Regular-subset.drop-hints.61.ttf |    Bin 1128 -> 0 bytes
+ .../NanumMyeongjo-Regular-subset.drop-hints.61.ttx |    254 +
+ .../NanumMyeongjo-Regular-subset.drop-hints.62.ttf |    Bin 1140 -> 0 bytes
+ .../NanumMyeongjo-Regular-subset.drop-hints.62.ttx |    257 +
+ .../NanumMyeongjo-Regular-subset.drop-hints.63.ttf |    Bin 1104 -> 0 bytes
+ .../NanumMyeongjo-Regular-subset.drop-hints.63.ttx |    243 +
+ ...ular-subset.drop-hints.retain-all-codepoint.ttf |    Bin 3536 -> 0 bytes
+ ...ular-subset.drop-hints.retain-all-codepoint.ttx |   1215 +
+ .../NanumMyeongjo-Regular-subset.gids.61,62,63.ttf |    Bin 4128 -> 0 bytes
+ .../NanumMyeongjo-Regular-subset.gids.61,62,63.ttx |   2032 +
+ .../NanumMyeongjo-Regular-subset.gids.61,63.ttf    |    Bin 4128 -> 0 bytes
+ .../NanumMyeongjo-Regular-subset.gids.61,63.ttx    |   2032 +
+ .../NanumMyeongjo-Regular-subset.gids.61.ttf       |    Bin 4128 -> 0 bytes
+ .../NanumMyeongjo-Regular-subset.gids.61.ttx       |   2032 +
+ .../NanumMyeongjo-Regular-subset.gids.62.ttf       |    Bin 4128 -> 0 bytes
+ .../NanumMyeongjo-Regular-subset.gids.62.ttx       |   2032 +
+ .../NanumMyeongjo-Regular-subset.gids.63.ttf       |    Bin 4128 -> 0 bytes
+ .../NanumMyeongjo-Regular-subset.gids.63.ttx       |   2032 +
+ ...jo-Regular-subset.gids.retain-all-codepoint.ttf |    Bin 9524 -> 0 bytes
+ ...jo-Regular-subset.gids.retain-all-codepoint.ttx |   4391 +
+ ...yeongjo-Regular-subset.glyph-names.61,62,63.ttf |    Bin 4128 -> 0 bytes
+ ...yeongjo-Regular-subset.glyph-names.61,62,63.ttx |   2032 +
+ ...umMyeongjo-Regular-subset.glyph-names.61,63.ttf |    Bin 3580 -> 0 bytes
+ ...umMyeongjo-Regular-subset.glyph-names.61,63.ttx |   1822 +
+ ...NanumMyeongjo-Regular-subset.glyph-names.61.ttf |    Bin 3156 -> 0 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.61.ttx |   1696 +
+ ...NanumMyeongjo-Regular-subset.glyph-names.62.ttf |    Bin 3180 -> 0 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.62.ttx |   1719 +
+ ...NanumMyeongjo-Regular-subset.glyph-names.63.ttf |    Bin 3048 -> 0 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.63.ttx |   1635 +
+ ...lar-subset.glyph-names.retain-all-codepoint.ttf |    Bin 9524 -> 0 bytes
+ ...lar-subset.glyph-names.retain-all-codepoint.ttx |   4391 +
+ ...ar-subset.keep-all-layout-features.61,62,63.ttf |    Bin 4128 -> 0 bytes
+ ...ar-subset.keep-all-layout-features.61,62,63.ttx |   2032 +
+ ...gular-subset.keep-all-layout-features.61,63.ttf |    Bin 3580 -> 0 bytes
+ ...gular-subset.keep-all-layout-features.61,63.ttx |   1822 +
+ ...-Regular-subset.keep-all-layout-features.61.ttf |    Bin 3156 -> 0 bytes
+ ...-Regular-subset.keep-all-layout-features.61.ttx |   1696 +
+ ...-Regular-subset.keep-all-layout-features.62.ttf |    Bin 3180 -> 0 bytes
+ ...-Regular-subset.keep-all-layout-features.62.ttx |   1719 +
+ ...-Regular-subset.keep-all-layout-features.63.ttf |    Bin 3048 -> 0 bytes
+ ...-Regular-subset.keep-all-layout-features.63.ttx |   1635 +
+ ...ep-all-layout-features.retain-all-codepoint.ttf |    Bin 9524 -> 0 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttx |   4391 +
+ ...gjo-Regular-subset.layout-features.61,62,63.ttf |    Bin 4128 -> 0 bytes
+ ...gjo-Regular-subset.layout-features.61,62,63.ttx |   2032 +
+ ...eongjo-Regular-subset.layout-features.61,63.ttf |    Bin 3580 -> 0 bytes
+ ...eongjo-Regular-subset.layout-features.61,63.ttx |   1822 +
+ ...mMyeongjo-Regular-subset.layout-features.61.ttf |    Bin 3156 -> 0 bytes
+ ...mMyeongjo-Regular-subset.layout-features.61.ttx |   1696 +
+ ...mMyeongjo-Regular-subset.layout-features.62.ttf |    Bin 3180 -> 0 bytes
+ ...mMyeongjo-Regular-subset.layout-features.62.ttx |   1719 +
+ ...mMyeongjo-Regular-subset.layout-features.63.ttf |    Bin 3048 -> 0 bytes
+ ...mMyeongjo-Regular-subset.layout-features.63.ttx |   1635 +
+ ...subset.layout-features.retain-all-codepoint.ttf |    Bin 9524 -> 0 bytes
+ ...subset.layout-features.retain-all-codepoint.ttx |   4391 +
+ ...umMyeongjo-Regular-subset.name-ids.61,62,63.ttf |    Bin 3924 -> 0 bytes
+ ...umMyeongjo-Regular-subset.name-ids.61,62,63.ttx |   2020 +
+ ...NanumMyeongjo-Regular-subset.name-ids.61,63.ttf |    Bin 3376 -> 0 bytes
+ ...NanumMyeongjo-Regular-subset.name-ids.61,63.ttx |   1810 +
+ .../NanumMyeongjo-Regular-subset.name-ids.61.ttf   |    Bin 2952 -> 0 bytes
+ .../NanumMyeongjo-Regular-subset.name-ids.61.ttx   |   1684 +
+ .../NanumMyeongjo-Regular-subset.name-ids.62.ttf   |    Bin 2976 -> 0 bytes
+ .../NanumMyeongjo-Regular-subset.name-ids.62.ttx   |   1707 +
+ .../NanumMyeongjo-Regular-subset.name-ids.63.ttf   |    Bin 2844 -> 0 bytes
+ .../NanumMyeongjo-Regular-subset.name-ids.63.ttx   |   1623 +
+ ...egular-subset.name-ids.retain-all-codepoint.ttf |    Bin 9320 -> 0 bytes
+ ...egular-subset.name-ids.retain-all-codepoint.ttx |   4379 +
+ ...ngjo-Regular-subset.name-languages.61,62,63.ttf |    Bin 4172 -> 0 bytes
+ ...ngjo-Regular-subset.name-languages.61,62,63.ttx |   2041 +
+ ...yeongjo-Regular-subset.name-languages.61,63.ttf |    Bin 3624 -> 0 bytes
+ ...yeongjo-Regular-subset.name-languages.61,63.ttx |   1831 +
+ ...umMyeongjo-Regular-subset.name-languages.61.ttf |    Bin 3200 -> 0 bytes
+ ...umMyeongjo-Regular-subset.name-languages.61.ttx |   1705 +
+ ...umMyeongjo-Regular-subset.name-languages.62.ttf |    Bin 3224 -> 0 bytes
+ ...umMyeongjo-Regular-subset.name-languages.62.ttx |   1728 +
+ ...umMyeongjo-Regular-subset.name-languages.63.ttf |    Bin 3092 -> 0 bytes
+ ...umMyeongjo-Regular-subset.name-languages.63.ttx |   1644 +
+ ...-subset.name-languages.retain-all-codepoint.ttf |    Bin 9568 -> 0 bytes
+ ...-subset.name-languages.retain-all-codepoint.ttx |   4400 +
+ ...yeongjo-Regular-subset.name-legacy.61,62,63.ttf |    Bin 4128 -> 0 bytes
+ ...yeongjo-Regular-subset.name-legacy.61,62,63.ttx |   2032 +
+ ...umMyeongjo-Regular-subset.name-legacy.61,63.ttf |    Bin 3580 -> 0 bytes
+ ...umMyeongjo-Regular-subset.name-legacy.61,63.ttx |   1822 +
+ ...NanumMyeongjo-Regular-subset.name-legacy.61.ttf |    Bin 3156 -> 0 bytes
+ ...NanumMyeongjo-Regular-subset.name-legacy.61.ttx |   1696 +
+ ...NanumMyeongjo-Regular-subset.name-legacy.62.ttf |    Bin 3180 -> 0 bytes
+ ...NanumMyeongjo-Regular-subset.name-legacy.62.ttx |   1719 +
+ ...NanumMyeongjo-Regular-subset.name-legacy.63.ttf |    Bin 3048 -> 0 bytes
+ ...NanumMyeongjo-Regular-subset.name-legacy.63.ttx |   1635 +
+ ...lar-subset.name-legacy.retain-all-codepoint.ttf |    Bin 9524 -> 0 bytes
+ ...lar-subset.name-legacy.retain-all-codepoint.ttx |   4391 +
+ ...lar-subset.no-prune-unicode-ranges.61,62,63.ttf |    Bin 4128 -> 0 bytes
+ ...lar-subset.no-prune-unicode-ranges.61,62,63.ttx |   2032 +
+ ...egular-subset.no-prune-unicode-ranges.61,63.ttf |    Bin 3580 -> 0 bytes
+ ...egular-subset.no-prune-unicode-ranges.61,63.ttx |   1822 +
+ ...o-Regular-subset.no-prune-unicode-ranges.61.ttf |    Bin 3156 -> 0 bytes
+ ...o-Regular-subset.no-prune-unicode-ranges.61.ttx |   1696 +
+ ...o-Regular-subset.no-prune-unicode-ranges.62.ttf |    Bin 3180 -> 0 bytes
+ ...o-Regular-subset.no-prune-unicode-ranges.62.ttx |   1719 +
+ ...o-Regular-subset.no-prune-unicode-ranges.63.ttf |    Bin 3048 -> 0 bytes
+ ...o-Regular-subset.no-prune-unicode-ranges.63.ttx |   1635 +
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf |    Bin 9524 -> 0 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttx |   4391 +
+ ...ngjo-Regular-subset.notdef-outline.61,62,63.ttf |    Bin 4128 -> 0 bytes
+ ...ngjo-Regular-subset.notdef-outline.61,62,63.ttx |   2032 +
+ ...yeongjo-Regular-subset.notdef-outline.61,63.ttf |    Bin 3580 -> 0 bytes
+ ...yeongjo-Regular-subset.notdef-outline.61,63.ttx |   1822 +
+ ...umMyeongjo-Regular-subset.notdef-outline.61.ttf |    Bin 3156 -> 0 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.61.ttx |   1696 +
+ ...umMyeongjo-Regular-subset.notdef-outline.62.ttf |    Bin 3180 -> 0 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.62.ttx |   1719 +
+ ...umMyeongjo-Regular-subset.notdef-outline.63.ttf |    Bin 3048 -> 0 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.63.ttx |   1635 +
+ ...-subset.notdef-outline.retain-all-codepoint.ttf |    Bin 9524 -> 0 bytes
+ ...-subset.notdef-outline.retain-all-codepoint.ttx |   4391 +
+ ...yeongjo-Regular-subset.retain-gids.61,62,63.ttf |    Bin 4128 -> 0 bytes
+ ...yeongjo-Regular-subset.retain-gids.61,62,63.ttx |   2032 +
+ ...umMyeongjo-Regular-subset.retain-gids.61,63.ttf |    Bin 3588 -> 0 bytes
+ ...umMyeongjo-Regular-subset.retain-gids.61,63.ttx |   1826 +
+ ...NanumMyeongjo-Regular-subset.retain-gids.61.ttf |    Bin 3156 -> 0 bytes
+ ...NanumMyeongjo-Regular-subset.retain-gids.61.ttx |   1696 +
+ ...NanumMyeongjo-Regular-subset.retain-gids.62.ttf |    Bin 3184 -> 0 bytes
+ ...NanumMyeongjo-Regular-subset.retain-gids.62.ttx |   1723 +
+ ...NanumMyeongjo-Regular-subset.retain-gids.63.ttf |    Bin 3060 -> 0 bytes
+ ...NanumMyeongjo-Regular-subset.retain-gids.63.ttx |   1643 +
+ ...lar-subset.retain-gids.retain-all-codepoint.ttf |    Bin 9524 -> 0 bytes
+ ...lar-subset.retain-gids.retain-all-codepoint.ttx |   4391 +
+ .../basics/Roboto-Regular.abc.default.61,62,63.ttf |    Bin 2452 -> 0 bytes
+ .../basics/Roboto-Regular.abc.default.61,62,63.ttx |   1407 +
+ .../basics/Roboto-Regular.abc.default.61,63.ttf    |    Bin 2260 -> 0 bytes
+ .../basics/Roboto-Regular.abc.default.61,63.ttx    |   1259 +
+ .../basics/Roboto-Regular.abc.default.61.ttf       |    Bin 2048 -> 0 bytes
+ .../basics/Roboto-Regular.abc.default.61.ttx       |   1127 +
+ .../basics/Roboto-Regular.abc.default.62.ttf       |    Bin 1916 -> 0 bytes
+ .../basics/Roboto-Regular.abc.default.62.ttx       |   1025 +
+ .../basics/Roboto-Regular.abc.default.63.ttf       |    Bin 1972 -> 0 bytes
+ .../basics/Roboto-Regular.abc.default.63.ttx       |   1073 +
+ ...to-Regular.abc.default.retain-all-codepoint.ttf |    Bin 2452 -> 0 bytes
+ ...to-Regular.abc.default.retain-all-codepoint.ttx |   1407 +
+ ...Regular.abc.drop-hints-retain-gids.61,62,63.ttf |    Bin 1192 -> 0 bytes
+ ...Regular.abc.drop-hints-retain-gids.61,62,63.ttx |    479 +
+ ...to-Regular.abc.drop-hints-retain-gids.61,63.ttf |    Bin 1124 -> 0 bytes
+ ...to-Regular.abc.drop-hints-retain-gids.61,63.ttx |    433 +
+ ...oboto-Regular.abc.drop-hints-retain-gids.61.ttf |    Bin 984 -> 0 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.61.ttx |    374 +
+ ...oboto-Regular.abc.drop-hints-retain-gids.62.ttf |    Bin 880 -> 0 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.62.ttx |    297 +
+ ...oboto-Regular.abc.drop-hints-retain-gids.63.ttf |    Bin 968 -> 0 bytes
+ ...oboto-Regular.abc.drop-hints-retain-gids.63.ttx |    369 +
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf |    Bin 1192 -> 0 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttx |    479 +
+ .../Roboto-Regular.abc.drop-hints.61,62,63.ttf     |    Bin 1192 -> 0 bytes
+ .../Roboto-Regular.abc.drop-hints.61,62,63.ttx     |    479 +
+ .../basics/Roboto-Regular.abc.drop-hints.61,63.ttf |    Bin 1108 -> 0 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.61,63.ttx |    429 +
+ .../basics/Roboto-Regular.abc.drop-hints.61.ttf    |    Bin 984 -> 0 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.61.ttx    |    374 +
+ .../basics/Roboto-Regular.abc.drop-hints.62.ttf    |    Bin 876 -> 0 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.62.ttx    |    293 +
+ .../basics/Roboto-Regular.abc.drop-hints.63.ttf    |    Bin 956 -> 0 bytes
+ .../basics/Roboto-Regular.abc.drop-hints.63.ttx    |    361 +
+ ...Regular.abc.drop-hints.retain-all-codepoint.ttf |    Bin 1192 -> 0 bytes
+ ...Regular.abc.drop-hints.retain-all-codepoint.ttx |    479 +
+ .../basics/Roboto-Regular.abc.gids.61,62,63.ttf    |    Bin 2452 -> 0 bytes
+ .../basics/Roboto-Regular.abc.gids.61,62,63.ttx    |   1407 +
+ .../basics/Roboto-Regular.abc.gids.61,63.ttf       |    Bin 2452 -> 0 bytes
+ .../basics/Roboto-Regular.abc.gids.61,63.ttx       |   1407 +
+ .../expected/basics/Roboto-Regular.abc.gids.61.ttf |    Bin 2452 -> 0 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.61.ttx |   1407 +
+ .../expected/basics/Roboto-Regular.abc.gids.62.ttf |    Bin 2452 -> 0 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.62.ttx |   1407 +
+ .../expected/basics/Roboto-Regular.abc.gids.63.ttf |    Bin 2452 -> 0 bytes
+ .../expected/basics/Roboto-Regular.abc.gids.63.ttx |   1407 +
+ ...oboto-Regular.abc.gids.retain-all-codepoint.ttf |    Bin 2452 -> 0 bytes
+ ...oboto-Regular.abc.gids.retain-all-codepoint.ttx |   1407 +
+ .../Roboto-Regular.abc.glyph-names.61,62,63.ttf    |    Bin 2452 -> 0 bytes
+ .../Roboto-Regular.abc.glyph-names.61,62,63.ttx    |   1407 +
+ .../Roboto-Regular.abc.glyph-names.61,63.ttf       |    Bin 2260 -> 0 bytes
+ .../Roboto-Regular.abc.glyph-names.61,63.ttx       |   1259 +
+ .../basics/Roboto-Regular.abc.glyph-names.61.ttf   |    Bin 2048 -> 0 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.61.ttx   |   1127 +
+ .../basics/Roboto-Regular.abc.glyph-names.62.ttf   |    Bin 1916 -> 0 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.62.ttx   |   1025 +
+ .../basics/Roboto-Regular.abc.glyph-names.63.ttf   |    Bin 1972 -> 0 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.63.ttx   |   1073 +
+ ...egular.abc.glyph-names.retain-all-codepoint.ttf |    Bin 2452 -> 0 bytes
+ ...egular.abc.glyph-names.retain-all-codepoint.ttx |   1407 +
+ ...gular.abc.keep-all-layout-features.61,62,63.ttf |    Bin 2452 -> 0 bytes
+ ...gular.abc.keep-all-layout-features.61,62,63.ttx |   1407 +
+ ...-Regular.abc.keep-all-layout-features.61,63.ttf |    Bin 2260 -> 0 bytes
+ ...-Regular.abc.keep-all-layout-features.61,63.ttx |   1259 +
+ ...oto-Regular.abc.keep-all-layout-features.61.ttf |    Bin 2048 -> 0 bytes
+ ...oto-Regular.abc.keep-all-layout-features.61.ttx |   1127 +
+ ...oto-Regular.abc.keep-all-layout-features.62.ttf |    Bin 1916 -> 0 bytes
+ ...oto-Regular.abc.keep-all-layout-features.62.ttx |   1025 +
+ ...oto-Regular.abc.keep-all-layout-features.63.ttf |    Bin 1972 -> 0 bytes
+ ...oto-Regular.abc.keep-all-layout-features.63.ttx |   1073 +
+ ...ep-all-layout-features.retain-all-codepoint.ttf |    Bin 2452 -> 0 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttx |   1407 +
+ ...Roboto-Regular.abc.layout-features.61,62,63.ttf |    Bin 2452 -> 0 bytes
+ ...Roboto-Regular.abc.layout-features.61,62,63.ttx |   1407 +
+ .../Roboto-Regular.abc.layout-features.61,63.ttf   |    Bin 2260 -> 0 bytes
+ .../Roboto-Regular.abc.layout-features.61,63.ttx   |   1259 +
+ .../Roboto-Regular.abc.layout-features.61.ttf      |    Bin 2048 -> 0 bytes
+ .../Roboto-Regular.abc.layout-features.61.ttx      |   1127 +
+ .../Roboto-Regular.abc.layout-features.62.ttf      |    Bin 1916 -> 0 bytes
+ .../Roboto-Regular.abc.layout-features.62.ttx      |   1025 +
+ .../Roboto-Regular.abc.layout-features.63.ttf      |    Bin 1972 -> 0 bytes
+ .../Roboto-Regular.abc.layout-features.63.ttx      |   1073 +
+ ...ar.abc.layout-features.retain-all-codepoint.ttf |    Bin 2452 -> 0 bytes
+ ...ar.abc.layout-features.retain-all-codepoint.ttx |   1407 +
+ .../Roboto-Regular.abc.name-ids.61,62,63.ttf       |    Bin 2452 -> 0 bytes
+ .../Roboto-Regular.abc.name-ids.61,62,63.ttx       |   1407 +
+ .../basics/Roboto-Regular.abc.name-ids.61,63.ttf   |    Bin 2260 -> 0 bytes
+ .../basics/Roboto-Regular.abc.name-ids.61,63.ttx   |   1259 +
+ .../basics/Roboto-Regular.abc.name-ids.61.ttf      |    Bin 2048 -> 0 bytes
+ .../basics/Roboto-Regular.abc.name-ids.61.ttx      |   1127 +
+ .../basics/Roboto-Regular.abc.name-ids.62.ttf      |    Bin 1916 -> 0 bytes
+ .../basics/Roboto-Regular.abc.name-ids.62.ttx      |   1025 +
+ .../basics/Roboto-Regular.abc.name-ids.63.ttf      |    Bin 1972 -> 0 bytes
+ .../basics/Roboto-Regular.abc.name-ids.63.ttx      |   1073 +
+ ...o-Regular.abc.name-ids.retain-all-codepoint.ttf |    Bin 2452 -> 0 bytes
+ ...o-Regular.abc.name-ids.retain-all-codepoint.ttx |   1407 +
+ .../Roboto-Regular.abc.name-languages.61,62,63.ttf |    Bin 2452 -> 0 bytes
+ .../Roboto-Regular.abc.name-languages.61,62,63.ttx |   1407 +
+ .../Roboto-Regular.abc.name-languages.61,63.ttf    |    Bin 2260 -> 0 bytes
+ .../Roboto-Regular.abc.name-languages.61,63.ttx    |   1259 +
+ .../Roboto-Regular.abc.name-languages.61.ttf       |    Bin 2048 -> 0 bytes
+ .../Roboto-Regular.abc.name-languages.61.ttx       |   1127 +
+ .../Roboto-Regular.abc.name-languages.62.ttf       |    Bin 1916 -> 0 bytes
+ .../Roboto-Regular.abc.name-languages.62.ttx       |   1025 +
+ .../Roboto-Regular.abc.name-languages.63.ttf       |    Bin 1972 -> 0 bytes
+ .../Roboto-Regular.abc.name-languages.63.ttx       |   1073 +
+ ...lar.abc.name-languages.retain-all-codepoint.ttf |    Bin 2452 -> 0 bytes
+ ...lar.abc.name-languages.retain-all-codepoint.ttx |   1407 +
+ .../Roboto-Regular.abc.name-legacy.61,62,63.ttf    |    Bin 2452 -> 0 bytes
+ .../Roboto-Regular.abc.name-legacy.61,62,63.ttx    |   1407 +
+ .../Roboto-Regular.abc.name-legacy.61,63.ttf       |    Bin 2260 -> 0 bytes
+ .../Roboto-Regular.abc.name-legacy.61,63.ttx       |   1259 +
+ .../basics/Roboto-Regular.abc.name-legacy.61.ttf   |    Bin 2048 -> 0 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.61.ttx   |   1127 +
+ .../basics/Roboto-Regular.abc.name-legacy.62.ttf   |    Bin 1916 -> 0 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.62.ttx   |   1025 +
+ .../basics/Roboto-Regular.abc.name-legacy.63.ttf   |    Bin 1972 -> 0 bytes
+ .../basics/Roboto-Regular.abc.name-legacy.63.ttx   |   1073 +
+ ...egular.abc.name-legacy.retain-all-codepoint.ttf |    Bin 2452 -> 0 bytes
+ ...egular.abc.name-legacy.retain-all-codepoint.ttx |   1407 +
+ ...egular.abc.no-prune-unicode-ranges.61,62,63.ttf |    Bin 2452 -> 0 bytes
+ ...egular.abc.no-prune-unicode-ranges.61,62,63.ttx |   1407 +
+ ...o-Regular.abc.no-prune-unicode-ranges.61,63.ttf |    Bin 2260 -> 0 bytes
+ ...o-Regular.abc.no-prune-unicode-ranges.61,63.ttx |   1259 +
+ ...boto-Regular.abc.no-prune-unicode-ranges.61.ttf |    Bin 2048 -> 0 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.61.ttx |   1127 +
+ ...boto-Regular.abc.no-prune-unicode-ranges.62.ttf |    Bin 1916 -> 0 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.62.ttx |   1025 +
+ ...boto-Regular.abc.no-prune-unicode-ranges.63.ttf |    Bin 1972 -> 0 bytes
+ ...boto-Regular.abc.no-prune-unicode-ranges.63.ttx |   1073 +
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttf |    Bin 2452 -> 0 bytes
+ ...o-prune-unicode-ranges.retain-all-codepoint.ttx |   1407 +
+ .../Roboto-Regular.abc.notdef-outline.61,62,63.ttf |    Bin 2452 -> 0 bytes
+ .../Roboto-Regular.abc.notdef-outline.61,62,63.ttx |   1407 +
+ .../Roboto-Regular.abc.notdef-outline.61,63.ttf    |    Bin 2260 -> 0 bytes
+ .../Roboto-Regular.abc.notdef-outline.61,63.ttx    |   1259 +
+ .../Roboto-Regular.abc.notdef-outline.61.ttf       |    Bin 2048 -> 0 bytes
+ .../Roboto-Regular.abc.notdef-outline.61.ttx       |   1127 +
+ .../Roboto-Regular.abc.notdef-outline.62.ttf       |    Bin 1916 -> 0 bytes
+ .../Roboto-Regular.abc.notdef-outline.62.ttx       |   1025 +
+ .../Roboto-Regular.abc.notdef-outline.63.ttf       |    Bin 1972 -> 0 bytes
+ .../Roboto-Regular.abc.notdef-outline.63.ttx       |   1073 +
+ ...lar.abc.notdef-outline.retain-all-codepoint.ttf |    Bin 2452 -> 0 bytes
+ ...lar.abc.notdef-outline.retain-all-codepoint.ttx |   1407 +
+ .../Roboto-Regular.abc.retain-gids.61,62,63.ttf    |    Bin 2452 -> 0 bytes
+ .../Roboto-Regular.abc.retain-gids.61,62,63.ttx    |   1407 +
+ .../Roboto-Regular.abc.retain-gids.61,63.ttf       |    Bin 2276 -> 0 bytes
+ .../Roboto-Regular.abc.retain-gids.61,63.ttx       |   1264 +
+ .../basics/Roboto-Regular.abc.retain-gids.61.ttf   |    Bin 2048 -> 0 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.61.ttx   |   1127 +
+ .../basics/Roboto-Regular.abc.retain-gids.62.ttf   |    Bin 1924 -> 0 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.62.ttx   |   1030 +
+ .../basics/Roboto-Regular.abc.retain-gids.63.ttf   |    Bin 1988 -> 0 bytes
+ .../basics/Roboto-Regular.abc.retain-gids.63.ttx   |   1083 +
+ ...egular.abc.retain-gids.retain-all-codepoint.ttf |    Bin 2452 -> 0 bytes
+ ...egular.abc.retain-gids.retain-all-codepoint.ttx |   1407 +
+ .../cbdt/NotoColorEmoji.subset.default.2049.ttf    |    Bin 3112 -> 0 bytes
+ .../cbdt/NotoColorEmoji.subset.default.2049.ttx    |    397 +
+ .../cbdt/NotoColorEmoji.subset.default.38,2049.ttf |    Bin 4084 -> 0 bytes
+ .../cbdt/NotoColorEmoji.subset.default.38,2049.ttx |    474 +
+ .../cbdt/NotoColorEmoji.subset.default.38,20E3.ttf |    Bin 3568 -> 0 bytes
+ .../cbdt/NotoColorEmoji.subset.default.38,20E3.ttx |    441 +
+ ...rEmoji.subset.default.38,39,AE,2049,38,20E3.ttf |    Bin 10124 -> 0 bytes
+ ...rEmoji.subset.default.38,39,AE,2049,38,20E3.ttx |    898 +
+ .../NotoColorEmoji.subset.default.38,AE,2049.ttf   |    Bin 7544 -> 0 bytes
+ .../NotoColorEmoji.subset.default.38,AE,2049.ttx   |    705 +
+ .../cbdt/NotoColorEmoji.subset.default.39.ttf      |    Bin 1920 -> 0 bytes
+ .../cbdt/NotoColorEmoji.subset.default.39.ttx      |    323 +
+ .../cbdt/NotoColorEmoji.subset.default.AE.ttf      |    Bin 4412 -> 0 bytes
+ .../cbdt/NotoColorEmoji.subset.default.AE.ttx      |    478 +
+ ...lorEmoji.subset.drop-hints-retain-gids.2049.ttf |    Bin 3136 -> 0 bytes
+ ...lorEmoji.subset.drop-hints-retain-gids.2049.ttx |    406 +
+ ...Emoji.subset.drop-hints-retain-gids.38,2049.ttf |    Bin 4108 -> 0 bytes
+ ...Emoji.subset.drop-hints-retain-gids.38,2049.ttx |    480 +
+ ...Emoji.subset.drop-hints-retain-gids.38,20E3.ttf |    Bin 3600 -> 0 bytes
+ ...Emoji.subset.drop-hints-retain-gids.38,20E3.ttx |    450 +
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 10124 -> 0 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttx |    898 +
+ ...ji.subset.drop-hints-retain-gids.38,AE,2049.ttf |    Bin 7564 -> 0 bytes
+ ...ji.subset.drop-hints-retain-gids.38,AE,2049.ttx |    708 +
+ ...ColorEmoji.subset.drop-hints-retain-gids.39.ttf |    Bin 1928 -> 0 bytes
+ ...ColorEmoji.subset.drop-hints-retain-gids.39.ttx |    326 +
+ ...ColorEmoji.subset.drop-hints-retain-gids.AE.ttf |    Bin 4428 -> 0 bytes
+ ...ColorEmoji.subset.drop-hints-retain-gids.AE.ttx |    484 +
+ .../cbdt/NotoColorEmoji.subset.drop-hints.2049.ttf |    Bin 3112 -> 0 bytes
+ .../cbdt/NotoColorEmoji.subset.drop-hints.2049.ttx |    397 +
+ .../NotoColorEmoji.subset.drop-hints.38,2049.ttf   |    Bin 4084 -> 0 bytes
+ .../NotoColorEmoji.subset.drop-hints.38,2049.ttx   |    474 +
+ .../NotoColorEmoji.subset.drop-hints.38,20E3.ttf   |    Bin 3568 -> 0 bytes
+ .../NotoColorEmoji.subset.drop-hints.38,20E3.ttx   |    441 +
+ ...oji.subset.drop-hints.38,39,AE,2049,38,20E3.ttf |    Bin 10124 -> 0 bytes
+ ...oji.subset.drop-hints.38,39,AE,2049,38,20E3.ttx |    898 +
+ ...NotoColorEmoji.subset.drop-hints.38,AE,2049.ttf |    Bin 7544 -> 0 bytes
+ ...NotoColorEmoji.subset.drop-hints.38,AE,2049.ttx |    705 +
+ .../cbdt/NotoColorEmoji.subset.drop-hints.39.ttf   |    Bin 1920 -> 0 bytes
+ .../cbdt/NotoColorEmoji.subset.drop-hints.39.ttx   |    323 +
+ .../cbdt/NotoColorEmoji.subset.drop-hints.AE.ttf   |    Bin 4412 -> 0 bytes
+ .../cbdt/NotoColorEmoji.subset.drop-hints.AE.ttx   |    478 +
+ .../NotoColorEmoji.subset.gap.default.2049.ttf     |    Bin 3112 -> 0 bytes
+ .../NotoColorEmoji.subset.gap.default.2049.ttx     |    397 +
+ .../NotoColorEmoji.subset.gap.default.38,2049.ttf  |    Bin 4084 -> 0 bytes
+ .../NotoColorEmoji.subset.gap.default.38,2049.ttx  |    474 +
+ .../NotoColorEmoji.subset.gap.default.38,20E3.ttf  |    Bin 3568 -> 0 bytes
+ .../NotoColorEmoji.subset.gap.default.38,20E3.ttx  |    441 +
+ ...ji.subset.gap.default.38,39,AE,2049,38,20E3.ttf |    Bin 9188 -> 0 bytes
+ ...ji.subset.gap.default.38,39,AE,2049,38,20E3.ttx |    827 +
+ ...otoColorEmoji.subset.gap.default.38,AE,2049.ttf |    Bin 7544 -> 0 bytes
+ ...otoColorEmoji.subset.gap.default.38,AE,2049.ttx |    705 +
+ .../cbdt/NotoColorEmoji.subset.gap.default.39.ttf  |    Bin 908 -> 0 bytes
+ .../cbdt/NotoColorEmoji.subset.gap.default.39.ttx  |    207 +
+ .../cbdt/NotoColorEmoji.subset.gap.default.AE.ttf  |    Bin 4412 -> 0 bytes
+ .../cbdt/NotoColorEmoji.subset.gap.default.AE.ttx  |    478 +
+ ...moji.subset.gap.drop-hints-retain-gids.2049.ttf |    Bin 3136 -> 0 bytes
+ ...moji.subset.gap.drop-hints-retain-gids.2049.ttx |    406 +
+ ...i.subset.gap.drop-hints-retain-gids.38,2049.ttf |    Bin 4108 -> 0 bytes
+ ...i.subset.gap.drop-hints-retain-gids.38,2049.ttx |    480 +
+ ...i.subset.gap.drop-hints-retain-gids.38,20E3.ttf |    Bin 3600 -> 0 bytes
+ ...i.subset.gap.drop-hints-retain-gids.38,20E3.ttx |    450 +
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 9188 -> 0 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttx |    827 +
+ ...ubset.gap.drop-hints-retain-gids.38,AE,2049.ttf |    Bin 7564 -> 0 bytes
+ ...ubset.gap.drop-hints-retain-gids.38,AE,2049.ttx |    708 +
+ ...rEmoji.subset.gap.drop-hints-retain-gids.39.ttf |    Bin 916 -> 0 bytes
+ ...rEmoji.subset.gap.drop-hints-retain-gids.39.ttx |    210 +
+ ...rEmoji.subset.gap.drop-hints-retain-gids.AE.ttf |    Bin 4428 -> 0 bytes
+ ...rEmoji.subset.gap.drop-hints-retain-gids.AE.ttx |    484 +
+ .../NotoColorEmoji.subset.gap.drop-hints.2049.ttf  |    Bin 3112 -> 0 bytes
+ .../NotoColorEmoji.subset.gap.drop-hints.2049.ttx  |    397 +
+ ...otoColorEmoji.subset.gap.drop-hints.38,2049.ttf |    Bin 4084 -> 0 bytes
+ ...otoColorEmoji.subset.gap.drop-hints.38,2049.ttx |    474 +
+ ...otoColorEmoji.subset.gap.drop-hints.38,20E3.ttf |    Bin 3568 -> 0 bytes
+ ...otoColorEmoji.subset.gap.drop-hints.38,20E3.ttx |    441 +
+ ...subset.gap.drop-hints.38,39,AE,2049,38,20E3.ttf |    Bin 9188 -> 0 bytes
+ ...subset.gap.drop-hints.38,39,AE,2049,38,20E3.ttx |    827 +
+ ...ColorEmoji.subset.gap.drop-hints.38,AE,2049.ttf |    Bin 7544 -> 0 bytes
+ ...ColorEmoji.subset.gap.drop-hints.38,AE,2049.ttx |    705 +
+ .../NotoColorEmoji.subset.gap.drop-hints.39.ttf    |    Bin 908 -> 0 bytes
+ .../NotoColorEmoji.subset.gap.drop-hints.39.ttx    |    207 +
+ .../NotoColorEmoji.subset.gap.drop-hints.AE.ttf    |    Bin 4412 -> 0 bytes
+ .../NotoColorEmoji.subset.gap.drop-hints.AE.ttx    |    478 +
+ .../NotoColorEmoji.subset.gap.retain-gids.2049.ttf |    Bin 3136 -> 0 bytes
+ .../NotoColorEmoji.subset.gap.retain-gids.2049.ttx |    406 +
+ ...toColorEmoji.subset.gap.retain-gids.38,2049.ttf |    Bin 4108 -> 0 bytes
+ ...toColorEmoji.subset.gap.retain-gids.38,2049.ttx |    480 +
+ ...toColorEmoji.subset.gap.retain-gids.38,20E3.ttf |    Bin 3600 -> 0 bytes
+ ...toColorEmoji.subset.gap.retain-gids.38,20E3.ttx |    450 +
+ ...ubset.gap.retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 9188 -> 0 bytes
+ ...ubset.gap.retain-gids.38,39,AE,2049,38,20E3.ttx |    827 +
+ ...olorEmoji.subset.gap.retain-gids.38,AE,2049.ttf |    Bin 7564 -> 0 bytes
+ ...olorEmoji.subset.gap.retain-gids.38,AE,2049.ttx |    708 +
+ .../NotoColorEmoji.subset.gap.retain-gids.39.ttf   |    Bin 916 -> 0 bytes
+ .../NotoColorEmoji.subset.gap.retain-gids.39.ttx   |    210 +
+ .../NotoColorEmoji.subset.gap.retain-gids.AE.ttf   |    Bin 4428 -> 0 bytes
+ .../NotoColorEmoji.subset.gap.retain-gids.AE.ttx   |    484 +
+ ...olorEmoji.subset.index_format3.default.2049.ttf |    Bin 3108 -> 0 bytes
+ ...olorEmoji.subset.index_format3.default.2049.ttx |    397 +
+ ...rEmoji.subset.index_format3.default.38,2049.ttf |    Bin 4076 -> 0 bytes
+ ...rEmoji.subset.index_format3.default.38,2049.ttx |    474 +
+ ...rEmoji.subset.index_format3.default.38,20E3.ttf |    Bin 3560 -> 0 bytes
+ ...rEmoji.subset.index_format3.default.38,20E3.ttx |    441 +
+ ...index_format3.default.38,39,AE,2049,38,20E3.ttf |    Bin 10112 -> 0 bytes
+ ...index_format3.default.38,39,AE,2049,38,20E3.ttx |    898 +
+ ...oji.subset.index_format3.default.38,AE,2049.ttf |    Bin 7536 -> 0 bytes
+ ...oji.subset.index_format3.default.38,AE,2049.ttx |    705 +
+ ...oColorEmoji.subset.index_format3.default.39.ttf |    Bin 1916 -> 0 bytes
+ ...oColorEmoji.subset.index_format3.default.39.ttx |    323 +
+ ...oColorEmoji.subset.index_format3.default.AE.ttf |    Bin 4408 -> 0 bytes
+ ...oColorEmoji.subset.index_format3.default.AE.ttx |    478 +
+ ...t.index_format3.drop-hints-retain-gids.2049.ttf |    Bin 3132 -> 0 bytes
+ ...t.index_format3.drop-hints-retain-gids.2049.ttx |    406 +
+ ...ndex_format3.drop-hints-retain-gids.38,2049.ttf |    Bin 4100 -> 0 bytes
+ ...ndex_format3.drop-hints-retain-gids.38,2049.ttx |    480 +
+ ...ndex_format3.drop-hints-retain-gids.38,20E3.ttf |    Bin 3592 -> 0 bytes
+ ...ndex_format3.drop-hints-retain-gids.38,20E3.ttx |    450 +
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 10112 -> 0 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttx |    898 +
+ ...x_format3.drop-hints-retain-gids.38,AE,2049.ttf |    Bin 7552 -> 0 bytes
+ ...x_format3.drop-hints-retain-gids.38,AE,2049.ttx |    708 +
+ ...set.index_format3.drop-hints-retain-gids.39.ttf |    Bin 1924 -> 0 bytes
+ ...set.index_format3.drop-hints-retain-gids.39.ttx |    326 +
+ ...set.index_format3.drop-hints-retain-gids.AE.ttf |    Bin 4424 -> 0 bytes
+ ...set.index_format3.drop-hints-retain-gids.AE.ttx |    484 +
+ ...rEmoji.subset.index_format3.drop-hints.2049.ttf |    Bin 3108 -> 0 bytes
+ ...rEmoji.subset.index_format3.drop-hints.2049.ttx |    397 +
+ ...oji.subset.index_format3.drop-hints.38,2049.ttf |    Bin 4076 -> 0 bytes
+ ...oji.subset.index_format3.drop-hints.38,2049.ttx |    474 +
+ ...oji.subset.index_format3.drop-hints.38,20E3.ttf |    Bin 3560 -> 0 bytes
+ ...oji.subset.index_format3.drop-hints.38,20E3.ttx |    441 +
+ ...ex_format3.drop-hints.38,39,AE,2049,38,20E3.ttf |    Bin 10112 -> 0 bytes
+ ...ex_format3.drop-hints.38,39,AE,2049,38,20E3.ttx |    898 +
+ ....subset.index_format3.drop-hints.38,AE,2049.ttf |    Bin 7536 -> 0 bytes
+ ....subset.index_format3.drop-hints.38,AE,2049.ttx |    705 +
+ ...lorEmoji.subset.index_format3.drop-hints.39.ttf |    Bin 1916 -> 0 bytes
+ ...lorEmoji.subset.index_format3.drop-hints.39.ttx |    323 +
+ ...lorEmoji.subset.index_format3.drop-hints.AE.ttf |    Bin 4408 -> 0 bytes
+ ...lorEmoji.subset.index_format3.drop-hints.AE.ttx |    478 +
+ ...Emoji.subset.index_format3.retain-gids.2049.ttf |    Bin 3132 -> 0 bytes
+ ...Emoji.subset.index_format3.retain-gids.2049.ttx |    406 +
+ ...ji.subset.index_format3.retain-gids.38,2049.ttf |    Bin 4100 -> 0 bytes
+ ...ji.subset.index_format3.retain-gids.38,2049.ttx |    480 +
+ ...ji.subset.index_format3.retain-gids.38,20E3.ttf |    Bin 3592 -> 0 bytes
+ ...ji.subset.index_format3.retain-gids.38,20E3.ttx |    450 +
+ ...x_format3.retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 10112 -> 0 bytes
+ ...x_format3.retain-gids.38,39,AE,2049,38,20E3.ttx |    898 +
+ ...subset.index_format3.retain-gids.38,AE,2049.ttf |    Bin 7552 -> 0 bytes
+ ...subset.index_format3.retain-gids.38,AE,2049.ttx |    708 +
+ ...orEmoji.subset.index_format3.retain-gids.39.ttf |    Bin 1924 -> 0 bytes
+ ...orEmoji.subset.index_format3.retain-gids.39.ttx |    326 +
+ ...orEmoji.subset.index_format3.retain-gids.AE.ttf |    Bin 4424 -> 0 bytes
+ ...orEmoji.subset.index_format3.retain-gids.AE.ttx |    484 +
+ ...ji.subset.multiple_size_tables.default.2049.ttf |    Bin 5312 -> 0 bytes
+ ...ji.subset.multiple_size_tables.default.2049.ttx |    587 +
+ ...subset.multiple_size_tables.default.38,2049.ttf |    Bin 7244 -> 0 bytes
+ ...subset.multiple_size_tables.default.38,2049.ttx |    736 +
+ ...subset.multiple_size_tables.default.38,20E3.ttf |    Bin 6212 -> 0 bytes
+ ...subset.multiple_size_tables.default.38,20E3.ttx |    671 +
+ ...e_size_tables.default.38,39,AE,2049,38,20E3.ttf |    Bin 19280 -> 0 bytes
+ ...e_size_tables.default.38,39,AE,2049,38,20E3.ttx |   1570 +
+ ...set.multiple_size_tables.default.38,AE,2049.ttf |    Bin 14140 -> 0 bytes
+ ...set.multiple_size_tables.default.38,AE,2049.ttx |   1193 +
+ ...moji.subset.multiple_size_tables.default.39.ttf |    Bin 2928 -> 0 bytes
+ ...moji.subset.multiple_size_tables.default.39.ttx |    439 +
+ ...moji.subset.multiple_size_tables.default.AE.ttf |    Bin 7916 -> 0 bytes
+ ...moji.subset.multiple_size_tables.default.AE.ttx |    749 +
+ ...ple_size_tables.drop-hints-retain-gids.2049.ttf |    Bin 5336 -> 0 bytes
+ ...ple_size_tables.drop-hints-retain-gids.2049.ttx |    596 +
+ ..._size_tables.drop-hints-retain-gids.38,2049.ttf |    Bin 7268 -> 0 bytes
+ ..._size_tables.drop-hints-retain-gids.38,2049.ttx |    742 +
+ ..._size_tables.drop-hints-retain-gids.38,20E3.ttf |    Bin 6244 -> 0 bytes
+ ..._size_tables.drop-hints-retain-gids.38,20E3.ttx |    680 +
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 19280 -> 0 bytes
+ ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttx |   1570 +
+ ...ze_tables.drop-hints-retain-gids.38,AE,2049.ttf |    Bin 14164 -> 0 bytes
+ ...ze_tables.drop-hints-retain-gids.38,AE,2049.ttx |   1196 +
+ ...tiple_size_tables.drop-hints-retain-gids.39.ttf |    Bin 2936 -> 0 bytes
+ ...tiple_size_tables.drop-hints-retain-gids.39.ttx |    442 +
+ ...tiple_size_tables.drop-hints-retain-gids.AE.ttf |    Bin 7932 -> 0 bytes
+ ...tiple_size_tables.drop-hints-retain-gids.AE.ttx |    755 +
+ ...subset.multiple_size_tables.drop-hints.2049.ttf |    Bin 5312 -> 0 bytes
+ ...subset.multiple_size_tables.drop-hints.2049.ttx |    587 +
+ ...set.multiple_size_tables.drop-hints.38,2049.ttf |    Bin 7244 -> 0 bytes
+ ...set.multiple_size_tables.drop-hints.38,2049.ttx |    736 +
+ ...set.multiple_size_tables.drop-hints.38,20E3.ttf |    Bin 6212 -> 0 bytes
+ ...set.multiple_size_tables.drop-hints.38,20E3.ttx |    671 +
+ ...ize_tables.drop-hints.38,39,AE,2049,38,20E3.ttf |    Bin 19280 -> 0 bytes
+ ...ize_tables.drop-hints.38,39,AE,2049,38,20E3.ttx |   1570 +
+ ....multiple_size_tables.drop-hints.38,AE,2049.ttf |    Bin 14140 -> 0 bytes
+ ....multiple_size_tables.drop-hints.38,AE,2049.ttx |   1193 +
+ ...i.subset.multiple_size_tables.drop-hints.39.ttf |    Bin 2928 -> 0 bytes
+ ...i.subset.multiple_size_tables.drop-hints.39.ttx |    439 +
+ ...i.subset.multiple_size_tables.drop-hints.AE.ttf |    Bin 7916 -> 0 bytes
+ ...i.subset.multiple_size_tables.drop-hints.AE.ttx |    749 +
+ ...ubset.multiple_size_tables.retain-gids.2049.ttf |    Bin 5336 -> 0 bytes
+ ...ubset.multiple_size_tables.retain-gids.2049.ttx |    596 +
+ ...et.multiple_size_tables.retain-gids.38,2049.ttf |    Bin 7268 -> 0 bytes
+ ...et.multiple_size_tables.retain-gids.38,2049.ttx |    742 +
+ ...et.multiple_size_tables.retain-gids.38,20E3.ttf |    Bin 6244 -> 0 bytes
+ ...et.multiple_size_tables.retain-gids.38,20E3.ttx |    680 +
+ ...ze_tables.retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 19280 -> 0 bytes
+ ...ze_tables.retain-gids.38,39,AE,2049,38,20E3.ttx |   1570 +
+ ...multiple_size_tables.retain-gids.38,AE,2049.ttf |    Bin 14164 -> 0 bytes
+ ...multiple_size_tables.retain-gids.38,AE,2049.ttx |   1196 +
+ ....subset.multiple_size_tables.retain-gids.39.ttf |    Bin 2936 -> 0 bytes
+ ....subset.multiple_size_tables.retain-gids.39.ttx |    442 +
+ ....subset.multiple_size_tables.retain-gids.AE.ttf |    Bin 7932 -> 0 bytes
+ ....subset.multiple_size_tables.retain-gids.AE.ttx |    755 +
+ .../NotoColorEmoji.subset.retain-gids.2049.ttf     |    Bin 3136 -> 0 bytes
+ .../NotoColorEmoji.subset.retain-gids.2049.ttx     |    406 +
+ .../NotoColorEmoji.subset.retain-gids.38,2049.ttf  |    Bin 4108 -> 0 bytes
+ .../NotoColorEmoji.subset.retain-gids.38,2049.ttx  |    480 +
+ .../NotoColorEmoji.subset.retain-gids.38,20E3.ttf  |    Bin 3600 -> 0 bytes
+ .../NotoColorEmoji.subset.retain-gids.38,20E3.ttx  |    450 +
+ ...ji.subset.retain-gids.38,39,AE,2049,38,20E3.ttf |    Bin 10124 -> 0 bytes
+ ...ji.subset.retain-gids.38,39,AE,2049,38,20E3.ttx |    898 +
+ ...otoColorEmoji.subset.retain-gids.38,AE,2049.ttf |    Bin 7564 -> 0 bytes
+ ...otoColorEmoji.subset.retain-gids.38,AE,2049.ttx |    708 +
+ .../cbdt/NotoColorEmoji.subset.retain-gids.39.ttf  |    Bin 1928 -> 0 bytes
+ .../cbdt/NotoColorEmoji.subset.retain-gids.39.ttx  |    326 +
+ .../cbdt/NotoColorEmoji.subset.retain-gids.AE.ttf  |    Bin 4428 -> 0 bytes
+ .../cbdt/NotoColorEmoji.subset.retain-gids.AE.ttx  |    484 +
+ ...eSansPro-Regular.default.1FC,21,41,20,62,63.otf |    Bin 2580 -> 0 bytes
+ ...eSansPro-Regular.default.1FC,21,41,20,62,63.ttx |    738 +
+ .../SourceSansPro-Regular.default.61,62,63.otf     |    Bin 2216 -> 0 bytes
+ .../SourceSansPro-Regular.default.61,62,63.ttx     |    587 +
+ ...ourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf |    Bin 2328 -> 0 bytes
+ ...ourceSansPro-Regular.default.D7,D8,D9,DA,DE.ttx |    578 +
+ ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf |    Bin 20232 -> 0 bytes
+ ...subroutinize-retain-gids.1FC,21,41,20,62,63.ttx |   6312 +
+ ...Regular.desubroutinize-retain-gids.61,62,63.otf |    Bin 2316 -> 0 bytes
+ ...Regular.desubroutinize-retain-gids.61,62,63.ttx |    627 +
+ ...r.desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf |    Bin 30540 -> 0 bytes
+ ...r.desubroutinize-retain-gids.D7,D8,D9,DA,DE.ttx |   9248 ++
+ ...o-Regular.desubroutinize.1FC,21,41,20,62,63.otf |    Bin 2436 -> 0 bytes
+ ...o-Regular.desubroutinize.1FC,21,41,20,62,63.ttx |    612 +
+ ...urceSansPro-Regular.desubroutinize.61,62,63.otf |    Bin 2120 -> 0 bytes
+ ...urceSansPro-Regular.desubroutinize.61,62,63.ttx |    492 +
+ ...nsPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf |    Bin 2312 -> 0 bytes
+ ...nsPro-Regular.desubroutinize.D7,D8,D9,DA,DE.ttx |    523 +
+ ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf |    Bin 20064 -> 0 bytes
+ ...subroutinize-retain-gids.1FC,21,41,20,62,63.ttx |   6281 +
+ ...p-hints-desubroutinize-retain-gids.61,62,63.otf |    Bin 2192 -> 0 bytes
+ ...p-hints-desubroutinize-retain-gids.61,62,63.ttx |    607 +
+ ...s-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf |    Bin 30372 -> 0 bytes
+ ...s-desubroutinize-retain-gids.D7,D8,D9,DA,DE.ttx |   9215 ++
+ ...rop-hints-desubroutinize.1FC,21,41,20,62,63.otf |    Bin 2268 -> 0 bytes
+ ...rop-hints-desubroutinize.1FC,21,41,20,62,63.ttx |    581 +
+ ...-Regular.drop-hints-desubroutinize.61,62,63.otf |    Bin 1996 -> 0 bytes
+ ...-Regular.drop-hints-desubroutinize.61,62,63.ttx |    472 +
+ ...ar.drop-hints-desubroutinize.D7,D8,D9,DA,DE.otf |    Bin 2148 -> 0 bytes
+ ...ar.drop-hints-desubroutinize.D7,D8,D9,DA,DE.ttx |    490 +
+ ...r.drop-hints-retain-gids.1FC,21,41,20,62,63.otf |    Bin 20156 -> 0 bytes
+ ...r.drop-hints-retain-gids.1FC,21,41,20,62,63.ttx |   6367 +
+ ...Pro-Regular.drop-hints-retain-gids.61,62,63.otf |    Bin 2228 -> 0 bytes
+ ...Pro-Regular.drop-hints-retain-gids.61,62,63.ttx |    670 +
+ ...gular.drop-hints-retain-gids.D7,D8,D9,DA,DE.otf |    Bin 30384 -> 0 bytes
+ ...gular.drop-hints-retain-gids.D7,D8,D9,DA,DE.ttx |   9259 ++
+ ...nsPro-Regular.drop-hints.1FC,21,41,20,62,63.otf |    Bin 2352 -> 0 bytes
+ ...nsPro-Regular.drop-hints.1FC,21,41,20,62,63.ttx |    667 +
+ .../SourceSansPro-Regular.drop-hints.61,62,63.otf  |    Bin 2060 -> 0 bytes
+ .../SourceSansPro-Regular.drop-hints.61,62,63.ttx  |    535 +
+ ...ceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf |    Bin 2164 -> 0 bytes
+ ...ceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.ttx |    534 +
+ ...sPro-Regular.retain-gids.1FC,21,41,20,62,63.otf |    Bin 20384 -> 0 bytes
+ ...sPro-Regular.retain-gids.1FC,21,41,20,62,63.ttx |   6438 +
+ .../SourceSansPro-Regular.retain-gids.61,62,63.otf |    Bin 2384 -> 0 bytes
+ .../SourceSansPro-Regular.retain-gids.61,62,63.ttx |    722 +
+ ...eSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.otf |    Bin 30556 -> 0 bytes
+ ...eSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.ttx |   9303 ++
+ ...ubset.default.3042,3044,3046,3048,304A,304B.otf |    Bin 4884 -> 0 bytes
+ ...ubset.default.3042,3044,3046,3048,304A,304B.ttx |   1165 +
+ ...ubset.default.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 6276 -> 0 bytes
+ ...ubset.default.3042,3044,3046,73E0,5EA6,8F38.ttx |   1708 +
+ ...eHanSans-Regular_subset.default.61,63,65,6B.otf |    Bin 2588 -> 0 bytes
+ ...eHanSans-Regular_subset.default.61,63,65,6B.ttx |    688 +
+ ...ubset.default.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 6736 -> 0 bytes
+ ...ubset.default.660E,6975,73E0,5EA6,8F38,6E05.ttx |   1585 +
+ .../SourceHanSans-Regular_subset.default.660E.otf  |    Bin 2456 -> 0 bytes
+ .../SourceHanSans-Regular_subset.default.660E.ttx  |    577 +
+ ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf |    Bin 129876 -> 0 bytes
+ ...e-retain-gids.3042,3044,3046,3048,304A,304B.ttx |  62430 ++++++++
+ ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 130920 -> 0 bytes
+ ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.ttx |  62745 ++++++++
+ ...bset.desubroutinize-retain-gids.61,63,65,6B.otf |    Bin 3412 -> 0 bytes
+ ...bset.desubroutinize-retain-gids.61,63,65,6B.ttx |   1081 +
+ ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 122048 -> 0 bytes
+ ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.ttx |  57783 ++++++++
+ ...ular_subset.desubroutinize-retain-gids.660E.otf |    Bin 50760 -> 0 bytes
+ ...ular_subset.desubroutinize-retain-gids.660E.ttx |  24455 ++++
+ ...esubroutinize.3042,3044,3046,3048,304A,304B.otf |    Bin 4724 -> 0 bytes
+ ...esubroutinize.3042,3044,3046,3048,304A,304B.ttx |   1044 +
+ ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 5928 -> 0 bytes
+ ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.ttx |   1414 +
+ ...s-Regular_subset.desubroutinize.61,63,65,6B.otf |    Bin 2520 -> 0 bytes
+ ...s-Regular_subset.desubroutinize.61,63,65,6B.ttx |    630 +
+ ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 6232 -> 0 bytes
+ ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.ttx |   1152 +
+ ...eHanSans-Regular_subset.desubroutinize.660E.otf |    Bin 2440 -> 0 bytes
+ ...eHanSans-Regular_subset.desubroutinize.660E.ttx |    560 +
+ ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf |    Bin 129448 -> 0 bytes
+ ...e-retain-gids.3042,3044,3046,3048,304A,304B.ttx |  62346 ++++++++
+ ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 130312 -> 0 bytes
+ ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.ttx |  62647 ++++++++
+ ...ints-desubroutinize-retain-gids.61,63,65,6B.otf |    Bin 3288 -> 0 bytes
+ ...ints-desubroutinize-retain-gids.61,63,65,6B.ttx |   1055 +
+ ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 121284 -> 0 bytes
+ ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.ttx |  57675 ++++++++
+ ....drop-hints-desubroutinize-retain-gids.660E.otf |    Bin 50540 -> 0 bytes
+ ....drop-hints-desubroutinize-retain-gids.660E.ttx |  24416 ++++
+ ...esubroutinize.3042,3044,3046,3048,304A,304B.otf |    Bin 4420 -> 0 bytes
+ ...esubroutinize.3042,3044,3046,3048,304A,304B.ttx |    986 +
+ ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 5416 -> 0 bytes
+ ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.ttx |   1337 +
+ ...ubset.drop-hints-desubroutinize.61,63,65,6B.otf |    Bin 2416 -> 0 bytes
+ ...ubset.drop-hints-desubroutinize.61,63,65,6B.ttx |    609 +
+ ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 5556 -> 0 bytes
+ ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.ttx |   1063 +
+ ...gular_subset.drop-hints-desubroutinize.660E.otf |    Bin 2308 -> 0 bytes
+ ...gular_subset.drop-hints-desubroutinize.660E.ttx |    540 +
+ ...s-retain-gids.3042,3044,3046,3048,304A,304B.otf |    Bin 129576 -> 0 bytes
+ ...s-retain-gids.3042,3044,3046,3048,304A,304B.ttx |  62443 ++++++++
+ ...s-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 130604 -> 0 bytes
+ ...s-retain-gids.3042,3044,3046,73E0,5EA6,8F38.ttx |  62929 +++++++++
+ ...r_subset.drop-hints-retain-gids.61,63,65,6B.otf |    Bin 3248 -> 0 bytes
+ ...r_subset.drop-hints-retain-gids.61,63,65,6B.ttx |   1089 +
+ ...s-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 121776 -> 0 bytes
+ ...s-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.ttx |  58100 ++++++++
+ ...-Regular_subset.drop-hints-retain-gids.660E.otf |    Bin 50552 -> 0 bytes
+ ...-Regular_subset.drop-hints-retain-gids.660E.ttx |  24429 ++++
+ ...et.drop-hints.3042,3044,3046,3048,304A,304B.otf |    Bin 4548 -> 0 bytes
+ ...et.drop-hints.3042,3044,3046,3048,304A,304B.ttx |   1083 +
+ ...et.drop-hints.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 5708 -> 0 bytes
+ ...et.drop-hints.3042,3044,3046,73E0,5EA6,8F38.ttx |   1619 +
+ ...nSans-Regular_subset.drop-hints.61,63,65,6B.otf |    Bin 2448 -> 0 bytes
+ ...nSans-Regular_subset.drop-hints.61,63,65,6B.ttx |    643 +
+ ...et.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 6048 -> 0 bytes
+ ...et.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.ttx |   1488 +
+ ...ourceHanSans-Regular_subset.drop-hints.660E.otf |    Bin 2316 -> 0 bytes
+ ...ourceHanSans-Regular_subset.drop-hints.660E.ttx |    553 +
+ ...t.retain-gids.3042,3044,3046,3048,304A,304B.otf |    Bin 130036 -> 0 bytes
+ ...t.retain-gids.3042,3044,3046,3048,304A,304B.ttx |  62551 ++++++++
+ ...t.retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf |    Bin 131272 -> 0 bytes
+ ...t.retain-gids.3042,3044,3046,73E0,5EA6,8F38.ttx |  63039 +++++++++
+ ...Sans-Regular_subset.retain-gids.61,63,65,6B.otf |    Bin 3408 -> 0 bytes
+ ...Sans-Regular_subset.retain-gids.61,63,65,6B.ttx |   1139 +
+ ...t.retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf |    Bin 122552 -> 0 bytes
+ ...t.retain-gids.660E,6975,73E0,5EA6,8F38,6E05.ttx |  58216 ++++++++
+ ...urceHanSans-Regular_subset.retain-gids.660E.otf |    Bin 50776 -> 0 bytes
+ ...urceHanSans-Regular_subset.retain-gids.660E.ttx |  24472 ++++
+ ...039,1005,100A,103A,1038,1010,103D,1031,104A.otf |    Bin 7724 -> 0 bytes
+ ...039,1005,100A,103A,1038,1010,103D,1031,104A.ttx |   2971 +
+ ...otoSerifMyanmar-Regular.notdef-outline.1092.otf |    Bin 1380 -> 0 bytes
+ ...otoSerifMyanmar-Regular.notdef-outline.1092.ttx |    264 +
+ .../cmap/AdobeBlank-Regular.default.61,62.ttf      |    Bin 1252 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.default.61,62.ttx      |    322 +
+ .../cmap/AdobeBlank-Regular.default.61,FEFA.ttf    |    Bin 1264 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.default.61,FEFA.ttx    |    320 +
+ .../cmap/AdobeBlank-Regular.default.FEE6,FECF.ttf  |    Bin 1216 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.default.FEE6,FECF.ttx  |    314 +
+ .../cmap/AdobeBlank-Regular.default.FEF9,FEFA.ttf  |    Bin 1204 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.default.FEF9,FEFA.ttx  |    314 +
+ .../cmap/AdobeBlank-Regular.default.FEFA.ttf       |    Bin 1184 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.default.FEFA.ttx       |    303 +
+ ...eBlank-Regular.drop-hints-retain-gids.61,62.ttf |    Bin 1468 -> 0 bytes
+ ...eBlank-Regular.drop-hints-retain-gids.61,62.ttx |    606 +
+ ...lank-Regular.drop-hints-retain-gids.61,FEFA.ttf |    Bin 8232 -> 0 bytes
+ ...lank-Regular.drop-hints-retain-gids.61,FEFA.ttx |   7356 +
+ ...nk-Regular.drop-hints-retain-gids.FEE6,FECF.ttf |    Bin 8104 -> 0 bytes
+ ...nk-Regular.drop-hints-retain-gids.FEE6,FECF.ttx |   7270 +
+ ...nk-Regular.drop-hints-retain-gids.FEF9,FEFA.ttf |    Bin 8172 -> 0 bytes
+ ...nk-Regular.drop-hints-retain-gids.FEF9,FEFA.ttx |   7350 +
+ ...beBlank-Regular.drop-hints-retain-gids.FEFA.ttf |    Bin 8156 -> 0 bytes
+ ...beBlank-Regular.drop-hints-retain-gids.FEFA.ttx |   7343 +
+ .../cmap/AdobeBlank-Regular.drop-hints.61,62.ttf   |    Bin 1080 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.61,62.ttx   |    218 +
+ .../cmap/AdobeBlank-Regular.drop-hints.61,FEFA.ttf |    Bin 1092 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.61,FEFA.ttx |    216 +
+ .../AdobeBlank-Regular.drop-hints.FEE6,FECF.ttf    |    Bin 1044 -> 0 bytes
+ .../AdobeBlank-Regular.drop-hints.FEE6,FECF.ttx    |    210 +
+ .../AdobeBlank-Regular.drop-hints.FEF9,FEFA.ttf    |    Bin 1032 -> 0 bytes
+ .../AdobeBlank-Regular.drop-hints.FEF9,FEFA.ttx    |    210 +
+ .../cmap/AdobeBlank-Regular.drop-hints.FEFA.ttf    |    Bin 1012 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.FEFA.ttx    |    199 +
+ .../cmap/AdobeBlank-Regular.name-ids.61,62.ttf     |    Bin 1000 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.61,62.ttx     |    310 +
+ .../cmap/AdobeBlank-Regular.name-ids.61,FEFA.ttf   |    Bin 1012 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.61,FEFA.ttx   |    308 +
+ .../cmap/AdobeBlank-Regular.name-ids.FEE6,FECF.ttf |    Bin 964 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEE6,FECF.ttx |    302 +
+ .../cmap/AdobeBlank-Regular.name-ids.FEF9,FEFA.ttf |    Bin 952 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEF9,FEFA.ttx |    302 +
+ .../cmap/AdobeBlank-Regular.name-ids.FEFA.ttf      |    Bin 932 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEFA.ttx      |    291 +
+ .../cmap/AdobeBlank-Regular.retain-gids.61,62.ttf  |    Bin 1640 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.retain-gids.61,62.ttx  |    710 +
+ .../AdobeBlank-Regular.retain-gids.61,FEFA.ttf     |    Bin 8404 -> 0 bytes
+ .../AdobeBlank-Regular.retain-gids.61,FEFA.ttx     |   7460 +
+ .../AdobeBlank-Regular.retain-gids.FEE6,FECF.ttf   |    Bin 8276 -> 0 bytes
+ .../AdobeBlank-Regular.retain-gids.FEE6,FECF.ttx   |   7374 +
+ .../AdobeBlank-Regular.retain-gids.FEF9,FEFA.ttf   |    Bin 8344 -> 0 bytes
+ .../AdobeBlank-Regular.retain-gids.FEF9,FEFA.ttx   |   7454 +
+ .../cmap/AdobeBlank-Regular.retain-gids.FEFA.ttf   |    Bin 8328 -> 0 bytes
+ .../cmap/AdobeBlank-Regular.retain-gids.FEFA.ttx   |   7447 +
+ .../cmap14/cmap14_font1.default.4E00,4E02,4E03.otf |    Bin 1360 -> 0 bytes
+ .../cmap14/cmap14_font1.default.4E00,4E02,4E03.ttx |    276 +
+ .../cmap14/cmap14_font1.default.4E00,4E03.otf      |    Bin 1236 -> 0 bytes
+ .../cmap14/cmap14_font1.default.4E00,4E03.ttx      |    261 +
+ .../cmap14/cmap14_font1.default.4E00,4E05,4E07.otf |    Bin 1328 -> 0 bytes
+ .../cmap14/cmap14_font1.default.4E00,4E05,4E07.ttx |    278 +
+ .../cmap14/cmap14_font1.default.4E02,4E03,4E08.otf |    Bin 1576 -> 0 bytes
+ .../cmap14/cmap14_font1.default.4E02,4E03,4E08.ttx |    294 +
+ .../expected/cmap14/cmap14_font1.default.4E02.otf  |    Bin 996 -> 0 bytes
+ .../expected/cmap14/cmap14_font1.default.4E02.ttx  |    233 +
+ .../expected/cmap14/cmap14_font1.default.4E03.otf  |    Bin 1080 -> 0 bytes
+ .../expected/cmap14/cmap14_font1.default.4E03.ttx  |    241 +
+ .../cmap14_font1.default.4E05,4E07,4E08,4E09.otf   |    Bin 1848 -> 0 bytes
+ .../cmap14_font1.default.4E05,4E07,4E08,4E09.ttx   |    329 +
+ .../cmap14/cmap14_font1.default.4E08,4E09.otf      |    Bin 1720 -> 0 bytes
+ .../cmap14/cmap14_font1.default.4E08,4E09.ttx      |    302 +
+ .../expected/cmap14/cmap14_font1.default.4E08.otf  |    Bin 1384 -> 0 bytes
+ .../expected/cmap14/cmap14_font1.default.4E08.ttx  |    265 +
+ .../cmap14_font1.default.retain-all-codepoint.otf  |    Bin 2348 -> 0 bytes
+ .../cmap14_font1.default.retain-all-codepoint.ttx  |    418 +
+ ...font1.drop-hints-retain-gids.4E00,4E02,4E03.otf |    Bin 1388 -> 0 bytes
+ ...font1.drop-hints-retain-gids.4E00,4E02,4E03.ttx |    318 +
+ ...ap14_font1.drop-hints-retain-gids.4E00,4E03.otf |    Bin 1272 -> 0 bytes
+ ...ap14_font1.drop-hints-retain-gids.4E00,4E03.ttx |    308 +
+ ...font1.drop-hints-retain-gids.4E00,4E05,4E07.otf |    Bin 1396 -> 0 bytes
+ ...font1.drop-hints-retain-gids.4E00,4E05,4E07.ttx |    340 +
+ ...font1.drop-hints-retain-gids.4E02,4E03,4E08.otf |    Bin 1720 -> 0 bytes
+ ...font1.drop-hints-retain-gids.4E02,4E03,4E08.ttx |    391 +
+ .../cmap14_font1.drop-hints-retain-gids.4E02.otf   |    Bin 1028 -> 0 bytes
+ .../cmap14_font1.drop-hints-retain-gids.4E02.ttx   |    280 +
+ .../cmap14_font1.drop-hints-retain-gids.4E03.otf   |    Bin 1124 -> 0 bytes
+ .../cmap14_font1.drop-hints-retain-gids.4E03.ttx   |    293 +
+ ....drop-hints-retain-gids.4E05,4E07,4E08,4E09.otf |    Bin 1984 -> 0 bytes
+ ....drop-hints-retain-gids.4E05,4E07,4E08,4E09.ttx |    421 +
+ ...ap14_font1.drop-hints-retain-gids.4E08,4E09.otf |    Bin 1872 -> 0 bytes
+ ...ap14_font1.drop-hints-retain-gids.4E08,4E09.ttx |    404 +
+ .../cmap14_font1.drop-hints-retain-gids.4E08.otf   |    Bin 1544 -> 0 bytes
+ .../cmap14_font1.drop-hints-retain-gids.4E08.ttx   |    372 +
+ ...drop-hints-retain-gids.retain-all-codepoint.otf |    Bin 2436 -> 0 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttx |    480 +
+ .../cmap14_font1.drop-hints.4E00,4E02,4E03.otf     |    Bin 1292 -> 0 bytes
+ .../cmap14_font1.drop-hints.4E00,4E02,4E03.ttx     |    268 +
+ .../cmap14/cmap14_font1.drop-hints.4E00,4E03.otf   |    Bin 1168 -> 0 bytes
+ .../cmap14/cmap14_font1.drop-hints.4E00,4E03.ttx   |    253 +
+ .../cmap14_font1.drop-hints.4E00,4E05,4E07.otf     |    Bin 1260 -> 0 bytes
+ .../cmap14_font1.drop-hints.4E00,4E05,4E07.ttx     |    270 +
+ .../cmap14_font1.drop-hints.4E02,4E03,4E08.otf     |    Bin 1512 -> 0 bytes
+ .../cmap14_font1.drop-hints.4E02,4E03,4E08.ttx     |    286 +
+ .../cmap14/cmap14_font1.drop-hints.4E02.otf        |    Bin 928 -> 0 bytes
+ .../cmap14/cmap14_font1.drop-hints.4E02.ttx        |    225 +
+ .../cmap14/cmap14_font1.drop-hints.4E03.otf        |    Bin 1012 -> 0 bytes
+ .../cmap14/cmap14_font1.drop-hints.4E03.ttx        |    233 +
+ ...cmap14_font1.drop-hints.4E05,4E07,4E08,4E09.otf |    Bin 1780 -> 0 bytes
+ ...cmap14_font1.drop-hints.4E05,4E07,4E08,4E09.ttx |    321 +
+ .../cmap14/cmap14_font1.drop-hints.4E08,4E09.otf   |    Bin 1652 -> 0 bytes
+ .../cmap14/cmap14_font1.drop-hints.4E08,4E09.ttx   |    294 +
+ .../cmap14/cmap14_font1.drop-hints.4E08.otf        |    Bin 1316 -> 0 bytes
+ .../cmap14/cmap14_font1.drop-hints.4E08.ttx        |    257 +
+ ...map14_font1.drop-hints.retain-all-codepoint.otf |    Bin 2280 -> 0 bytes
+ ...map14_font1.drop-hints.retain-all-codepoint.ttx |    410 +
+ .../cmap14/cmap14_font1.gids.4E00,4E02,4E03.otf    |    Bin 1388 -> 0 bytes
+ .../cmap14/cmap14_font1.gids.4E00,4E02,4E03.ttx    |    297 +
+ .../cmap14/cmap14_font1.gids.4E00,4E03.otf         |    Bin 1380 -> 0 bytes
+ .../cmap14/cmap14_font1.gids.4E00,4E03.ttx         |    289 +
+ .../cmap14/cmap14_font1.gids.4E00,4E05,4E07.otf    |    Bin 1620 -> 0 bytes
+ .../cmap14/cmap14_font1.gids.4E00,4E05,4E07.ttx    |    318 +
+ .../cmap14/cmap14_font1.gids.4E02,4E03,4E08.otf    |    Bin 1744 -> 0 bytes
+ .../cmap14/cmap14_font1.gids.4E02,4E03,4E08.ttx    |    326 +
+ .../expected/cmap14/cmap14_font1.gids.4E02.otf     |    Bin 1312 -> 0 bytes
+ .../expected/cmap14/cmap14_font1.gids.4E02.ttx     |    277 +
+ .../expected/cmap14/cmap14_font1.gids.4E03.otf     |    Bin 1352 -> 0 bytes
+ .../expected/cmap14/cmap14_font1.gids.4E03.ttx     |    280 +
+ .../cmap14_font1.gids.4E05,4E07,4E08,4E09.otf      |    Bin 2164 -> 0 bytes
+ .../cmap14_font1.gids.4E05,4E07,4E08,4E09.ttx      |    373 +
+ .../cmap14/cmap14_font1.gids.4E08,4E09.otf         |    Bin 2036 -> 0 bytes
+ .../cmap14/cmap14_font1.gids.4E08,4E09.ttx         |    346 +
+ .../expected/cmap14/cmap14_font1.gids.4E08.otf     |    Bin 1704 -> 0 bytes
+ .../expected/cmap14/cmap14_font1.gids.4E08.ttx     |    309 +
+ .../cmap14_font1.gids.retain-all-codepoint.otf     |    Bin 2380 -> 0 bytes
+ .../cmap14_font1.gids.retain-all-codepoint.ttx     |    439 +
+ .../cmap14_font1.name-ids.4E00,4E02,4E03.otf       |    Bin 1292 -> 0 bytes
+ .../cmap14_font1.name-ids.4E00,4E02,4E03.ttx       |    264 +
+ .../cmap14/cmap14_font1.name-ids.4E00,4E03.otf     |    Bin 1168 -> 0 bytes
+ .../cmap14/cmap14_font1.name-ids.4E00,4E03.ttx     |    249 +
+ .../cmap14_font1.name-ids.4E00,4E05,4E07.otf       |    Bin 1260 -> 0 bytes
+ .../cmap14_font1.name-ids.4E00,4E05,4E07.ttx       |    266 +
+ .../cmap14_font1.name-ids.4E02,4E03,4E08.otf       |    Bin 1508 -> 0 bytes
+ .../cmap14_font1.name-ids.4E02,4E03,4E08.ttx       |    282 +
+ .../expected/cmap14/cmap14_font1.name-ids.4E02.otf |    Bin 928 -> 0 bytes
+ .../expected/cmap14/cmap14_font1.name-ids.4E02.ttx |    221 +
+ .../expected/cmap14/cmap14_font1.name-ids.4E03.otf |    Bin 1012 -> 0 bytes
+ .../expected/cmap14/cmap14_font1.name-ids.4E03.ttx |    229 +
+ .../cmap14_font1.name-ids.4E05,4E07,4E08,4E09.otf  |    Bin 1780 -> 0 bytes
+ .../cmap14_font1.name-ids.4E05,4E07,4E08,4E09.ttx  |    317 +
+ .../cmap14/cmap14_font1.name-ids.4E08,4E09.otf     |    Bin 1652 -> 0 bytes
+ .../cmap14/cmap14_font1.name-ids.4E08,4E09.ttx     |    290 +
+ .../expected/cmap14/cmap14_font1.name-ids.4E08.otf |    Bin 1316 -> 0 bytes
+ .../expected/cmap14/cmap14_font1.name-ids.4E08.ttx |    253 +
+ .../cmap14_font1.name-ids.retain-all-codepoint.otf |    Bin 2280 -> 0 bytes
+ .../cmap14_font1.name-ids.retain-all-codepoint.ttx |    406 +
+ .../cmap14_font1.retain-gids.4E00,4E02,4E03.otf    |    Bin 1452 -> 0 bytes
+ .../cmap14_font1.retain-gids.4E00,4E02,4E03.ttx    |    326 +
+ .../cmap14/cmap14_font1.retain-gids.4E00,4E03.otf  |    Bin 1340 -> 0 bytes
+ .../cmap14/cmap14_font1.retain-gids.4E00,4E03.ttx  |    316 +
+ .../cmap14_font1.retain-gids.4E00,4E05,4E07.otf    |    Bin 1464 -> 0 bytes
+ .../cmap14_font1.retain-gids.4E00,4E05,4E07.ttx    |    348 +
+ .../cmap14_font1.retain-gids.4E02,4E03,4E08.otf    |    Bin 1788 -> 0 bytes
+ .../cmap14_font1.retain-gids.4E02,4E03,4E08.ttx    |    399 +
+ .../cmap14/cmap14_font1.retain-gids.4E02.otf       |    Bin 1096 -> 0 bytes
+ .../cmap14/cmap14_font1.retain-gids.4E02.ttx       |    288 +
+ .../cmap14/cmap14_font1.retain-gids.4E03.otf       |    Bin 1192 -> 0 bytes
+ .../cmap14/cmap14_font1.retain-gids.4E03.ttx       |    301 +
+ ...map14_font1.retain-gids.4E05,4E07,4E08,4E09.otf |    Bin 2048 -> 0 bytes
+ ...map14_font1.retain-gids.4E05,4E07,4E08,4E09.ttx |    429 +
+ .../cmap14/cmap14_font1.retain-gids.4E08,4E09.otf  |    Bin 1940 -> 0 bytes
+ .../cmap14/cmap14_font1.retain-gids.4E08,4E09.ttx  |    412 +
+ .../cmap14/cmap14_font1.retain-gids.4E08.otf       |    Bin 1608 -> 0 bytes
+ .../cmap14/cmap14_font1.retain-gids.4E08.ttx       |    380 +
+ ...ap14_font1.retain-gids.retain-all-codepoint.otf |    Bin 2500 -> 0 bytes
+ ...ap14_font1.retain-gids.retain-all-codepoint.ttx |    488 +
+ .../cmap14/cmap14_font2.default.4E00,4E02,4E03.otf |    Bin 1360 -> 0 bytes
+ .../cmap14/cmap14_font2.default.4E00,4E02,4E03.ttx |    276 +
+ .../cmap14/cmap14_font2.default.4E00,4E03.otf      |    Bin 1236 -> 0 bytes
+ .../cmap14/cmap14_font2.default.4E00,4E03.ttx      |    261 +
+ .../cmap14/cmap14_font2.default.4E00,4E05,4E07.otf |    Bin 1332 -> 0 bytes
+ .../cmap14/cmap14_font2.default.4E00,4E05,4E07.ttx |    278 +
+ .../cmap14/cmap14_font2.default.4E02,4E03,4E08.otf |    Bin 1576 -> 0 bytes
+ .../cmap14/cmap14_font2.default.4E02,4E03,4E08.ttx |    294 +
+ .../expected/cmap14/cmap14_font2.default.4E02.otf  |    Bin 992 -> 0 bytes
+ .../expected/cmap14/cmap14_font2.default.4E02.ttx  |    233 +
+ .../expected/cmap14/cmap14_font2.default.4E03.otf  |    Bin 1076 -> 0 bytes
+ .../expected/cmap14/cmap14_font2.default.4E03.ttx  |    241 +
+ .../cmap14_font2.default.4E05,4E07,4E08,4E09.otf   |    Bin 1848 -> 0 bytes
+ .../cmap14_font2.default.4E05,4E07,4E08,4E09.ttx   |    329 +
+ .../cmap14/cmap14_font2.default.4E08,4E09.otf      |    Bin 1716 -> 0 bytes
+ .../cmap14/cmap14_font2.default.4E08,4E09.ttx      |    302 +
+ .../expected/cmap14/cmap14_font2.default.4E08.otf  |    Bin 1380 -> 0 bytes
+ .../expected/cmap14/cmap14_font2.default.4E08.ttx  |    265 +
+ .../cmap14_font2.default.retain-all-codepoint.otf  |    Bin 2344 -> 0 bytes
+ .../cmap14_font2.default.retain-all-codepoint.ttx  |    418 +
+ ...font2.drop-hints-retain-gids.4E00,4E02,4E03.otf |    Bin 1388 -> 0 bytes
+ ...font2.drop-hints-retain-gids.4E00,4E02,4E03.ttx |    318 +
+ ...ap14_font2.drop-hints-retain-gids.4E00,4E03.otf |    Bin 1272 -> 0 bytes
+ ...ap14_font2.drop-hints-retain-gids.4E00,4E03.ttx |    308 +
+ ...font2.drop-hints-retain-gids.4E00,4E05,4E07.otf |    Bin 1400 -> 0 bytes
+ ...font2.drop-hints-retain-gids.4E00,4E05,4E07.ttx |    340 +
+ ...font2.drop-hints-retain-gids.4E02,4E03,4E08.otf |    Bin 1720 -> 0 bytes
+ ...font2.drop-hints-retain-gids.4E02,4E03,4E08.ttx |    391 +
+ .../cmap14_font2.drop-hints-retain-gids.4E02.otf   |    Bin 1024 -> 0 bytes
+ .../cmap14_font2.drop-hints-retain-gids.4E02.ttx   |    280 +
+ .../cmap14_font2.drop-hints-retain-gids.4E03.otf   |    Bin 1120 -> 0 bytes
+ .../cmap14_font2.drop-hints-retain-gids.4E03.ttx   |    293 +
+ ....drop-hints-retain-gids.4E05,4E07,4E08,4E09.otf |    Bin 1984 -> 0 bytes
+ ....drop-hints-retain-gids.4E05,4E07,4E08,4E09.ttx |    421 +
+ ...ap14_font2.drop-hints-retain-gids.4E08,4E09.otf |    Bin 1868 -> 0 bytes
+ ...ap14_font2.drop-hints-retain-gids.4E08,4E09.ttx |    404 +
+ .../cmap14_font2.drop-hints-retain-gids.4E08.otf   |    Bin 1540 -> 0 bytes
+ .../cmap14_font2.drop-hints-retain-gids.4E08.ttx   |    372 +
+ ...drop-hints-retain-gids.retain-all-codepoint.otf |    Bin 2432 -> 0 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttx |    480 +
+ .../cmap14_font2.drop-hints.4E00,4E02,4E03.otf     |    Bin 1292 -> 0 bytes
+ .../cmap14_font2.drop-hints.4E00,4E02,4E03.ttx     |    268 +
+ .../cmap14/cmap14_font2.drop-hints.4E00,4E03.otf   |    Bin 1168 -> 0 bytes
+ .../cmap14/cmap14_font2.drop-hints.4E00,4E03.ttx   |    253 +
+ .../cmap14_font2.drop-hints.4E00,4E05,4E07.otf     |    Bin 1264 -> 0 bytes
+ .../cmap14_font2.drop-hints.4E00,4E05,4E07.ttx     |    270 +
+ .../cmap14_font2.drop-hints.4E02,4E03,4E08.otf     |    Bin 1512 -> 0 bytes
+ .../cmap14_font2.drop-hints.4E02,4E03,4E08.ttx     |    286 +
+ .../cmap14/cmap14_font2.drop-hints.4E02.otf        |    Bin 924 -> 0 bytes
+ .../cmap14/cmap14_font2.drop-hints.4E02.ttx        |    225 +
+ .../cmap14/cmap14_font2.drop-hints.4E03.otf        |    Bin 1008 -> 0 bytes
+ .../cmap14/cmap14_font2.drop-hints.4E03.ttx        |    233 +
+ ...cmap14_font2.drop-hints.4E05,4E07,4E08,4E09.otf |    Bin 1780 -> 0 bytes
+ ...cmap14_font2.drop-hints.4E05,4E07,4E08,4E09.ttx |    321 +
+ .../cmap14/cmap14_font2.drop-hints.4E08,4E09.otf   |    Bin 1648 -> 0 bytes
+ .../cmap14/cmap14_font2.drop-hints.4E08,4E09.ttx   |    294 +
+ .../cmap14/cmap14_font2.drop-hints.4E08.otf        |    Bin 1312 -> 0 bytes
+ .../cmap14/cmap14_font2.drop-hints.4E08.ttx        |    257 +
+ ...map14_font2.drop-hints.retain-all-codepoint.otf |    Bin 2276 -> 0 bytes
+ ...map14_font2.drop-hints.retain-all-codepoint.ttx |    410 +
+ .../cmap14/cmap14_font2.gids.4E00,4E02,4E03.otf    |    Bin 1388 -> 0 bytes
+ .../cmap14/cmap14_font2.gids.4E00,4E02,4E03.ttx    |    297 +
+ .../cmap14/cmap14_font2.gids.4E00,4E03.otf         |    Bin 1380 -> 0 bytes
+ .../cmap14/cmap14_font2.gids.4E00,4E03.ttx         |    289 +
+ .../cmap14/cmap14_font2.gids.4E00,4E05,4E07.otf    |    Bin 1624 -> 0 bytes
+ .../cmap14/cmap14_font2.gids.4E00,4E05,4E07.ttx    |    318 +
+ .../cmap14/cmap14_font2.gids.4E02,4E03,4E08.otf    |    Bin 1744 -> 0 bytes
+ .../cmap14/cmap14_font2.gids.4E02,4E03,4E08.ttx    |    326 +
+ .../expected/cmap14/cmap14_font2.gids.4E02.otf     |    Bin 1308 -> 0 bytes
+ .../expected/cmap14/cmap14_font2.gids.4E02.ttx     |    277 +
+ .../expected/cmap14/cmap14_font2.gids.4E03.otf     |    Bin 1348 -> 0 bytes
+ .../expected/cmap14/cmap14_font2.gids.4E03.ttx     |    280 +
+ .../cmap14_font2.gids.4E05,4E07,4E08,4E09.otf      |    Bin 2164 -> 0 bytes
+ .../cmap14_font2.gids.4E05,4E07,4E08,4E09.ttx      |    373 +
+ .../cmap14/cmap14_font2.gids.4E08,4E09.otf         |    Bin 2032 -> 0 bytes
+ .../cmap14/cmap14_font2.gids.4E08,4E09.ttx         |    346 +
+ .../expected/cmap14/cmap14_font2.gids.4E08.otf     |    Bin 1700 -> 0 bytes
+ .../expected/cmap14/cmap14_font2.gids.4E08.ttx     |    309 +
+ .../cmap14_font2.gids.retain-all-codepoint.otf     |    Bin 2376 -> 0 bytes
+ .../cmap14_font2.gids.retain-all-codepoint.ttx     |    439 +
+ .../cmap14_font2.name-ids.4E00,4E02,4E03.otf       |    Bin 1292 -> 0 bytes
+ .../cmap14_font2.name-ids.4E00,4E02,4E03.ttx       |    264 +
+ .../cmap14/cmap14_font2.name-ids.4E00,4E03.otf     |    Bin 1168 -> 0 bytes
+ .../cmap14/cmap14_font2.name-ids.4E00,4E03.ttx     |    249 +
+ .../cmap14_font2.name-ids.4E00,4E05,4E07.otf       |    Bin 1264 -> 0 bytes
+ .../cmap14_font2.name-ids.4E00,4E05,4E07.ttx       |    266 +
+ .../cmap14_font2.name-ids.4E02,4E03,4E08.otf       |    Bin 1508 -> 0 bytes
+ .../cmap14_font2.name-ids.4E02,4E03,4E08.ttx       |    282 +
+ .../expected/cmap14/cmap14_font2.name-ids.4E02.otf |    Bin 924 -> 0 bytes
+ .../expected/cmap14/cmap14_font2.name-ids.4E02.ttx |    221 +
+ .../expected/cmap14/cmap14_font2.name-ids.4E03.otf |    Bin 1008 -> 0 bytes
+ .../expected/cmap14/cmap14_font2.name-ids.4E03.ttx |    229 +
+ .../cmap14_font2.name-ids.4E05,4E07,4E08,4E09.otf  |    Bin 1780 -> 0 bytes
+ .../cmap14_font2.name-ids.4E05,4E07,4E08,4E09.ttx  |    317 +
+ .../cmap14/cmap14_font2.name-ids.4E08,4E09.otf     |    Bin 1648 -> 0 bytes
+ .../cmap14/cmap14_font2.name-ids.4E08,4E09.ttx     |    290 +
+ .../expected/cmap14/cmap14_font2.name-ids.4E08.otf |    Bin 1312 -> 0 bytes
+ .../expected/cmap14/cmap14_font2.name-ids.4E08.ttx |    253 +
+ .../cmap14_font2.name-ids.retain-all-codepoint.otf |    Bin 2276 -> 0 bytes
+ .../cmap14_font2.name-ids.retain-all-codepoint.ttx |    406 +
+ .../cmap14_font2.retain-gids.4E00,4E02,4E03.otf    |    Bin 1452 -> 0 bytes
+ .../cmap14_font2.retain-gids.4E00,4E02,4E03.ttx    |    326 +
+ .../cmap14/cmap14_font2.retain-gids.4E00,4E03.otf  |    Bin 1340 -> 0 bytes
+ .../cmap14/cmap14_font2.retain-gids.4E00,4E03.ttx  |    316 +
+ .../cmap14_font2.retain-gids.4E00,4E05,4E07.otf    |    Bin 1468 -> 0 bytes
+ .../cmap14_font2.retain-gids.4E00,4E05,4E07.ttx    |    348 +
+ .../cmap14_font2.retain-gids.4E02,4E03,4E08.otf    |    Bin 1788 -> 0 bytes
+ .../cmap14_font2.retain-gids.4E02,4E03,4E08.ttx    |    399 +
+ .../cmap14/cmap14_font2.retain-gids.4E02.otf       |    Bin 1092 -> 0 bytes
+ .../cmap14/cmap14_font2.retain-gids.4E02.ttx       |    288 +
+ .../cmap14/cmap14_font2.retain-gids.4E03.otf       |    Bin 1188 -> 0 bytes
+ .../cmap14/cmap14_font2.retain-gids.4E03.ttx       |    301 +
+ ...map14_font2.retain-gids.4E05,4E07,4E08,4E09.otf |    Bin 2048 -> 0 bytes
+ ...map14_font2.retain-gids.4E05,4E07,4E08,4E09.ttx |    429 +
+ .../cmap14/cmap14_font2.retain-gids.4E08,4E09.otf  |    Bin 1936 -> 0 bytes
+ .../cmap14/cmap14_font2.retain-gids.4E08,4E09.ttx  |    412 +
+ .../cmap14/cmap14_font2.retain-gids.4E08.otf       |    Bin 1604 -> 0 bytes
+ .../cmap14/cmap14_font2.retain-gids.4E08.ttx       |    380 +
+ ...ap14_font2.retain-gids.retain-all-codepoint.otf |    Bin 2496 -> 0 bytes
+ ...ap14_font2.retain-gids.retain-all-codepoint.ttx |    488 +
+ .../TwemojiMozilla.subset.default.32,3297,3299.ttf |    Bin 1936 -> 0 bytes
+ .../TwemojiMozilla.subset.default.32,3297,3299.ttx |    626 +
+ .../colr/TwemojiMozilla.subset.default.32,3297.ttf |    Bin 1400 -> 0 bytes
+ .../colr/TwemojiMozilla.subset.default.32,3297.ttx |    411 +
+ .../colr/TwemojiMozilla.subset.default.32,3299.ttf |    Bin 1576 -> 0 bytes
+ .../colr/TwemojiMozilla.subset.default.32,3299.ttx |    475 +
+ .../colr/TwemojiMozilla.subset.default.32.ttf      |    Bin 932 -> 0 bytes
+ .../colr/TwemojiMozilla.subset.default.32.ttx      |    231 +
+ .../TwemojiMozilla.subset.default.3297,3299.ttf    |    Bin 1916 -> 0 bytes
+ .../TwemojiMozilla.subset.default.3297,3299.ttx    |    617 +
+ .../colr/TwemojiMozilla.subset.default.3297.ttf    |    Bin 1376 -> 0 bytes
+ .../colr/TwemojiMozilla.subset.default.3297.ttx    |    402 +
+ .../colr/TwemojiMozilla.subset.default.3299.ttf    |    Bin 1552 -> 0 bytes
+ .../colr/TwemojiMozilla.subset.default.3299.ttx    |    466 +
+ ....subset.drop-hints-retain-gids.32,3297,3299.ttf |    Bin 1916 -> 0 bytes
+ ....subset.drop-hints-retain-gids.32,3297,3299.ttx |    621 +
+ ...zilla.subset.drop-hints-retain-gids.32,3297.ttf |    Bin 1396 -> 0 bytes
+ ...zilla.subset.drop-hints-retain-gids.32,3297.ttx |    410 +
+ ...zilla.subset.drop-hints-retain-gids.32,3299.ttf |    Bin 1576 -> 0 bytes
+ ...zilla.subset.drop-hints-retain-gids.32,3299.ttx |    478 +
+ ...ojiMozilla.subset.drop-hints-retain-gids.32.ttf |    Bin 912 -> 0 bytes
+ ...ojiMozilla.subset.drop-hints-retain-gids.32.ttx |    226 +
+ ...lla.subset.drop-hints-retain-gids.3297,3299.ttf |    Bin 1900 -> 0 bytes
+ ...lla.subset.drop-hints-retain-gids.3297,3299.ttx |    616 +
+ ...iMozilla.subset.drop-hints-retain-gids.3297.ttf |    Bin 1372 -> 0 bytes
+ ...iMozilla.subset.drop-hints-retain-gids.3297.ttx |    405 +
+ ...iMozilla.subset.drop-hints-retain-gids.3299.ttf |    Bin 1552 -> 0 bytes
+ ...iMozilla.subset.drop-hints-retain-gids.3299.ttx |    473 +
+ ...emojiMozilla.subset.drop-hints.32,3297,3299.ttf |    Bin 1916 -> 0 bytes
+ ...emojiMozilla.subset.drop-hints.32,3297,3299.ttx |    621 +
+ .../TwemojiMozilla.subset.drop-hints.32,3297.ttf   |    Bin 1380 -> 0 bytes
+ .../TwemojiMozilla.subset.drop-hints.32,3297.ttx   |    406 +
+ .../TwemojiMozilla.subset.drop-hints.32,3299.ttf   |    Bin 1556 -> 0 bytes
+ .../TwemojiMozilla.subset.drop-hints.32,3299.ttx   |    470 +
+ .../colr/TwemojiMozilla.subset.drop-hints.32.ttf   |    Bin 912 -> 0 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.32.ttx   |    226 +
+ .../TwemojiMozilla.subset.drop-hints.3297,3299.ttf |    Bin 1896 -> 0 bytes
+ .../TwemojiMozilla.subset.drop-hints.3297,3299.ttx |    612 +
+ .../colr/TwemojiMozilla.subset.drop-hints.3297.ttf |    Bin 1356 -> 0 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.3297.ttx |    397 +
+ .../colr/TwemojiMozilla.subset.drop-hints.3299.ttf |    Bin 1532 -> 0 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.3299.ttx |    461 +
+ ...mojiMozilla.subset.retain-gids.32,3297,3299.ttf |    Bin 1936 -> 0 bytes
+ ...mojiMozilla.subset.retain-gids.32,3297,3299.ttx |    626 +
+ .../TwemojiMozilla.subset.retain-gids.32,3297.ttf  |    Bin 1416 -> 0 bytes
+ .../TwemojiMozilla.subset.retain-gids.32,3297.ttx  |    415 +
+ .../TwemojiMozilla.subset.retain-gids.32,3299.ttf  |    Bin 1596 -> 0 bytes
+ .../TwemojiMozilla.subset.retain-gids.32,3299.ttx  |    483 +
+ .../colr/TwemojiMozilla.subset.retain-gids.32.ttf  |    Bin 932 -> 0 bytes
+ .../colr/TwemojiMozilla.subset.retain-gids.32.ttx  |    231 +
+ ...TwemojiMozilla.subset.retain-gids.3297,3299.ttf |    Bin 1920 -> 0 bytes
+ ...TwemojiMozilla.subset.retain-gids.3297,3299.ttx |    621 +
+ .../TwemojiMozilla.subset.retain-gids.3297.ttf     |    Bin 1392 -> 0 bytes
+ .../TwemojiMozilla.subset.retain-gids.3297.ttx     |    410 +
+ .../TwemojiMozilla.subset.retain-gids.3299.ttf     |    Bin 1572 -> 0 bytes
+ .../TwemojiMozilla.subset.retain-gids.3299.ttx     |    478 +
+ .../colr_with_components/colr-table.default.6B.ttf |    Bin 4260 -> 0 bytes
+ .../colr_with_components/colr-table.default.6B.ttx |   1435 +
+ .../colr-table.drop-hints-retain-gids.6B.ttf       |    Bin 4984 -> 0 bytes
+ .../colr-table.drop-hints-retain-gids.6B.ttx       |   1919 +
+ .../colr-table.drop-hints.6B.ttf                   |    Bin 4260 -> 0 bytes
+ .../colr-table.drop-hints.6B.ttx                   |   1435 +
+ .../colr-table.retain-gids.6B.ttf                  |    Bin 4984 -> 0 bytes
+ .../colr-table.retain-gids.6B.ttx                  |   1919 +
+ ...oColrEmojiGlyf-Regular.subset.default.1f35e.ttf |    Bin 3004 -> 0 bytes
+ ...oColrEmojiGlyf-Regular.subset.default.1f35e.ttx |   1077 +
+ ...oColrEmojiGlyf-Regular.subset.default.1f696.ttf |    Bin 3752 -> 0 bytes
+ ...oColrEmojiGlyf-Regular.subset.default.1f696.ttx |   1449 +
+ ...Regular.subset.drop-hints-retain-gids.1f35e.ttf |    Bin 3516 -> 0 bytes
+ ...Regular.subset.drop-hints-retain-gids.1f35e.ttx |   1417 +
+ ...Regular.subset.drop-hints-retain-gids.1f696.ttf |    Bin 5048 -> 0 bytes
+ ...Regular.subset.drop-hints-retain-gids.1f696.ttx |   2313 +
+ ...lrEmojiGlyf-Regular.subset.drop-hints.1f35e.ttf |    Bin 3004 -> 0 bytes
+ ...lrEmojiGlyf-Regular.subset.drop-hints.1f35e.ttx |   1077 +
+ ...lrEmojiGlyf-Regular.subset.drop-hints.1f696.ttf |    Bin 3752 -> 0 bytes
+ ...lrEmojiGlyf-Regular.subset.drop-hints.1f696.ttx |   1449 +
+ ...rEmojiGlyf-Regular.subset.retain-gids.1f35e.ttf |    Bin 3516 -> 0 bytes
+ ...rEmojiGlyf-Regular.subset.retain-gids.1f35e.ttx |   1417 +
+ ...rEmojiGlyf-Regular.subset.retain-gids.1f696.ttf |    Bin 5048 -> 0 bytes
+ ...rEmojiGlyf-Regular.subset.retain-gids.1f696.ttx |   2313 +
+ .../colrv1/TestCOLRv1.default.E000,E004.ttf        |    Bin 900 -> 0 bytes
+ .../colrv1/TestCOLRv1.default.E000,E004.ttx        |    316 +
+ .../colrv1/TestCOLRv1.default.E003,E004.ttf        |    Bin 1000 -> 0 bytes
+ .../colrv1/TestCOLRv1.default.E003,E004.ttx        |    367 +
+ .../expected/colrv1/TestCOLRv1.default.E004.ttf    |    Bin 744 -> 0 bytes
+ .../expected/colrv1/TestCOLRv1.default.E004.ttx    |    231 +
+ .../TestCOLRv1.default.retain-all-codepoint.ttf    |    Bin 1444 -> 0 bytes
+ .../TestCOLRv1.default.retain-all-codepoint.ttx    |    596 +
+ ...TestCOLRv1.drop-hints-retain-gids.E000,E004.ttf |    Bin 984 -> 0 bytes
+ ...TestCOLRv1.drop-hints-retain-gids.E000,E004.ttx |    364 +
+ ...TestCOLRv1.drop-hints-retain-gids.E003,E004.ttf |    Bin 1076 -> 0 bytes
+ ...TestCOLRv1.drop-hints-retain-gids.E003,E004.ttx |    411 +
+ .../TestCOLRv1.drop-hints-retain-gids.E004.ttf     |    Bin 836 -> 0 bytes
+ .../TestCOLRv1.drop-hints-retain-gids.E004.ttx     |    291 +
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf |    Bin 1444 -> 0 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttx |    596 +
+ .../colrv1/TestCOLRv1.drop-hints.E000,E004.ttf     |    Bin 900 -> 0 bytes
+ .../colrv1/TestCOLRv1.drop-hints.E000,E004.ttx     |    316 +
+ .../colrv1/TestCOLRv1.drop-hints.E003,E004.ttf     |    Bin 1000 -> 0 bytes
+ .../colrv1/TestCOLRv1.drop-hints.E003,E004.ttx     |    367 +
+ .../expected/colrv1/TestCOLRv1.drop-hints.E004.ttf |    Bin 744 -> 0 bytes
+ .../expected/colrv1/TestCOLRv1.drop-hints.E004.ttx |    231 +
+ .../TestCOLRv1.drop-hints.retain-all-codepoint.ttf |    Bin 1444 -> 0 bytes
+ .../TestCOLRv1.drop-hints.retain-all-codepoint.ttx |    596 +
+ .../colrv1/TestCOLRv1.retain-gids.E000,E004.ttf    |    Bin 984 -> 0 bytes
+ .../colrv1/TestCOLRv1.retain-gids.E000,E004.ttx    |    364 +
+ .../colrv1/TestCOLRv1.retain-gids.E003,E004.ttf    |    Bin 1076 -> 0 bytes
+ .../colrv1/TestCOLRv1.retain-gids.E003,E004.ttx    |    411 +
+ .../colrv1/TestCOLRv1.retain-gids.E004.ttf         |    Bin 836 -> 0 bytes
+ .../colrv1/TestCOLRv1.retain-gids.E004.ttx         |    291 +
+ ...TestCOLRv1.retain-gids.retain-all-codepoint.ttf |    Bin 1444 -> 0 bytes
+ ...TestCOLRv1.retain-gids.retain-all-codepoint.ttx |    596 +
+ .../Roboto-Regular.default.1FC,21,41,20,62,63.ttf  |    Bin 3080 -> 0 bytes
+ .../Roboto-Regular.default.1FC,21,41,20,62,63.ttx  |   1659 +
+ .../full-font/Roboto-Regular.default.61,62,63.ttf  |    Bin 2672 -> 0 bytes
+ .../full-font/Roboto-Regular.default.61,62,63.ttx  |   1422 +
+ .../Roboto-Regular.default.D7,D8,D9,DA,DE.ttf      |    Bin 3024 -> 0 bytes
+ .../Roboto-Regular.default.D7,D8,D9,DA,DE.ttx      |   1571 +
+ ...oboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf |    Bin 1632 -> 0 bytes
+ ...oboto-Regular.drop-hints.1FC,21,41,20,62,63.ttx |    549 +
+ .../Roboto-Regular.drop-hints.61,62,63.ttf         |    Bin 1412 -> 0 bytes
+ .../Roboto-Regular.drop-hints.61,62,63.ttx         |    494 +
+ .../Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf   |    Bin 1648 -> 0 bytes
+ .../Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttx   |    529 +
+ ...ifVariable-Roman.default.1FC,21,41,20,62,63.ttf |    Bin 3992 -> 0 bytes
+ ...ifVariable-Roman.default.1FC,21,41,20,62,63.ttx |   1355 +
+ .../SourceSerifVariable-Roman.default.61,62,63.ttf |    Bin 3832 -> 0 bytes
+ .../SourceSerifVariable-Roman.default.61,62,63.ttx |   1262 +
+ ...eSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf |    Bin 4396 -> 0 bytes
+ ...eSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttx |   1522 +
+ ...ariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf |    Bin 3968 -> 0 bytes
+ ...ariable-Roman.drop-hints.1FC,21,41,20,62,63.ttx |   1349 +
+ ...urceSerifVariable-Roman.drop-hints.61,62,63.ttf |    Bin 3832 -> 0 bytes
+ ...urceSerifVariable-Roman.drop-hints.61,62,63.ttx |   1262 +
+ ...rifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf |    Bin 4396 -> 0 bytes
+ ...rifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttx |   1522 +
+ .../Mplus1p-Regular.default.1D715,1D7D8,41,42.ttf  |    Bin 2344 -> 0 bytes
+ .../Mplus1p-Regular.default.1D715,1D7D8,41,42.ttx  |   1187 +
+ .../japanese/Mplus1p-Regular.default.25771.ttf     |    Bin 1992 -> 0 bytes
+ .../japanese/Mplus1p-Regular.default.25771.ttx     |   1033 +
+ ...gular.default.3042,3044,3046,3048,304A,304B.ttf |    Bin 2704 -> 0 bytes
+ ...gular.default.3042,3044,3046,3048,304A,304B.ttx |   1296 +
+ ...gular.default.3042,3044,3046,73E0,5EA6,8F38.ttf |    Bin 2948 -> 0 bytes
+ ...gular.default.3042,3044,3046,73E0,5EA6,8F38.ttx |   1403 +
+ .../Mplus1p-Regular.default.61,63,65,6B.ttf        |    Bin 2324 -> 0 bytes
+ .../Mplus1p-Regular.default.61,63,65,6B.ttx        |   1172 +
+ ...gular.default.660E,6975,73E0,5EA6,8F38,6E05.ttf |    Bin 3244 -> 0 bytes
+ ...gular.default.660E,6975,73E0,5EA6,8F38,6E05.ttx |   1522 +
+ .../japanese/Mplus1p-Regular.default.660E.ttf      |    Bin 1984 -> 0 bytes
+ .../japanese/Mplus1p-Regular.default.660E.ttx      |   1024 +
+ ...plus1p-Regular.drop-hints.1D715,1D7D8,41,42.ttf |    Bin 1616 -> 0 bytes
+ ...plus1p-Regular.drop-hints.1D715,1D7D8,41,42.ttx |    522 +
+ .../japanese/Mplus1p-Regular.drop-hints.25771.ttf  |    Bin 1264 -> 0 bytes
+ .../japanese/Mplus1p-Regular.drop-hints.25771.ttx  |    368 +
+ ...ar.drop-hints.3042,3044,3046,3048,304A,304B.ttf |    Bin 1976 -> 0 bytes
+ ...ar.drop-hints.3042,3044,3046,3048,304A,304B.ttx |    631 +
+ ...ar.drop-hints.3042,3044,3046,73E0,5EA6,8F38.ttf |    Bin 2220 -> 0 bytes
+ ...ar.drop-hints.3042,3044,3046,73E0,5EA6,8F38.ttx |    738 +
+ .../Mplus1p-Regular.drop-hints.61,63,65,6B.ttf     |    Bin 1596 -> 0 bytes
+ .../Mplus1p-Regular.drop-hints.61,63,65,6B.ttx     |    507 +
+ ...ar.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.ttf |    Bin 2516 -> 0 bytes
+ ...ar.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.ttx |    857 +
+ .../japanese/Mplus1p-Regular.drop-hints.660E.ttf   |    Bin 1256 -> 0 bytes
+ .../japanese/Mplus1p-Regular.drop-hints.660E.ttx   |    359 +
+ ...Mplus1p-Regular.keep-gdef.1D715,1D7D8,41,42.ttf |    Bin 2344 -> 0 bytes
+ ...Mplus1p-Regular.keep-gdef.1D715,1D7D8,41,42.ttx |   1187 +
+ .../japanese/Mplus1p-Regular.keep-gdef.25771.ttf   |    Bin 1992 -> 0 bytes
+ .../japanese/Mplus1p-Regular.keep-gdef.25771.ttx   |   1033 +
+ ...lar.keep-gdef.3042,3044,3046,3048,304A,304B.ttf |    Bin 2704 -> 0 bytes
+ ...lar.keep-gdef.3042,3044,3046,3048,304A,304B.ttx |   1296 +
+ ...lar.keep-gdef.3042,3044,3046,73E0,5EA6,8F38.ttf |    Bin 2948 -> 0 bytes
+ ...lar.keep-gdef.3042,3044,3046,73E0,5EA6,8F38.ttx |   1403 +
+ .../Mplus1p-Regular.keep-gdef.61,63,65,6B.ttf      |    Bin 2324 -> 0 bytes
+ .../Mplus1p-Regular.keep-gdef.61,63,65,6B.ttx      |   1172 +
+ ...lar.keep-gdef.660E,6975,73E0,5EA6,8F38,6E05.ttf |    Bin 3244 -> 0 bytes
+ ...lar.keep-gdef.660E,6975,73E0,5EA6,8F38,6E05.ttx |   1522 +
+ .../japanese/Mplus1p-Regular.keep-gdef.660E.ttf    |    Bin 1984 -> 0 bytes
+ .../japanese/Mplus1p-Regular.keep-gdef.660E.ttx    |   1024 +
+ ...text1_multiple_subrules_f1.default.41,42,43.otf |    Bin 1328 -> 0 bytes
+ ...text1_multiple_subrules_f1.default.41,42,43.ttx |    284 +
+ ...context1_multiple_subrules_f1.default.41,42.otf |    Bin 1228 -> 0 bytes
+ ...context1_multiple_subrules_f1.default.41,42.ttx |    265 +
+ ...context1_multiple_subrules_f1.default.41,43.otf |    Bin 1332 -> 0 bytes
+ ...context1_multiple_subrules_f1.default.41,43.ttx |    275 +
+ ...os_context1_multiple_subrules_f1.default.41.otf |    Bin 1216 -> 0 bytes
+ ...os_context1_multiple_subrules_f1.default.41.ttx |    256 +
+ ...le_subrules_f1.default.retain-all-codepoint.otf |    Bin 3700 -> 0 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.ttx |   1247 +
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.otf |    Bin 2028 -> 0 bytes
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.ttx |    604 +
+ ...ext1_multiple_subrules_f1.retain-gids.41,42.otf |    Bin 1932 -> 0 bytes
+ ...ext1_multiple_subrules_f1.retain-gids.41,42.ttx |    585 +
+ ...ext1_multiple_subrules_f1.retain-gids.41,43.otf |    Bin 2048 -> 0 bytes
+ ...ext1_multiple_subrules_f1.retain-gids.41,43.ttx |    600 +
+ ...ontext1_multiple_subrules_f1.retain-gids.41.otf |    Bin 1916 -> 0 bytes
+ ...ontext1_multiple_subrules_f1.retain-gids.41.ttx |    576 +
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf |    Bin 3700 -> 0 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.ttx |   1247 +
+ ...text2_multiple_subrules_f1.default.41,42,43.otf |    Bin 1328 -> 0 bytes
+ ...text2_multiple_subrules_f1.default.41,42,43.ttx |    284 +
+ ...context2_multiple_subrules_f1.default.41,42.otf |    Bin 1228 -> 0 bytes
+ ...context2_multiple_subrules_f1.default.41,42.ttx |    265 +
+ ...context2_multiple_subrules_f1.default.41,43.otf |    Bin 1332 -> 0 bytes
+ ...context2_multiple_subrules_f1.default.41,43.ttx |    275 +
+ ...os_context2_multiple_subrules_f1.default.41.otf |    Bin 1216 -> 0 bytes
+ ...os_context2_multiple_subrules_f1.default.41.ttx |    256 +
+ ...le_subrules_f1.default.retain-all-codepoint.otf |    Bin 3700 -> 0 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.ttx |   1247 +
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.otf |    Bin 2028 -> 0 bytes
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.ttx |    604 +
+ ...ext2_multiple_subrules_f1.retain-gids.41,42.otf |    Bin 1932 -> 0 bytes
+ ...ext2_multiple_subrules_f1.retain-gids.41,42.ttx |    585 +
+ ...ext2_multiple_subrules_f1.retain-gids.41,43.otf |    Bin 2048 -> 0 bytes
+ ...ext2_multiple_subrules_f1.retain-gids.41,43.ttx |    600 +
+ ...ontext2_multiple_subrules_f1.retain-gids.41.otf |    Bin 1916 -> 0 bytes
+ ...ontext2_multiple_subrules_f1.retain-gids.41.ttx |    576 +
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf |    Bin 3700 -> 0 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.ttx |   1247 +
+ .../gpos_context3_simple_f1.default.41,42,43.otf   |    Bin 1308 -> 0 bytes
+ .../gpos_context3_simple_f1.default.41,42,43.ttx   |    284 +
+ .../gpos_context3_simple_f1.default.41,42.otf      |    Bin 1208 -> 0 bytes
+ .../gpos_context3_simple_f1.default.41,42.ttx      |    265 +
+ .../gpos_context3_simple_f1.default.41,43.otf      |    Bin 1312 -> 0 bytes
+ .../gpos_context3_simple_f1.default.41,43.ttx      |    275 +
+ .../gpos_context3_simple_f1.default.41.otf         |    Bin 1196 -> 0 bytes
+ .../gpos_context3_simple_f1.default.41.ttx         |    256 +
+ ...ext3_simple_f1.default.retain-all-codepoint.otf |    Bin 3680 -> 0 bytes
+ ...ext3_simple_f1.default.retain-all-codepoint.ttx |   1247 +
+ ...pos_context3_simple_f1.retain-gids.41,42,43.otf |    Bin 2008 -> 0 bytes
+ ...pos_context3_simple_f1.retain-gids.41,42,43.ttx |    604 +
+ .../gpos_context3_simple_f1.retain-gids.41,42.otf  |    Bin 1912 -> 0 bytes
+ .../gpos_context3_simple_f1.retain-gids.41,42.ttx  |    585 +
+ .../gpos_context3_simple_f1.retain-gids.41,43.otf  |    Bin 2028 -> 0 bytes
+ .../gpos_context3_simple_f1.retain-gids.41,43.ttx  |    600 +
+ .../gpos_context3_simple_f1.retain-gids.41.otf     |    Bin 1896 -> 0 bytes
+ .../gpos_context3_simple_f1.retain-gids.41.ttx     |    576 +
+ ..._simple_f1.retain-gids.retain-all-codepoint.otf |    Bin 3680 -> 0 bytes
+ ..._simple_f1.retain-gids.retain-all-codepoint.ttx |   1247 +
+ .../IndicTestJalandhar-Regular.default.A01.ttf     |    Bin 4176 -> 0 bytes
+ .../IndicTestJalandhar-Regular.default.A01.ttx     |   2916 +
+ .../IndicTestJalandhar-Regular.default.A05,A06.ttf |    Bin 4752 -> 0 bytes
+ .../IndicTestJalandhar-Regular.default.A05,A06.ttx |   3167 +
+ .../IndicTestJalandhar-Regular.default.A07,A1B.ttf |    Bin 4724 -> 0 bytes
+ .../IndicTestJalandhar-Regular.default.A07,A1B.ttx |   3148 +
+ ...andhar-Regular.default.retain-all-codepoint.ttf |    Bin 49244 -> 0 bytes
+ ...andhar-Regular.default.retain-all-codepoint.ttx |  22554 +++
+ .../IndicTestJalandhar-Regular.drop-hints.A01.ttf  |    Bin 1036 -> 0 bytes
+ .../IndicTestJalandhar-Regular.drop-hints.A01.ttx  |    281 +
+ ...dicTestJalandhar-Regular.drop-hints.A05,A06.ttf |    Bin 1344 -> 0 bytes
+ ...dicTestJalandhar-Regular.drop-hints.A05,A06.ttx |    403 +
+ ...dicTestJalandhar-Regular.drop-hints.A07,A1B.ttf |    Bin 1344 -> 0 bytes
+ ...dicTestJalandhar-Regular.drop-hints.A07,A1B.ttx |    404 +
+ ...har-Regular.drop-hints.retain-all-codepoint.ttf |    Bin 29464 -> 0 bytes
+ ...har-Regular.drop-hints.retain-all-codepoint.ttx |  11627 ++
+ .../IndicTestJalandhar-Regular.keep-gdef.A01.ttf   |    Bin 4176 -> 0 bytes
+ .../IndicTestJalandhar-Regular.keep-gdef.A01.ttx   |   2916 +
+ ...ndicTestJalandhar-Regular.keep-gdef.A05,A06.ttf |    Bin 4752 -> 0 bytes
+ ...ndicTestJalandhar-Regular.keep-gdef.A05,A06.ttx |   3167 +
+ ...ndicTestJalandhar-Regular.keep-gdef.A07,A1B.ttf |    Bin 4724 -> 0 bytes
+ ...ndicTestJalandhar-Regular.keep-gdef.A07,A1B.ttx |   3148 +
+ ...dhar-Regular.keep-gdef.retain-all-codepoint.ttf |    Bin 49244 -> 0 bytes
+ ...dhar-Regular.keep-gdef.retain-all-codepoint.ttx |  22554 +++
+ .../AdobeVFPrototype.default.41,42,43,57.otf       |    Bin 5440 -> 0 bytes
+ .../AdobeVFPrototype.default.41,42,43,57.ttx       |   1536 +
+ .../AdobeVFPrototype.default.41,42,43.otf          |    Bin 4908 -> 0 bytes
+ .../AdobeVFPrototype.default.41,42,43.ttx          |   1338 +
+ .../AdobeVFPrototype.default.41,42.otf             |    Bin 4432 -> 0 bytes
+ .../AdobeVFPrototype.default.41,42.ttx             |   1201 +
+ .../AdobeVFPrototype.default.41,56,57.otf          |    Bin 4576 -> 0 bytes
+ .../AdobeVFPrototype.default.41,56,57.ttx          |   1310 +
+ .../AdobeVFPrototype.default.41.otf                |    Bin 3728 -> 0 bytes
+ .../AdobeVFPrototype.default.41.ttx                |   1000 +
+ .../AdobeVFPrototype.default.42,57.otf             |    Bin 4564 -> 0 bytes
+ .../AdobeVFPrototype.default.42,57.ttx             |   1253 +
+ .../AdobeVFPrototype.drop-hints.41,42,43,57.otf    |    Bin 5252 -> 0 bytes
+ .../AdobeVFPrototype.drop-hints.41,42,43,57.ttx    |   1500 +
+ .../AdobeVFPrototype.drop-hints.41,42,43.otf       |    Bin 4720 -> 0 bytes
+ .../AdobeVFPrototype.drop-hints.41,42,43.ttx       |   1302 +
+ .../AdobeVFPrototype.drop-hints.41,42.otf          |    Bin 4244 -> 0 bytes
+ .../AdobeVFPrototype.drop-hints.41,42.ttx          |   1165 +
+ .../AdobeVFPrototype.drop-hints.41,56,57.otf       |    Bin 4384 -> 0 bytes
+ .../AdobeVFPrototype.drop-hints.41,56,57.ttx       |   1274 +
+ .../AdobeVFPrototype.drop-hints.41.otf             |    Bin 3540 -> 0 bytes
+ .../AdobeVFPrototype.drop-hints.41.ttx             |    964 +
+ .../AdobeVFPrototype.drop-hints.42,57.otf          |    Bin 4376 -> 0 bytes
+ .../AdobeVFPrototype.drop-hints.42,57.ttx          |   1217 +
+ ...AdobeVFPrototype.keep-gdef-gpos.41,42,43,57.otf |    Bin 5440 -> 0 bytes
+ ...AdobeVFPrototype.keep-gdef-gpos.41,42,43,57.ttx |   1536 +
+ .../AdobeVFPrototype.keep-gdef-gpos.41,42,43.otf   |    Bin 4908 -> 0 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41,42,43.ttx   |   1338 +
+ .../AdobeVFPrototype.keep-gdef-gpos.41,42.otf      |    Bin 4432 -> 0 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41,42.ttx      |   1201 +
+ .../AdobeVFPrototype.keep-gdef-gpos.41,56,57.otf   |    Bin 4576 -> 0 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41,56,57.ttx   |   1310 +
+ .../AdobeVFPrototype.keep-gdef-gpos.41.otf         |    Bin 3728 -> 0 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41.ttx         |   1000 +
+ .../AdobeVFPrototype.keep-gdef-gpos.42,57.otf      |    Bin 4564 -> 0 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.42,57.ttx      |   1253 +
+ .../Roboto-Regular.default.1E00,303.ttf            |    Bin 2524 -> 0 bytes
+ .../Roboto-Regular.default.1E00,303.ttx            |   1258 +
+ .../layout.gdef/Roboto-Regular.default.303.ttf     |    Bin 2116 -> 0 bytes
+ .../layout.gdef/Roboto-Regular.default.303.ttx     |   1012 +
+ .../Roboto-Regular.default.309,20,30F.ttf          |    Bin 2212 -> 0 bytes
+ .../Roboto-Regular.default.309,20,30F.ttx          |   1054 +
+ .../layout.gdef/Roboto-Regular.default.323.ttf     |    Bin 2008 -> 0 bytes
+ .../layout.gdef/Roboto-Regular.default.323.ttx     |    949 +
+ .../Roboto-Regular.default.41,42,43.ttf            |    Bin 2572 -> 0 bytes
+ .../Roboto-Regular.default.41,42,43.ttx            |   1349 +
+ .../Roboto-Regular.drop-hints.1E00,303.ttf         |    Bin 1380 -> 0 bytes
+ .../Roboto-Regular.drop-hints.1E00,303.ttx         |    443 +
+ .../layout.gdef/Roboto-Regular.drop-hints.303.ttf  |    Bin 1112 -> 0 bytes
+ .../layout.gdef/Roboto-Regular.drop-hints.303.ttx  |    312 +
+ .../Roboto-Regular.drop-hints.309,20,30F.ttf       |    Bin 1172 -> 0 bytes
+ .../Roboto-Regular.drop-hints.309,20,30F.ttx       |    328 +
+ .../layout.gdef/Roboto-Regular.drop-hints.323.ttf  |    Bin 1056 -> 0 bytes
+ .../layout.gdef/Roboto-Regular.drop-hints.323.ttx  |    291 +
+ .../Roboto-Regular.drop-hints.41,42,43.ttf         |    Bin 1388 -> 0 bytes
+ .../Roboto-Regular.drop-hints.41,42,43.ttx         |    480 +
+ .../Roboto-Regular.keep-gdef-gpos.1E00,303.ttf     |    Bin 2524 -> 0 bytes
+ .../Roboto-Regular.keep-gdef-gpos.1E00,303.ttx     |   1258 +
+ .../Roboto-Regular.keep-gdef-gpos.303.ttf          |    Bin 2116 -> 0 bytes
+ .../Roboto-Regular.keep-gdef-gpos.303.ttx          |   1012 +
+ .../Roboto-Regular.keep-gdef-gpos.309,20,30F.ttf   |    Bin 2212 -> 0 bytes
+ .../Roboto-Regular.keep-gdef-gpos.309,20,30F.ttx   |   1054 +
+ .../Roboto-Regular.keep-gdef-gpos.323.ttf          |    Bin 2008 -> 0 bytes
+ .../Roboto-Regular.keep-gdef-gpos.323.ttx          |    949 +
+ .../Roboto-Regular.keep-gdef-gpos.41,42,43.ttf     |    Bin 2572 -> 0 bytes
+ .../Roboto-Regular.keep-gdef-gpos.41,42,43.ttx     |   1349 +
+ .../layout.gpos/gpos1_2_font.default.41,43.otf     |    Bin 1292 -> 0 bytes
+ .../layout.gpos/gpos1_2_font.default.41,43.ttx     |    275 +
+ .../layout.gpos/gpos1_2_font.default.41,46.otf     |    Bin 1424 -> 0 bytes
+ .../layout.gpos/gpos1_2_font.default.41,46.ttx     |    286 +
+ .../layout.gpos/gpos1_2_font.default.41.otf        |    Bin 1176 -> 0 bytes
+ .../layout.gpos/gpos1_2_font.default.41.ttx        |    256 +
+ .../layout.gpos/gpos1_2_font.default.42,44.otf     |    Bin 1268 -> 0 bytes
+ .../layout.gpos/gpos1_2_font.default.42,44.ttx     |    265 +
+ .../layout.gpos/gpos1_2_font.default.43,46.otf     |    Bin 1288 -> 0 bytes
+ .../layout.gpos/gpos1_2_font.default.43,46.ttx     |    275 +
+ .../gpos1_2_font.default.retain-all-codepoint.otf  |    Bin 3604 -> 0 bytes
+ .../gpos1_2_font.default.retain-all-codepoint.ttx  |   1221 +
+ .../layout.gpos/gpos1_2_font.retain-gids.41,43.otf |    Bin 2008 -> 0 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.41,43.ttx |    600 +
+ .../layout.gpos/gpos1_2_font.retain-gids.41,46.otf |    Bin 2172 -> 0 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.41,46.ttx |    626 +
+ .../layout.gpos/gpos1_2_font.retain-gids.41.otf    |    Bin 1876 -> 0 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.41.ttx    |    576 +
+ .../layout.gpos/gpos1_2_font.retain-gids.42,44.otf |    Bin 1992 -> 0 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.42,44.ttx |    595 +
+ .../layout.gpos/gpos1_2_font.retain-gids.43,46.otf |    Bin 2036 -> 0 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.43,46.ttx |    615 +
+ ...os1_2_font.retain-gids.retain-all-codepoint.otf |    Bin 3604 -> 0 bytes
+ ...os1_2_font.retain-gids.retain-all-codepoint.ttx |   1221 +
+ .../gpos2_1_font7.default.21,23,25.otf             |    Bin 1360 -> 0 bytes
+ .../gpos2_1_font7.default.21,23,25.ttx             |    287 +
+ .../layout.gpos2/gpos2_1_font7.default.21,23.otf   |    Bin 1240 -> 0 bytes
+ .../layout.gpos2/gpos2_1_font7.default.21,23.ttx   |    268 +
+ .../layout.gpos2/gpos2_1_font7.default.2E,23.otf   |    Bin 1508 -> 0 bytes
+ .../layout.gpos2/gpos2_1_font7.default.2E,23.ttx   |    291 +
+ .../gpos2_1_font7.default.41,42,43.otf             |    Bin 1288 -> 0 bytes
+ .../gpos2_1_font7.default.41,42,43.ttx             |    284 +
+ .../gpos2_1_font7.default.retain-all-codepoint.otf |    Bin 3604 -> 0 bytes
+ .../gpos2_1_font7.default.retain-all-codepoint.ttx |   1221 +
+ .../gpos2_1_font7.retain-gids.21,23,25.otf         |    Bin 1696 -> 0 bytes
+ .../gpos2_1_font7.retain-gids.21,23,25.ttx         |    457 +
+ .../gpos2_1_font7.retain-gids.21,23.otf            |    Bin 1564 -> 0 bytes
+ .../gpos2_1_font7.retain-gids.21,23.ttx            |    433 +
+ .../gpos2_1_font7.retain-gids.2E,23.otf            |    Bin 1944 -> 0 bytes
+ .../gpos2_1_font7.retain-gids.2E,23.ttx            |    511 +
+ .../gpos2_1_font7.retain-gids.41,42,43.otf         |    Bin 1988 -> 0 bytes
+ .../gpos2_1_font7.retain-gids.41,42,43.ttx         |    604 +
+ ...s2_1_font7.retain-gids.retain-all-codepoint.otf |    Bin 3604 -> 0 bytes
+ ...s2_1_font7.retain-gids.retain-all-codepoint.ttx |   1221 +
+ .../gpos2_2_font5.default.21,23,25.otf             |    Bin 1360 -> 0 bytes
+ .../gpos2_2_font5.default.21,23,25.ttx             |    287 +
+ .../layout.gpos2/gpos2_2_font5.default.21,23.otf   |    Bin 1240 -> 0 bytes
+ .../layout.gpos2/gpos2_2_font5.default.21,23.ttx   |    268 +
+ .../layout.gpos2/gpos2_2_font5.default.2E,23.otf   |    Bin 1508 -> 0 bytes
+ .../layout.gpos2/gpos2_2_font5.default.2E,23.ttx   |    291 +
+ .../gpos2_2_font5.default.41,42,43.otf             |    Bin 1288 -> 0 bytes
+ .../gpos2_2_font5.default.41,42,43.ttx             |    284 +
+ .../gpos2_2_font5.default.retain-all-codepoint.otf |    Bin 3604 -> 0 bytes
+ .../gpos2_2_font5.default.retain-all-codepoint.ttx |   1221 +
+ .../gpos2_2_font5.retain-gids.21,23,25.otf         |    Bin 1696 -> 0 bytes
+ .../gpos2_2_font5.retain-gids.21,23,25.ttx         |    457 +
+ .../gpos2_2_font5.retain-gids.21,23.otf            |    Bin 1564 -> 0 bytes
+ .../gpos2_2_font5.retain-gids.21,23.ttx            |    433 +
+ .../gpos2_2_font5.retain-gids.2E,23.otf            |    Bin 1944 -> 0 bytes
+ .../gpos2_2_font5.retain-gids.2E,23.ttx            |    511 +
+ .../gpos2_2_font5.retain-gids.41,42,43.otf         |    Bin 1988 -> 0 bytes
+ .../gpos2_2_font5.retain-gids.41,42,43.ttx         |    604 +
+ ...s2_2_font5.retain-gids.retain-all-codepoint.otf |    Bin 3604 -> 0 bytes
+ ...s2_2_font5.retain-gids.retain-all-codepoint.ttx |   1221 +
+ .../layout.gpos3/gpos3_font3.default.28,29.otf     |    Bin 1248 -> 0 bytes
+ .../layout.gpos3/gpos3_font3.default.28,29.ttx     |    276 +
+ .../layout.gpos3/gpos3_font3.default.28,2B.otf     |    Bin 1376 -> 0 bytes
+ .../layout.gpos3/gpos3_font3.default.28,2B.ttx     |    282 +
+ .../layout.gpos3/gpos3_font3.default.29,2B.otf     |    Bin 1292 -> 0 bytes
+ .../layout.gpos3/gpos3_font3.default.29,2B.ttx     |    277 +
+ .../layout.gpos3/gpos3_font3.default.41,42,43.otf  |    Bin 1284 -> 0 bytes
+ .../layout.gpos3/gpos3_font3.default.41,42,43.ttx  |    284 +
+ .../gpos3_font3.default.retain-all-codepoint.otf   |    Bin 3636 -> 0 bytes
+ .../gpos3_font3.default.retain-all-codepoint.ttx   |   1228 +
+ .../layout.gpos3/gpos3_font3.retain-gids.28,29.otf |    Bin 1632 -> 0 bytes
+ .../layout.gpos3/gpos3_font3.retain-gids.28,29.ttx |    471 +
+ .../layout.gpos3/gpos3_font3.retain-gids.28,2B.otf |    Bin 1780 -> 0 bytes
+ .../layout.gpos3/gpos3_font3.retain-gids.28,2B.ttx |    487 +
+ .../layout.gpos3/gpos3_font3.retain-gids.29,2B.otf |    Bin 1696 -> 0 bytes
+ .../layout.gpos3/gpos3_font3.retain-gids.29,2B.ttx |    482 +
+ .../gpos3_font3.retain-gids.41,42,43.otf           |    Bin 1984 -> 0 bytes
+ .../gpos3_font3.retain-gids.41,42,43.ttx           |    604 +
+ ...pos3_font3.retain-gids.retain-all-codepoint.otf |    Bin 3636 -> 0 bytes
+ ...pos3_font3.retain-gids.retain-all-codepoint.ttx |   1228 +
+ ...pos4_multiple_anchors_1.default.41,42,43,44.otf |    Bin 1516 -> 0 bytes
+ ...pos4_multiple_anchors_1.default.41,42,43,44.ttx |    304 +
+ ...pos4_multiple_anchors_1.default.41,42,43,45.otf |    Bin 1524 -> 0 bytes
+ ...pos4_multiple_anchors_1.default.41,42,43,45.ttx |    305 +
+ .../gpos4_multiple_anchors_1.default.41,42,43.otf  |    Bin 1308 -> 0 bytes
+ .../gpos4_multiple_anchors_1.default.41,42,43.ttx  |    284 +
+ .../gpos4_multiple_anchors_1.default.41,42.otf     |    Bin 1208 -> 0 bytes
+ .../gpos4_multiple_anchors_1.default.41,42.ttx     |    265 +
+ ...4_multiple_anchors_1.default.41,43,44,45,46.otf |    Bin 1864 -> 0 bytes
+ ...4_multiple_anchors_1.default.41,43,44,45,46.ttx |    336 +
+ .../gpos4_multiple_anchors_1.default.41,43,44.otf  |    Bin 1524 -> 0 bytes
+ .../gpos4_multiple_anchors_1.default.41,43,44.ttx  |    295 +
+ .../gpos4_multiple_anchors_1.default.41,43,45.otf  |    Bin 1532 -> 0 bytes
+ .../gpos4_multiple_anchors_1.default.41,43,45.ttx  |    296 +
+ .../gpos4_multiple_anchors_1.default.41,43.otf     |    Bin 1312 -> 0 bytes
+ .../gpos4_multiple_anchors_1.default.41,43.ttx     |    275 +
+ .../gpos4_multiple_anchors_1.default.41.otf        |    Bin 1196 -> 0 bytes
+ .../gpos4_multiple_anchors_1.default.41.ttx        |    256 +
+ ...iple_anchors_1.default.retain-all-codepoint.otf |    Bin 3668 -> 0 bytes
+ ...iple_anchors_1.default.retain-all-codepoint.ttx |   1233 +
+ ..._multiple_anchors_1.retain-gids.41,42,43,44.otf |    Bin 2220 -> 0 bytes
+ ..._multiple_anchors_1.retain-gids.41,42,43,44.ttx |    624 +
+ ..._multiple_anchors_1.retain-gids.41,42,43,45.otf |    Bin 2244 -> 0 bytes
+ ..._multiple_anchors_1.retain-gids.41,42,43,45.ttx |    630 +
+ ...os4_multiple_anchors_1.retain-gids.41,42,43.otf |    Bin 2008 -> 0 bytes
+ ...os4_multiple_anchors_1.retain-gids.41,42,43.ttx |    604 +
+ .../gpos4_multiple_anchors_1.retain-gids.41,42.otf |    Bin 1912 -> 0 bytes
+ .../gpos4_multiple_anchors_1.retain-gids.41,42.ttx |    585 +
+ ...ltiple_anchors_1.retain-gids.41,43,44,45,46.otf |    Bin 2584 -> 0 bytes
+ ...ltiple_anchors_1.retain-gids.41,43,44,45,46.ttx |    661 +
+ ...os4_multiple_anchors_1.retain-gids.41,43,44.otf |    Bin 2240 -> 0 bytes
+ ...os4_multiple_anchors_1.retain-gids.41,43,44.ttx |    620 +
+ ...os4_multiple_anchors_1.retain-gids.41,43,45.otf |    Bin 2260 -> 0 bytes
+ ...os4_multiple_anchors_1.retain-gids.41,43,45.ttx |    626 +
+ .../gpos4_multiple_anchors_1.retain-gids.41,43.otf |    Bin 2028 -> 0 bytes
+ .../gpos4_multiple_anchors_1.retain-gids.41,43.ttx |    600 +
+ .../gpos4_multiple_anchors_1.retain-gids.41.otf    |    Bin 1896 -> 0 bytes
+ .../gpos4_multiple_anchors_1.retain-gids.41.ttx    |    576 +
+ ..._anchors_1.retain-gids.retain-all-codepoint.otf |    Bin 3668 -> 0 bytes
+ ..._anchors_1.retain-gids.retain-all-codepoint.ttx |   1233 +
+ .../gpos5_font1.default.41,42,43,44.otf            |    Bin 1536 -> 0 bytes
+ .../gpos5_font1.default.41,42,43,44.ttx            |    323 +
+ .../gpos5_font1.default.41,42,43,45.otf            |    Bin 1544 -> 0 bytes
+ .../gpos5_font1.default.41,42,43,45.ttx            |    324 +
+ .../layout.gpos5/gpos5_font1.default.41,42,43.otf  |    Bin 1328 -> 0 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42,43.ttx  |    303 +
+ .../layout.gpos5/gpos5_font1.default.41,42,44.otf  |    Bin 1460 -> 0 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42,44.ttx  |    304 +
+ .../layout.gpos5/gpos5_font1.default.41,42,45.otf  |    Bin 1448 -> 0 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42,45.ttx  |    305 +
+ .../layout.gpos5/gpos5_font1.default.41,42.otf     |    Bin 1228 -> 0 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42.ttx     |    284 +
+ .../layout.gpos5/gpos5_font1.default.41,43.otf     |    Bin 1332 -> 0 bytes
+ .../layout.gpos5/gpos5_font1.default.41,43.ttx     |    294 +
+ .../layout.gpos5/gpos5_font1.default.41.otf        |    Bin 1216 -> 0 bytes
+ .../layout.gpos5/gpos5_font1.default.41.ttx        |    275 +
+ .../layout.gpos5/gpos5_font1.default.42.otf        |    Bin 1076 -> 0 bytes
+ .../layout.gpos5/gpos5_font1.default.42.ttx        |    264 +
+ .../gpos5_font1.default.retain-all-codepoint.otf   |    Bin 3688 -> 0 bytes
+ .../gpos5_font1.default.retain-all-codepoint.ttx   |   1250 +
+ .../gpos5_font1.retain-gids.41,42,43,44.otf        |    Bin 2240 -> 0 bytes
+ .../gpos5_font1.retain-gids.41,42,43,44.ttx        |    643 +
+ .../gpos5_font1.retain-gids.41,42,43,45.otf        |    Bin 2264 -> 0 bytes
+ .../gpos5_font1.retain-gids.41,42,43,45.ttx        |    649 +
+ .../gpos5_font1.retain-gids.41,42,43.otf           |    Bin 2028 -> 0 bytes
+ .../gpos5_font1.retain-gids.41,42,43.ttx           |    623 +
+ .../gpos5_font1.retain-gids.41,42,44.otf           |    Bin 2176 -> 0 bytes
+ .../gpos5_font1.retain-gids.41,42,44.ttx           |    629 +
+ .../gpos5_font1.retain-gids.41,42,45.otf           |    Bin 2172 -> 0 bytes
+ .../gpos5_font1.retain-gids.41,42,45.ttx           |    635 +
+ .../layout.gpos5/gpos5_font1.retain-gids.41,42.otf |    Bin 1932 -> 0 bytes
+ .../layout.gpos5/gpos5_font1.retain-gids.41,42.ttx |    604 +
+ .../layout.gpos5/gpos5_font1.retain-gids.41,43.otf |    Bin 2048 -> 0 bytes
+ .../layout.gpos5/gpos5_font1.retain-gids.41,43.ttx |    619 +
+ .../layout.gpos5/gpos5_font1.retain-gids.41.otf    |    Bin 1916 -> 0 bytes
+ .../layout.gpos5/gpos5_font1.retain-gids.41.ttx    |    595 +
+ .../layout.gpos5/gpos5_font1.retain-gids.42.otf    |    Bin 1788 -> 0 bytes
+ .../layout.gpos5/gpos5_font1.retain-gids.42.ttx    |    589 +
+ ...pos5_font1.retain-gids.retain-all-codepoint.otf |    Bin 3688 -> 0 bytes
+ ...pos5_font1.retain-gids.retain-all-codepoint.ttx |   1250 +
+ .../gpos6_font1.default.41,42,43,44.otf            |    Bin 1492 -> 0 bytes
+ .../gpos6_font1.default.41,42,43,44.ttx            |    304 +
+ .../gpos6_font1.default.41,42,43,45.otf            |    Bin 1500 -> 0 bytes
+ .../gpos6_font1.default.41,42,43,45.ttx            |    305 +
+ .../layout.gpos6/gpos6_font1.default.41,42,43.otf  |    Bin 1284 -> 0 bytes
+ .../layout.gpos6/gpos6_font1.default.41,42,43.ttx  |    284 +
+ .../layout.gpos6/gpos6_font1.default.41,42.otf     |    Bin 1184 -> 0 bytes
+ .../layout.gpos6/gpos6_font1.default.41,42.ttx     |    265 +
+ .../gpos6_font1.default.41,43,44,45,46.otf         |    Bin 1840 -> 0 bytes
+ .../gpos6_font1.default.41,43,44,45,46.ttx         |    336 +
+ .../layout.gpos6/gpos6_font1.default.41,43,44.otf  |    Bin 1500 -> 0 bytes
+ .../layout.gpos6/gpos6_font1.default.41,43,44.ttx  |    295 +
+ .../layout.gpos6/gpos6_font1.default.41,43,45.otf  |    Bin 1508 -> 0 bytes
+ .../layout.gpos6/gpos6_font1.default.41,43,45.ttx  |    296 +
+ .../layout.gpos6/gpos6_font1.default.41,43.otf     |    Bin 1288 -> 0 bytes
+ .../layout.gpos6/gpos6_font1.default.41,43.ttx     |    275 +
+ .../layout.gpos6/gpos6_font1.default.41.otf        |    Bin 1172 -> 0 bytes
+ .../layout.gpos6/gpos6_font1.default.41.ttx        |    256 +
+ .../gpos6_font1.default.retain-all-codepoint.otf   |    Bin 3644 -> 0 bytes
+ .../gpos6_font1.default.retain-all-codepoint.ttx   |   1231 +
+ .../gpos6_font1.retain-gids.41,42,43,44.otf        |    Bin 2196 -> 0 bytes
+ .../gpos6_font1.retain-gids.41,42,43,44.ttx        |    624 +
+ .../gpos6_font1.retain-gids.41,42,43,45.otf        |    Bin 2220 -> 0 bytes
+ .../gpos6_font1.retain-gids.41,42,43,45.ttx        |    630 +
+ .../gpos6_font1.retain-gids.41,42,43.otf           |    Bin 1984 -> 0 bytes
+ .../gpos6_font1.retain-gids.41,42,43.ttx           |    604 +
+ .../layout.gpos6/gpos6_font1.retain-gids.41,42.otf |    Bin 1888 -> 0 bytes
+ .../layout.gpos6/gpos6_font1.retain-gids.41,42.ttx |    585 +
+ .../gpos6_font1.retain-gids.41,43,44,45,46.otf     |    Bin 2560 -> 0 bytes
+ .../gpos6_font1.retain-gids.41,43,44,45,46.ttx     |    661 +
+ .../gpos6_font1.retain-gids.41,43,44.otf           |    Bin 2216 -> 0 bytes
+ .../gpos6_font1.retain-gids.41,43,44.ttx           |    620 +
+ .../gpos6_font1.retain-gids.41,43,45.otf           |    Bin 2236 -> 0 bytes
+ .../gpos6_font1.retain-gids.41,43,45.ttx           |    626 +
+ .../layout.gpos6/gpos6_font1.retain-gids.41,43.otf |    Bin 2004 -> 0 bytes
+ .../layout.gpos6/gpos6_font1.retain-gids.41,43.ttx |    600 +
+ .../layout.gpos6/gpos6_font1.retain-gids.41.otf    |    Bin 1872 -> 0 bytes
+ .../layout.gpos6/gpos6_font1.retain-gids.41.ttx    |    576 +
+ ...pos6_font1.retain-gids.retain-all-codepoint.otf |    Bin 3644 -> 0 bytes
+ ...pos6_font1.retain-gids.retain-all-codepoint.ttx |   1231 +
+ ...ular.default.627,644,623,62D,644,627,645,2E.ttf |    Bin 12684 -> 0 bytes
+ ...ular.default.627,644,623,62D,644,627,645,2E.ttx |   4529 +
+ .../Amiri-Regular.default.627,644,62D,628.ttf      |    Bin 9992 -> 0 bytes
+ .../Amiri-Regular.default.627,644,62D,628.ttx      |   3537 +
+ .../Amiri-Regular.default.627,644.ttf              |    Bin 4168 -> 0 bytes
+ .../Amiri-Regular.default.627,644.ttx              |   1383 +
+ ...-Regular.default.633,645,627,621,20,644,627.ttf |    Bin 9516 -> 0 bytes
+ ...-Regular.default.633,645,627,621,20,644,627.ttx |   3371 +
+ .../Amiri-Regular.default.63A,64A,631.ttf          |    Bin 7324 -> 0 bytes
+ .../Amiri-Regular.default.63A,64A,631.ttx          |   2587 +
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttf |    Bin 48012 -> 0 bytes
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttx |  28725 ++++
+ .../Amiri-Regular.retain-gids.627,644,62D,628.ttf  |    Bin 42640 -> 0 bytes
+ .../Amiri-Regular.retain-gids.627,644,62D,628.ttx  |  25101 ++++
+ .../Amiri-Regular.retain-gids.627,644.ttf          |    Bin 36696 -> 0 bytes
+ .../Amiri-Regular.retain-gids.627,644.ttx          |  23003 +++
+ ...ular.retain-gids.633,645,627,621,20,644,627.ttf |    Bin 45908 -> 0 bytes
+ ...ular.retain-gids.633,645,627,621,20,644,627.ttx |  27759 ++++
+ .../Amiri-Regular.retain-gids.63A,64A,631.ttf      |    Bin 37988 -> 0 bytes
+ .../Amiri-Regular.retain-gids.63A,64A,631.ttx      |  22911 +++
+ ...g1_multiple_subrules_f1.default.30,31,32,33.otf |    Bin 1840 -> 0 bytes
+ ...g1_multiple_subrules_f1.default.30,31,32,33.ttx |    328 +
+ ...ning1_multiple_subrules_f1.default.41,42,43.otf |    Bin 1332 -> 0 bytes
+ ...ning1_multiple_subrules_f1.default.41,42,43.ttx |    284 +
+ ...le_subrules_f1.default.retain-all-codepoint.otf |    Bin 3704 -> 0 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.ttx |   1247 +
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf |    Bin 2304 -> 0 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.ttx |    563 +
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.otf |    Bin 2032 -> 0 bytes
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.ttx |    604 +
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf |    Bin 3704 -> 0 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.ttx |   1247 +
+ ...g2_multiple_subrules_f1.default.30,31,32,33.otf |    Bin 1840 -> 0 bytes
+ ...g2_multiple_subrules_f1.default.30,31,32,33.ttx |    328 +
+ ...ning2_multiple_subrules_f1.default.41,42,43.otf |    Bin 1332 -> 0 bytes
+ ...ning2_multiple_subrules_f1.default.41,42,43.ttx |    284 +
+ ...le_subrules_f1.default.retain-all-codepoint.otf |    Bin 3704 -> 0 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.ttx |   1247 +
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf |    Bin 2304 -> 0 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.ttx |    563 +
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.otf |    Bin 2032 -> 0 bytes
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.ttx |    604 +
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf |    Bin 3704 -> 0 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.ttx |   1247 +
+ ...pos_chaining3_simple_f1.default.30,31,32,33.otf |    Bin 1816 -> 0 bytes
+ ...pos_chaining3_simple_f1.default.30,31,32,33.ttx |    328 +
+ .../gpos_chaining3_simple_f1.default.41,42,43.otf  |    Bin 1308 -> 0 bytes
+ .../gpos_chaining3_simple_f1.default.41,42,43.ttx  |    284 +
+ ...ing3_simple_f1.default.retain-all-codepoint.otf |    Bin 3680 -> 0 bytes
+ ...ing3_simple_f1.default.retain-all-codepoint.ttx |   1247 +
+ ...chaining3_simple_f1.retain-gids.30,31,32,33.otf |    Bin 2280 -> 0 bytes
+ ...chaining3_simple_f1.retain-gids.30,31,32,33.ttx |    563 +
+ ...os_chaining3_simple_f1.retain-gids.41,42,43.otf |    Bin 2008 -> 0 bytes
+ ...os_chaining3_simple_f1.retain-gids.41,42,43.ttx |    604 +
+ ..._simple_f1.retain-gids.retain-all-codepoint.otf |    Bin 3680 -> 0 bytes
+ ..._simple_f1.retain-gids.retain-all-codepoint.ttx |   1247 +
+ .../layout.gpos9/gpos9_font2.default.41,42.otf     |    Bin 1184 -> 0 bytes
+ .../layout.gpos9/gpos9_font2.default.41,42.ttx     |    265 +
+ .../layout.gpos9/gpos9_font2.default.41.otf        |    Bin 1172 -> 0 bytes
+ .../layout.gpos9/gpos9_font2.default.41.ttx        |    256 +
+ .../layout.gpos9/gpos9_font2.default.42.otf        |    Bin 1032 -> 0 bytes
+ .../layout.gpos9/gpos9_font2.default.42.ttx        |    245 +
+ .../layout.gpos9/gpos9_font2.retain-gids.41,42.otf |    Bin 1888 -> 0 bytes
+ .../layout.gpos9/gpos9_font2.retain-gids.41,42.ttx |    585 +
+ .../layout.gpos9/gpos9_font2.retain-gids.41.otf    |    Bin 1872 -> 0 bytes
+ .../layout.gpos9/gpos9_font2.retain-gids.41.ttx    |    576 +
+ .../layout.gpos9/gpos9_font2.retain-gids.42.otf    |    Bin 1744 -> 0 bytes
+ .../layout.gpos9/gpos9_font2.retain-gids.42.ttx    |    570 +
+ ...ub_alternate_substitution.default.53A9,53F1.otf |    Bin 4348 -> 0 bytes
+ ...ub_alternate_substitution.default.53A9,53F1.ttx |   1009 +
+ .../gsub_alternate_substitution.default.53A9.otf   |    Bin 3904 -> 0 bytes
+ .../gsub_alternate_substitution.default.53A9.ttx   |    924 +
+ .../gsub_alternate_substitution.default.53F1.otf   |    Bin 2452 -> 0 bytes
+ .../gsub_alternate_substitution.default.53F1.ttx   |    638 +
+ ...e_substitution.default.retain-all-codepoint.otf |    Bin 6040 -> 0 bytes
+ ...e_substitution.default.retain-all-codepoint.ttx |   1387 +
+ ...lternate_substitution.retain-gids.53A9,53F1.otf |    Bin 4472 -> 0 bytes
+ ...lternate_substitution.retain-gids.53A9,53F1.ttx |   1063 +
+ ...sub_alternate_substitution.retain-gids.53A9.otf |    Bin 4056 -> 0 bytes
+ ...sub_alternate_substitution.retain-gids.53A9.ttx |    990 +
+ ...sub_alternate_substitution.retain-gids.53F1.otf |    Bin 2648 -> 0 bytes
+ ...sub_alternate_substitution.retain-gids.53F1.ttx |    728 +
+ ...bstitution.retain-gids.retain-all-codepoint.otf |    Bin 6132 -> 0 bytes
+ ...bstitution.retain-gids.retain-all-codepoint.ttx |   1423 +
+ ...text1_multiple_subrules_f2.default.41,42,43.otf |    Bin 1340 -> 0 bytes
+ ...text1_multiple_subrules_f2.default.41,42,43.ttx |    290 +
+ ...context1_multiple_subrules_f2.default.41,42.otf |    Bin 1240 -> 0 bytes
+ ...context1_multiple_subrules_f2.default.41,42.ttx |    271 +
+ ...context1_multiple_subrules_f2.default.41,43.otf |    Bin 1344 -> 0 bytes
+ ...context1_multiple_subrules_f2.default.41,43.ttx |    281 +
+ ...ub_context1_multiple_subrules_f2.default.41.otf |    Bin 1228 -> 0 bytes
+ ...ub_context1_multiple_subrules_f2.default.41.ttx |    262 +
+ ...le_subrules_f2.default.retain-all-codepoint.otf |    Bin 3712 -> 0 bytes
+ ...le_subrules_f2.default.retain-all-codepoint.ttx |   1253 +
+ ...1_multiple_subrules_f2.retain-gids.41,42,43.otf |    Bin 2040 -> 0 bytes
+ ...1_multiple_subrules_f2.retain-gids.41,42,43.ttx |    610 +
+ ...ext1_multiple_subrules_f2.retain-gids.41,42.otf |    Bin 1944 -> 0 bytes
+ ...ext1_multiple_subrules_f2.retain-gids.41,42.ttx |    591 +
+ ...ext1_multiple_subrules_f2.retain-gids.41,43.otf |    Bin 2060 -> 0 bytes
+ ...ext1_multiple_subrules_f2.retain-gids.41,43.ttx |    606 +
+ ...ontext1_multiple_subrules_f2.retain-gids.41.otf |    Bin 1928 -> 0 bytes
+ ...ontext1_multiple_subrules_f2.retain-gids.41.ttx |    582 +
+ ...ubrules_f2.retain-gids.retain-all-codepoint.otf |    Bin 3712 -> 0 bytes
+ ...ubrules_f2.retain-gids.retain-all-codepoint.ttx |   1253 +
+ ...text2_multiple_subrules_f2.default.41,42,43.otf |    Bin 1340 -> 0 bytes
+ ...text2_multiple_subrules_f2.default.41,42,43.ttx |    290 +
+ ...context2_multiple_subrules_f2.default.41,42.otf |    Bin 1240 -> 0 bytes
+ ...context2_multiple_subrules_f2.default.41,42.ttx |    271 +
+ ...context2_multiple_subrules_f2.default.41,43.otf |    Bin 1344 -> 0 bytes
+ ...context2_multiple_subrules_f2.default.41,43.ttx |    281 +
+ ...ub_context2_multiple_subrules_f2.default.41.otf |    Bin 1228 -> 0 bytes
+ ...ub_context2_multiple_subrules_f2.default.41.ttx |    262 +
+ ...le_subrules_f2.default.retain-all-codepoint.otf |    Bin 3712 -> 0 bytes
+ ...le_subrules_f2.default.retain-all-codepoint.ttx |   1253 +
+ ...2_multiple_subrules_f2.retain-gids.41,42,43.otf |    Bin 2040 -> 0 bytes
+ ...2_multiple_subrules_f2.retain-gids.41,42,43.ttx |    610 +
+ ...ext2_multiple_subrules_f2.retain-gids.41,42.otf |    Bin 1944 -> 0 bytes
+ ...ext2_multiple_subrules_f2.retain-gids.41,42.ttx |    591 +
+ ...ext2_multiple_subrules_f2.retain-gids.41,43.otf |    Bin 2060 -> 0 bytes
+ ...ext2_multiple_subrules_f2.retain-gids.41,43.ttx |    606 +
+ ...ontext2_multiple_subrules_f2.retain-gids.41.otf |    Bin 1928 -> 0 bytes
+ ...ontext2_multiple_subrules_f2.retain-gids.41.ttx |    582 +
+ ...ubrules_f2.retain-gids.retain-all-codepoint.otf |    Bin 3712 -> 0 bytes
+ ...ubrules_f2.retain-gids.retain-all-codepoint.ttx |   1253 +
+ ...sub_context3_successive_f1.default.41,42,43.otf |    Bin 1328 -> 0 bytes
+ ...sub_context3_successive_f1.default.41,42,43.ttx |    290 +
+ .../gsub_context3_successive_f1.default.41,42.otf  |    Bin 1228 -> 0 bytes
+ .../gsub_context3_successive_f1.default.41,42.ttx  |    271 +
+ .../gsub_context3_successive_f1.default.41,43.otf  |    Bin 1332 -> 0 bytes
+ .../gsub_context3_successive_f1.default.41,43.ttx  |    281 +
+ .../gsub_context3_successive_f1.default.41.otf     |    Bin 1216 -> 0 bytes
+ .../gsub_context3_successive_f1.default.41.ttx     |    262 +
+ ..._successive_f1.default.retain-all-codepoint.otf |    Bin 3700 -> 0 bytes
+ ..._successive_f1.default.retain-all-codepoint.ttx |   1253 +
+ ...context3_successive_f1.retain-gids.41,42,43.otf |    Bin 2028 -> 0 bytes
+ ...context3_successive_f1.retain-gids.41,42,43.ttx |    610 +
+ ...ub_context3_successive_f1.retain-gids.41,42.otf |    Bin 1932 -> 0 bytes
+ ...ub_context3_successive_f1.retain-gids.41,42.ttx |    591 +
+ ...ub_context3_successive_f1.retain-gids.41,43.otf |    Bin 2048 -> 0 bytes
+ ...ub_context3_successive_f1.retain-gids.41,43.ttx |    606 +
+ .../gsub_context3_successive_f1.retain-gids.41.otf |    Bin 1916 -> 0 bytes
+ .../gsub_context3_successive_f1.retain-gids.41.ttx |    582 +
+ ...cessive_f1.retain-gids.retain-all-codepoint.otf |    Bin 3700 -> 0 bytes
+ ...cessive_f1.retain-gids.retain-all-codepoint.ttx |   1253 +
+ ...g1_multiple_subrules_f1.default.30,31,32,33.otf |    Bin 1852 -> 0 bytes
+ ...g1_multiple_subrules_f1.default.30,31,32,33.ttx |    334 +
+ ...ning1_multiple_subrules_f1.default.41,42,43.otf |    Bin 1344 -> 0 bytes
+ ...ning1_multiple_subrules_f1.default.41,42,43.ttx |    290 +
+ ...le_subrules_f1.default.retain-all-codepoint.otf |    Bin 3716 -> 0 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.ttx |   1253 +
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf |    Bin 2316 -> 0 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.ttx |    569 +
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.otf |    Bin 2044 -> 0 bytes
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.ttx |    610 +
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf |    Bin 3716 -> 0 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.ttx |   1253 +
+ ...g2_multiple_subrules_f1.default.30,31,32,33.otf |    Bin 1852 -> 0 bytes
+ ...g2_multiple_subrules_f1.default.30,31,32,33.ttx |    334 +
+ ...ning2_multiple_subrules_f1.default.41,42,43.otf |    Bin 1344 -> 0 bytes
+ ...ning2_multiple_subrules_f1.default.41,42,43.ttx |    290 +
+ ...le_subrules_f1.default.retain-all-codepoint.otf |    Bin 3716 -> 0 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.ttx |   1253 +
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf |    Bin 2316 -> 0 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.ttx |    569 +
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.otf |    Bin 2044 -> 0 bytes
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.ttx |    610 +
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf |    Bin 3716 -> 0 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.ttx |   1253 +
+ ...sub_chaining3_simple_f2.default.30,31,32,33.otf |    Bin 1828 -> 0 bytes
+ ...sub_chaining3_simple_f2.default.30,31,32,33.ttx |    334 +
+ .../gsub_chaining3_simple_f2.default.41,42,43.otf  |    Bin 1320 -> 0 bytes
+ .../gsub_chaining3_simple_f2.default.41,42,43.ttx  |    290 +
+ ...ing3_simple_f2.default.retain-all-codepoint.otf |    Bin 3692 -> 0 bytes
+ ...ing3_simple_f2.default.retain-all-codepoint.ttx |   1253 +
+ ...chaining3_simple_f2.retain-gids.30,31,32,33.otf |    Bin 2292 -> 0 bytes
+ ...chaining3_simple_f2.retain-gids.30,31,32,33.ttx |    569 +
+ ...ub_chaining3_simple_f2.retain-gids.41,42,43.otf |    Bin 2020 -> 0 bytes
+ ...ub_chaining3_simple_f2.retain-gids.41,42,43.ttx |    610 +
+ ..._simple_f2.retain-gids.retain-all-codepoint.otf |    Bin 3692 -> 0 bytes
+ ..._simple_f2.retain-gids.retain-all-codepoint.ttx |   1253 +
+ ..._created.default.41,42,43,44,45,46,47,48,49.otf |    Bin 2176 -> 0 bytes
+ ..._created.default.41,42,43,44,45,46,47,48,49.ttx |    392 +
+ ...nually_created.default.41,42,43,44,45,46,47.otf |    Bin 1888 -> 0 bytes
+ ...nually_created.default.41,42,43,44,45,46,47.ttx |    357 +
+ ...nually_created.default.41,42,43,44,45,46,4D.otf |    Bin 1852 -> 0 bytes
+ ...nually_created.default.41,42,43,44,45,46,4D.ttx |    351 +
+ ...nually_created.default.41,42,43,44,45,46,51.otf |    Bin 1932 -> 0 bytes
+ ...nually_created.default.41,42,43,44,45,46,51.ttx |    364 +
+ ..._manually_created.default.41,42,43,44,45,46.otf |    Bin 1832 -> 0 bytes
+ ..._manually_created.default.41,42,43,44,45,46.ttx |    343 +
+ .../gsub8_manually_created.default.41,42,43.otf    |    Bin 1284 -> 0 bytes
+ .../gsub8_manually_created.default.41,42,43.ttx    |    285 +
+ .../gsub8_manually_created.default.41.otf          |    Bin 1172 -> 0 bytes
+ .../gsub8_manually_created.default.41.ttx          |    259 +
+ .../gsub8_manually_created.default.61.otf          |    Bin 1224 -> 0 bytes
+ .../gsub8_manually_created.default.61.ttx          |    268 +
+ ...nually_created.default.retain-all-codepoint.otf |    Bin 3656 -> 0 bytes
+ ...nually_created.default.retain-all-codepoint.ttx |   1152 +
+ ...ated.retain-gids.41,42,43,44,45,46,47,48,49.otf |    Bin 2884 -> 0 bytes
+ ...ated.retain-gids.41,42,43,44,45,46,47,48,49.ttx |    712 +
+ ...ly_created.retain-gids.41,42,43,44,45,46,47.otf |    Bin 2596 -> 0 bytes
+ ...ly_created.retain-gids.41,42,43,44,45,46,47.ttx |    677 +
+ ...ly_created.retain-gids.41,42,43,44,45,46,4D.otf |    Bin 2636 -> 0 bytes
+ ...ly_created.retain-gids.41,42,43,44,45,46,4D.ttx |    701 +
+ ...ly_created.retain-gids.41,42,43,44,45,46,51.otf |    Bin 2760 -> 0 bytes
+ ...ly_created.retain-gids.41,42,43,44,45,46,51.ttx |    734 +
+ ...ually_created.retain-gids.41,42,43,44,45,46.otf |    Bin 2540 -> 0 bytes
+ ...ually_created.retain-gids.41,42,43,44,45,46.ttx |    663 +
+ ...gsub8_manually_created.retain-gids.41,42,43.otf |    Bin 1984 -> 0 bytes
+ ...gsub8_manually_created.retain-gids.41,42,43.ttx |    605 +
+ .../gsub8_manually_created.retain-gids.41.otf      |    Bin 1872 -> 0 bytes
+ .../gsub8_manually_created.retain-gids.41.ttx      |    579 +
+ .../gsub8_manually_created.retain-gids.61.otf      |    Bin 2276 -> 0 bytes
+ .../gsub8_manually_created.retain-gids.61.ttx      |    748 +
+ ...ly_created.retain-gids.retain-all-codepoint.otf |    Bin 3656 -> 0 bytes
+ ...ly_created.retain-gids.retain-all-codepoint.ttx |   1152 +
+ .../expected/layout.khmer/Khmer.default.1780.ttf   |    Bin 4204 -> 0 bytes
+ .../expected/layout.khmer/Khmer.default.1780.ttx   |   2504 +
+ ...ult.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf |    Bin 6412 -> 0 bytes
+ ...ult.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttx |   3406 +
+ .../expected/layout.khmer/Khmer.default.31.ttf     |    Bin 4140 -> 0 bytes
+ .../expected/layout.khmer/Khmer.default.31.ttx     |   2486 +
+ .../layout.khmer/Khmer.retain-gids.1780.ttf        |    Bin 4464 -> 0 bytes
+ .../layout.khmer/Khmer.retain-gids.1780.ttx        |   2676 +
+ ...ids.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf |    Bin 7848 -> 0 bytes
+ ...ids.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttx |   4310 +
+ .../expected/layout.khmer/Khmer.retain-gids.31.ttf |    Bin 4256 -> 0 bytes
+ .../expected/layout.khmer/Khmer.retain-gids.31.ttx |   2562 +
+ ...Bold.default.627,644,623,62D,644,627,645,2E.ttf |    Bin 11396 -> 0 bytes
+ ...Bold.default.627,644,623,62D,644,627,645,2E.ttx |   4986 +
+ ...toNastaliqUrdu-Bold.default.627,644,62D,628.ttf |    Bin 18248 -> 0 bytes
+ ...toNastaliqUrdu-Bold.default.627,644,62D,628.ttx |   9792 ++
+ .../NotoNastaliqUrdu-Bold.default.627,644.ttf      |    Bin 3528 -> 0 bytes
+ .../NotoNastaliqUrdu-Bold.default.627,644.ttx      |   1326 +
+ ...rdu-Bold.default.633,645,627,621,20,644,627.ttf |    Bin 12368 -> 0 bytes
+ ...rdu-Bold.default.633,645,627,621,20,644,627.ttx |   5279 +
+ .../NotoNastaliqUrdu-Bold.default.63A,64A,631.ttf  |    Bin 20368 -> 0 bytes
+ .../NotoNastaliqUrdu-Bold.default.63A,64A,631.ttx  |  10363 ++
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttf |    Bin 18232 -> 0 bytes
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttx |   9170 ++
+ ...staliqUrdu-Bold.retain-gids.627,644,62D,628.ttf |    Bin 24376 -> 0 bytes
+ ...staliqUrdu-Bold.retain-gids.627,644,62D,628.ttx |  13452 ++
+ .../NotoNastaliqUrdu-Bold.retain-gids.627,644.ttf  |    Bin 9176 -> 0 bytes
+ .../NotoNastaliqUrdu-Bold.retain-gids.627,644.ttx  |   5158 +
+ ...Bold.retain-gids.633,645,627,621,20,644,627.ttf |    Bin 18172 -> 0 bytes
+ ...Bold.retain-gids.633,645,627,621,20,644,627.ttx |   8915 ++
+ ...toNastaliqUrdu-Bold.retain-gids.63A,64A,631.ttf |    Bin 26588 -> 0 bytes
+ ...toNastaliqUrdu-Bold.retain-gids.63A,64A,631.ttx |  14027 ++
+ .../Roboto-Regular.smallcaps.default.41,42,43.ttf  |    Bin 2464 -> 0 bytes
+ .../Roboto-Regular.smallcaps.default.41,42,43.ttx  |   1251 +
+ .../Roboto-Regular.smallcaps.default.41,43.ttf     |    Bin 2284 -> 0 bytes
+ .../Roboto-Regular.smallcaps.default.41,43.ttx     |   1120 +
+ .../layout/Roboto-Regular.smallcaps.default.41.ttf |    Bin 2084 -> 0 bytes
+ .../layout/Roboto-Regular.smallcaps.default.41.ttx |   1008 +
+ .../layout/Roboto-Regular.smallcaps.default.43.ttf |    Bin 2116 -> 0 bytes
+ .../layout/Roboto-Regular.smallcaps.default.43.ttx |   1017 +
+ .../Roboto-Regular.smallcaps.default.CA,CB.ttf     |    Bin 2388 -> 0 bytes
+ .../Roboto-Regular.smallcaps.default.CA,CB.ttx     |   1200 +
+ ...boto-Regular.smallcaps.retain-gids.41,42,43.ttf |    Bin 2716 -> 0 bytes
+ ...boto-Regular.smallcaps.retain-gids.41,42,43.ttx |   1431 +
+ .../Roboto-Regular.smallcaps.retain-gids.41,43.ttf |    Bin 2548 -> 0 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.41,43.ttx |   1305 +
+ .../Roboto-Regular.smallcaps.retain-gids.41.ttf    |    Bin 2336 -> 0 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.41.ttx    |   1188 +
+ .../Roboto-Regular.smallcaps.retain-gids.43.ttf    |    Bin 2384 -> 0 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.43.ttx    |   1207 +
+ .../Roboto-Regular.smallcaps.retain-gids.CA,CB.ttf |    Bin 6476 -> 0 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.CA,CB.ttx |   4120 +
+ .../data/expected/sbix/sbix.default.58,59.ttf      |    Bin 193528 -> 0 bytes
+ .../data/expected/sbix/sbix.default.58,59.ttx      |  12367 ++
+ test/subset/data/expected/sbix/sbix.default.58.ttf |    Bin 121168 -> 0 bytes
+ test/subset/data/expected/sbix/sbix.default.58.ttx |   7801 +
+ test/subset/data/expected/sbix/sbix.default.59.ttf |    Bin 89364 -> 0 bytes
+ test/subset/data/expected/sbix/sbix.default.59.ttx |   5813 +
+ .../sbix/sbix.drop-hints-retain-gids.58,59.ttf     |    Bin 193528 -> 0 bytes
+ .../sbix/sbix.drop-hints-retain-gids.58,59.ttx     |  12367 ++
+ .../sbix/sbix.drop-hints-retain-gids.58.ttf        |    Bin 121168 -> 0 bytes
+ .../sbix/sbix.drop-hints-retain-gids.58.ttx        |   7801 +
+ .../sbix/sbix.drop-hints-retain-gids.59.ttf        |    Bin 89404 -> 0 bytes
+ .../sbix/sbix.drop-hints-retain-gids.59.ttx        |   5826 +
+ .../data/expected/sbix/sbix.drop-hints.58,59.ttf   |    Bin 193528 -> 0 bytes
+ .../data/expected/sbix/sbix.drop-hints.58,59.ttx   |  12367 ++
+ .../data/expected/sbix/sbix.drop-hints.58.ttf      |    Bin 121168 -> 0 bytes
+ .../data/expected/sbix/sbix.drop-hints.58.ttx      |   7801 +
+ .../data/expected/sbix/sbix.drop-hints.59.ttf      |    Bin 89364 -> 0 bytes
+ .../data/expected/sbix/sbix.drop-hints.59.ttx      |   5813 +
+ .../data/expected/sbix/sbix.retain-gids.58,59.ttf  |    Bin 193528 -> 0 bytes
+ .../data/expected/sbix/sbix.retain-gids.58,59.ttx  |  12367 ++
+ .../data/expected/sbix/sbix.retain-gids.58.ttf     |    Bin 121168 -> 0 bytes
+ .../data/expected/sbix/sbix.retain-gids.58.ttx     |   7801 +
+ .../data/expected/sbix/sbix.retain-gids.59.ttf     |    Bin 89404 -> 0 bytes
+ .../data/expected/sbix/sbix.retain-gids.59.ttx     |   5826 +
+ .../variable/Fraunces.default.26,66,69,124,125.ttf |    Bin 15792 -> 0 bytes
+ .../variable/Fraunces.default.26,66,69,124,125.ttx |   6907 +
+ .../data/expected/variable/Fraunces.default.61.ttf |    Bin 4228 -> 0 bytes
+ .../data/expected/variable/Fraunces.default.61.ttx |   1427 +
+ test/subset/generate-expected-outputs.py           |      1 +
+ test/subset/run-tests.py                           |     24 +-
+ test/subset/subset_test_suite.py                   |     18 +-
+ 1945 files changed, 3999127 insertions(+), 21 deletions(-)
+
+commit 30579f5a37a7f0e044572e978660f050dc85559a
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jul 29 11:19:13 2021 -0600
+
+    [set] Document & use open-ended del_range()
+
+ src/hb-ot-layout-common.hh   | 2 +-
+ src/hb-ot-layout-gsubgpos.hh | 2 +-
+ src/hb-set.cc                | 3 +++
+ 3 files changed, 5 insertions(+), 2 deletions(-)
+
+commit 72489f3e0e41fd5a6b68afd1d0493a79a508e97c
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Thu Jul 29 18:20:03 2021 +0200
+
+    [test] Free memory in hb-aots-tester
+
+ test/shaping/data/aots/hb-aots-tester.cpp | 108 ++++++++++++++++--------------
+ 1 file changed, 56 insertions(+), 52 deletions(-)
+
+commit 895162d6f324590f79654575bf2b6126034a2042
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Thu Jul 29 18:03:00 2021 +0200
+
+    [test] Account for mark zeroing in AOTS tests
+    
+    The AOTS are not written with the face that mark glyphs gets their
+    advances zeroed. Taking this into account makes 16 more tests to pass.
+
+ test/shaping/data/aots/hb-aots-tester.cpp               | 17 ++++++++++++-----
+ test/shaping/data/aots/tests/gpos4_lookupflag.tests     |  4 ++--
+ .../data/aots/tests/gpos4_multiple_anchors.tests        |  2 +-
+ test/shaping/data/aots/tests/gpos4_simple.tests         | 10 +++++-----
+ test/shaping/data/aots/tests/gpos5.tests                |  4 ++--
+ test/shaping/data/aots/tests/gpos6.tests                |  6 +++---
+ .../data/aots/tests/gpos_chaining1_lookupflag.tests     |  2 +-
+ .../data/aots/tests/gpos_chaining2_lookupflag.tests     |  2 +-
+ .../data/aots/tests/gpos_chaining3_lookupflag.tests     |  2 +-
+ .../data/aots/tests/gpos_context1_lookupflag.tests      |  4 ++--
+ .../data/aots/tests/gpos_context2_lookupflag.tests      |  4 ++--
+ .../data/aots/tests/gpos_context3_lookupflag.tests      |  4 ++--
+ 12 files changed, 34 insertions(+), 27 deletions(-)
+
+commit e65bf60500d575d83d71bc94723c58a4765d59ba
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Thu Jul 29 17:36:09 2021 +0200
+
+    [test] make this test runner less verbose
+    
+    Print the command being called once and in a way the can be manually
+    run.
+
+ test/shaping/run-tests.py | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+commit 2d54c34680fd22e195eb6bd9e87c25a94e9a4b8b
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jul 28 18:20:53 2021 -0600
+
+    [subset/VarStore] Fix OOM in fuzzer test
+    
+    The test in question is the one added in c68a00b92eb62fdc79f9a2bd1fc7a6acc24a3602.
+    Culprit is that it's allocating lots of memory because of region_indices that
+    are out-of-range anyway. So, try to filter those out first.
+
+ src/hb-ot-layout-common.hh | 28 ++++++++++++++++++----------
+ src/hb-set.hh              |  2 +-
+ 2 files changed, 19 insertions(+), 11 deletions(-)
+
+commit ff1fe25a5dbd249b8939f3c851d096b8fb1e50b5
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jul 28 18:02:52 2021 -0600
+
+    [VarStore] Rename internal get_scalars() to get_region_scalars()
+
+ src/hb-cff2-interp-cs.hh   |  4 ++--
+ src/hb-ot-layout-common.hh | 25 +++++++++++++------------
+ 2 files changed, 15 insertions(+), 14 deletions(-)
+
+commit d7541f7b55dc30cd0cbb68f9066b2fff5f60e754
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jul 29 00:09:24 2021 -0600
+
+    [util/hb-shape] Free cached resources on termination
+
+ util/options.cc | 33 +++++++++++++++------------------
+ util/options.hh | 18 ++++++++++++++----
+ 2 files changed, 29 insertions(+), 22 deletions(-)
+
+commit ad03f34df75bfff32f12787f4af3b972ee57fb19
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jul 28 19:05:12 2021 -0600
+
+    [util/hb-shape] Cache blob/face in batch mode
+
+ util/options.cc | 41 +++++++++++++++++++++++++++++++++++------
+ util/options.hh |  7 ++++++-
+ 2 files changed, 41 insertions(+), 7 deletions(-)
+
+commit 9a7ff54bb7ce9cafb563f740e25df931868e12dd
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Thu Jul 29 01:52:55 2021 +0200
+
+    [test] Write one sequence per-line
+    
+    https://github.com/harfbuzz/harfbuzz/pull/3087#issuecomment-888691436
+
+ src/gen-emoji-table.py                             |   21 +-
+ .../data/in-house/tests/emoji-clusters.tests       | 3327 +++++++++++++++++++-
+ 2 files changed, 3265 insertions(+), 83 deletions(-)
+
+commit ddf87ffb22d30d6b15083f1f6d5d4fe20417b538
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Thu Jul 29 01:12:46 2021 +0200
+
+    [test] Add generated tests for emoji clusters
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/3017
+    
+    Uses AdobeBlank2.ttf from:
+    
+      https://github.com/adobe-fonts/adobe-blank-2
+    
+    instead of a dummy empty font so that everything maps to GID 1 and
+    control code points are kept instead of being dropped because there is
+    not space glyph (otherwise we’d need to identify control code points
+    somehow when generating the expectations).
+
+ src/gen-emoji-table.py                             |  39 +++++++++++-
+ test/shaping/data/in-house/Makefile.sources        |   1 +
+ test/shaping/data/in-house/fonts/AdobeBlank2.ttf   | Bin 0 -> 2360 bytes
+ test/shaping/data/in-house/meson.build             |   1 +
+ .../data/in-house/tests/emoji-clusters.tests       |  66 +++++++++++++++++++++
+ 5 files changed, 105 insertions(+), 2 deletions(-)
+
+commit f0a1892ff991581e787193fb81361d68a93933e7
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jul 28 17:36:22 2021 -0600
+
+    [serialize] Remove unnecessary pointer indirection
+
+ src/hb-open-file.hh            |  4 ++--
+ src/hb-open-type.hh            | 12 ++++++------
+ src/hb-ot-cff-common.hh        |  6 +++---
+ src/hb-ot-cff1-table.hh        |  4 ++--
+ src/hb-ot-cmap-table.hh        |  6 +++---
+ src/hb-ot-color-sbix-table.hh  |  2 +-
+ src/hb-ot-hdmx-table.hh        |  2 +-
+ src/hb-ot-layout-common.hh     | 20 ++++++++++----------
+ src/hb-ot-layout-gpos-table.hh |  4 ++--
+ src/hb-ot-layout-gsub-table.hh | 14 +++++++-------
+ src/hb-ot-var-hvar-table.hh    |  2 +-
+ 11 files changed, 38 insertions(+), 38 deletions(-)
+
+commit 1c511ed6f6c0f36ec2767b88e4c93682530cfd0d
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jul 28 17:33:26 2021 -0600
+
+    [subset] Simplify VarStore serialization
+
+ src/hb-ot-layout-common.hh | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+commit ad4c6924926830316fb1593a60d0c4858d095052
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jul 28 16:50:34 2021 -0600
+
+    [subset] Simplify VarStore serialize
+
+ src/hb-ot-layout-common.hh | 25 +++++++++++++------------
+ 1 file changed, 13 insertions(+), 12 deletions(-)
+
+commit 25dee6097741e9594d545ff764623c30289e5c58
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jul 28 13:58:24 2021 -0600
+
+    [sanitize] Revert some from c68a00b92eb62fdc79f9a2bd1fc7a6acc24a3602
+    
+    That overflow check was already happening in arrayZ.sanitize().
+
+ src/hb-ot-layout-common.hh | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+commit 6fe0d7d6e8be657a64eaf288fc4049e010669c89
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jul 28 12:06:49 2021 -0600
+
+    [GSUB] If MultipleSubst is applied to a ligature-component, preserve lig-id
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/3069
+
+ src/hb-ot-layout-gsub-table.hh                           |   9 +++++++--
+ .../fonts/b31e6c52a31edadc16f1bec9efe6019e2d59824a.ttf   | Bin 0 -> 6812 bytes
+ test/shaping/data/in-house/tests/ligature-id.tests       |   1 +
+ 3 files changed, 8 insertions(+), 2 deletions(-)
+
+commit b926fb9bb010e838282b9f735c3cb2e39340c708
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jul 28 11:58:10 2021 -0600
+
+    Whitespace
+
+ src/hb-ot-layout-gsub-table.hh | 1 -
+ 1 file changed, 1 deletion(-)
+
+commit cc3a7ceea3322080d0607b4af7d0fa2b2f0e6c0e
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jul 28 11:53:06 2021 -0600
+
+    Fix macro-in-macro invocation
+    
+    ../src/hb-ot-color-colr-table.hh:980:2: error: embedding a directive within macro arguments has undefined behavior [-Werror,-Wembedded-directive]
+    \#if COLRV1_ENABLE_SUBSETTING == 1
+
+ src/hb-ot-color-colr-table.hh | 13 +++++--------
+ 1 file changed, 5 insertions(+), 8 deletions(-)
+
+commit 087e2705de1ea5195eb77e144ef9196058d1ee7d
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jul 28 11:42:31 2021 -0600
+
+    Fix signed-ness error in 0ded6a70c829284a8220ce30a405b0a974061df4
+
+ src/hb-serialize.hh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit f3e031539f72d67e9bcfad96b28798367a79f1ec
+Author: Garret Rieger <grieger at google.com>
+Date:   Tue Jul 27 14:40:15 2021 -0700
+
+    Revert "[ci] Bin FontTools version due to recent COLRv1 changes"
+    
+    This reverts commit 163748b5059e7b02a8ea57e263b009020a3ed499.
+
+ .circleci/config.yml           |  4 ++--
+ .github/workflows/linux-ci.yml |  2 +-
+ .github/workflows/macos-ci.yml |  2 +-
+ .github/workflows/msvc-ci.yml  |  2 +-
+ .github/workflows/msys2-ci.yml |  2 +-
+ src/hb-ot-color-colr-table.hh  | 13 +++++--------
+ 6 files changed, 11 insertions(+), 14 deletions(-)
+
+commit acbd8b27dce3ee369f7d6022eb8bcddfd2fb666c
+Author: Garret Rieger <grieger at google.com>
+Date:   Tue Jul 27 14:31:18 2021 -0700
+
+    [subset] temporarily disable COLRv1 subsetting.
+    
+    Currently COLRv1 spec is being changed so the subsetting implementation is out of sync. Disable subsetting by failing sanitization for COLRv1 tables and disable all colrv1 tests.
+
+ src/hb-ot-color-colr-table.hh     | 15 +++++++++++++--
+ test/subset/data/Makefile.am      |  1 +
+ test/subset/data/Makefile.sources |  6 +++++-
+ test/subset/meson.build           |  4 +++-
+ 4 files changed, 22 insertions(+), 4 deletions(-)
+
+commit 5dae8297bbb868e57557a22bd9c56514bb8dd00d
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jul 28 11:35:40 2021 -0600
+
+    [util] Minor followup to https://github.com/harfbuzz/harfbuzz/pull/3083
+
+ util/options.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 0ded6a70c829284a8220ce30a405b0a974061df4
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jul 28 11:28:38 2021 -0600
+
+    [subset] Fix another fuzzer issue
+    
+    Addition could overflow on 32bit arch.
+    
+    Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36636
+    Fixes https://oss-fuzz.com/testcase-detail/5072358514753536
+
+ src/hb-serialize.hh                                     |   5 +++--
+ ...testcase-minimized-hb-subset-fuzzer-5072358514753536 | Bin 0 -> 55875 bytes
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+commit c65e1e0842affc66149cf459e610159f7b7f3992
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Jul 28 17:04:10 2021 +0200
+
+    [test] Run AOTS cmap tests with ot font functions only
+    
+    We are not interested in testing FreeType cmap support.
+    
+    Fixes most format 4 tests. The remaining test seems to be peculiar, and
+    I can’t find any cmap implementation that produces the expected output.
+
+ test/shaping/data/aots/hb-aots-tester.cpp |  2 +-
+ test/shaping/data/aots/tests/cmap0.tests  |  2 +-
+ test/shaping/data/aots/tests/cmap10.tests |  4 ++--
+ test/shaping/data/aots/tests/cmap12.tests |  2 +-
+ test/shaping/data/aots/tests/cmap2.tests  |  2 +-
+ test/shaping/data/aots/tests/cmap4.tests  | 12 ++++++------
+ test/shaping/data/aots/tests/cmap6.tests  |  4 ++--
+ test/shaping/data/aots/tests/cmap8.tests  |  2 +-
+ 8 files changed, 15 insertions(+), 15 deletions(-)
+
+commit 8396c523b6715893c67163c947521c9b1408f594
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Jul 28 16:29:43 2021 +0200
+
+    [test] Add AOTS cmap tests
+    
+    Uses https://github.com/adobe-type-tools/aots/pull/3
+    
+    Related to https://github.com/unicode-org/text-rendering-tests/issues/70
+    
+    We don’t support format 4 or 8, so these tests are disabled. We support
+    format 4 but most of the tests are failing, investigating.
+
+ test/shaping/data/aots/Makefile.sources   |  7 +++
+ test/shaping/data/aots/hb-aots-tester.cpp | 82 +++++++++++++++++++++++++++++++
+ test/shaping/data/aots/meson.build        |  7 +++
+ test/shaping/data/aots/tests/cmap0.tests  |  1 +
+ test/shaping/data/aots/tests/cmap10.tests |  2 +
+ test/shaping/data/aots/tests/cmap12.tests |  1 +
+ test/shaping/data/aots/tests/cmap2.tests  |  1 +
+ test/shaping/data/aots/tests/cmap4.tests  |  6 +++
+ test/shaping/data/aots/tests/cmap6.tests  |  2 +
+ test/shaping/data/aots/tests/cmap8.tests  |  1 +
+ 10 files changed, 110 insertions(+)
+
+commit 50379fbb1517387d91b3ec4cc55a7500dd09b436
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Jul 28 16:13:49 2021 +0200
+
+    [util] Don’t split text at new lines in batch mode
+    
+    In batch mode (which is used for testing) we are probably not interested
+    in splitting text into lines as we could have split the string into
+    different tests. This fixes a bunch of AOTS tests that use newlines as
+    input.
+
+ test/shaping/data/aots/tests/lookupflag_ignore_attach.tests | 10 +++++-----
+ util/hb-shape.cc                                            |  2 +-
+ util/main-font-text.hh                                      |  4 ++--
+ util/options.cc                                             |  6 +++---
+ util/options.hh                                             |  2 +-
+ 5 files changed, 12 insertions(+), 12 deletions(-)
+
+commit 92b85749f2b284a370fff3905c0a554bbbc7b323
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Jul 28 15:56:53 2021 +0200
+
+    [util] Strip quotes when parsing features
+    
+    When running in batch mode, the quotes are not stripped by the shell and
+    end up in the feature string. This breaks one of the AOTS tests.
+    
+    Alternatively, we can remove the quotes from the test files, not sure
+    which is less hacky, though!
+
+ test/shaping/data/aots/tests/gsub3_1_simple.tests | 2 +-
+ util/options.cc                                   | 8 ++++++++
+ 2 files changed, 9 insertions(+), 1 deletion(-)
+
+commit ad9559e3e23ab32c27dc62374f040330e25f24eb
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Jul 28 14:35:23 2021 +0200
+
+    [tests] Make AOTS update.py work on macOS
+    
+    Use C++ compiler and make sure C++11 is used.
+
+ test/shaping/data/aots/update.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit d84efca312b2a10dc1c7b5444bc802c2d1b19e17
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Jul 28 13:17:41 2021 +0200
+
+    [tests] Add missed test file to Makefile/meson
+    
+    It was introduced in 205737acdc268b1c90cf00bde2d2038519a8bf48 but was
+    not actually used.
+    
+    See https://github.com/harfbuzz/harfbuzz/issues/2098
+
+ test/shaping/data/in-house/Makefile.sources | 1 +
+ test/shaping/data/in-house/meson.build      | 1 +
+ 2 files changed, 2 insertions(+)
+
+commit 09474d8d7b051b1465582828c8ec5afcccb6c3c6
+Author: Garret Rieger <grieger at google.com>
+Date:   Tue Jun 29 16:07:14 2021 -0700
+
+    [subset] Fix fuzzer timeout in add_gid_and_children.
+    
+    The composite glyph graph isn't check for max operations by sanitize so track an operations count during the graph traversal.
+
+ src/hb-ot-glyf-table.hh                            |  22 +++++++++++++++------
+ ...ase-minimized-hb-subset-fuzzer-5991762219892736 | Bin 0 -> 80599 bytes
+ 2 files changed, 16 insertions(+), 6 deletions(-)
+
+commit c68a00b92eb62fdc79f9a2bd1fc7a6acc24a3602
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Jul 27 13:25:22 2021 -0600
+
+    [subset] Fix possible overflows in VarRegionList serialize
+    
+    Fixes https://oss-fuzz.com/testcase-detail/5362189182566400
+
+ src/harfbuzz.cc                                         |   1 +
+ src/hb-ot-layout-common.hh                              |   7 +++++--
+ ...testcase-minimized-hb-subset-fuzzer-5362189182566400 | Bin 0 -> 85171 bytes
+ 3 files changed, 6 insertions(+), 2 deletions(-)
+
+commit 7b8464b655b190c16bba33cefdd58acb03d32ddf
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Jul 27 13:15:07 2021 -0600
+
+    [serialize] Check for overflow in allocate_size()
+    
+    If size was > INT_MAX, then the out-of-room check was failing to perform
+    as intended.
+    
+    Part of fixing https://oss-fuzz.com/testcase-detail/5362189182566400
+
+ src/hb-serialize.hh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit bf2c87bfe6b3826d187dfee2ca894b5a39f6d17e
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Jul 27 13:10:41 2021 -0600
+
+    Add hb_memcpy() that does len=0 check
+
+ src/hb-algs.hh | 8 ++++++++
+ src/hb-set.hh  | 8 ++------
+ 2 files changed, 10 insertions(+), 6 deletions(-)
+
+commit 5f801da945025d66204c61fc11a2ff7fd55e3666
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Tue Jul 27 20:54:19 2021 +0200
+
+    [hb-ms-features] Move code out of header file
+
+ src/Makefile.sources        |   2 +
+ src/hb-ms-feature-ranges.cc | 177 ++++++++++++++++++++++++++++++++++++++++++++
+ src/hb-ms-feature-ranges.hh | 140 +----------------------------------
+ src/meson.build             |   2 +
+ 4 files changed, 185 insertions(+), 136 deletions(-)
+
+commit 990c15dbe5dfaf35de02089832938a4821369074
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Tue Jul 27 20:43:53 2021 +0200
+
+    [hb-ms-features] Rename types to be less general
+
+ src/hb-directwrite.cc       |  2 +-
+ src/hb-ms-feature-ranges.hh | 79 ++++++++++++++++++++++-----------------------
+ src/hb-uniscribe.cc         |  2 +-
+ 3 files changed, 41 insertions(+), 42 deletions(-)
+
+commit 69199211b7a9b7d7ea0a603ec9d8c25a48f1fcd5
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Tue Jul 27 19:51:23 2021 +0200
+
+    [uniscribe/directwrite] Move feature setup to shared file
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/3070
+
+ src/hb-directwrite.cc       | 236 +++++++++-----------------------------------
+ src/hb-ms-feature-ranges.hh | 229 ++++++++++++++++++++++++++++++++++++++++++
+ src/hb-uniscribe.cc         | 213 ++++++---------------------------------
+ 3 files changed, 308 insertions(+), 370 deletions(-)
+
+commit fc7f77812068840fd6d6edc8c0647baf52f65d07
+Author: Garret Rieger <grieger at google.com>
+Date:   Tue Jul 27 12:21:19 2021 -0600
+
+    [subset] add a note to hb-subset on what is and isn't supported (#3076)
+
+ src/hb-subset.cc | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit 3e4f006fe24186182b12ec04776aedbc0f6659b3
+Merge: 163748b50 791a1bf3a
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Jul 27 09:28:47 2021 -0600
+
+    Merge pull request #3079 from harfbuzz/windows-getenv
+    
+    Don’t disable getenv on Windows
+
+commit 791a1bf3a4e356d9ea0222e3ed6bc6b56011c64d
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Tue Jul 27 15:22:13 2021 +0200
+
+    Don’t disable getenv on Windows
+    
+    The condition is inverted, regression from
+    40ec187dec07e97ed4004b9831e7be844e6e7948.
+
+ src/hb.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 163748b5059e7b02a8ea57e263b009020a3ed499
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Mon Jul 26 23:03:16 2021 +0200
+
+    [ci] Bin FontTools version due to recent COLRv1 changes
+    
+    Should be reverted once HarfBuzz updated to match FontTools.
+
+ .circleci/config.yml           | 4 ++--
+ .github/workflows/linux-ci.yml | 2 +-
+ .github/workflows/macos-ci.yml | 2 +-
+ .github/workflows/msvc-ci.yml  | 2 +-
+ .github/workflows/msys2-ci.yml | 2 +-
+ 5 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 4762fcb415c8070dbbfbb04ff0cf2c55385c812d
+Merge: aeec27845 71b5509c1
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jul 26 11:48:55 2021 -0700
+
+    Merge pull request #3067 from googlefonts/glyph_names
+    
+    [subset] support option --glyph-names
+
+commit aeec278453c1d529003f276867f56b4e205b6e2e
+Merge: 404b91b93 a9a607d36
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jul 26 11:31:54 2021 -0700
+
+    Merge pull request #3068 from harfbuzz/hoi
+    
+    [variations] Support multiple axes with same tag, aka HOI
+
+commit 404b91b93d4dd333992b021e416b4a0c27f997d6
+Merge: c2d58c974 ec99fdb7e
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jul 26 11:07:55 2021 -0700
+
+    Merge pull request #3071 from harfbuzz/subset-flags
+    
+    [sebset] Use [s|g]et_flag for retain_all_layout_features
+
+commit ec99fdb7e83ebc70993385a9b852cc05bf4693bf
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Mon Jul 26 01:35:13 2021 +0200
+
+    [sebset] Use [s|g]et_flag for retain_all_layout_features
+    
+    Looks like this was missed when adding hb_subset_input_[s|g]et_flag()
+
+ docs/harfbuzz-sections.txt |  2 --
+ src/hb-subset-input.cc     | 19 +++++--------------
+ src/hb-subset.h            | 11 +++++------
+ 3 files changed, 10 insertions(+), 22 deletions(-)
+
+commit c2d58c9747794a91c4d1e9d71426039e8b16be0b
+Merge: b235511ed acc7100a3
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jul 26 00:08:34 2021 -0700
+
+    Merge pull request #3072 from harfbuzz/subset-docs
+    
+    [docs] Improve subset documentation
+
+commit acc7100a3f37fd72cfcd5953cf9446b04ef387b6
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Mon Jul 26 02:13:49 2021 +0200
+
+    [docs] Improve subset documentation
+
+ docs/harfbuzz-sections.txt |  1 +
+ src/hb-subset-input.cc     | 58 +++++++++++++++++++++++++++++++++++-----------
+ src/hb-subset-plan.cc      |  9 +++++--
+ src/hb-subset.h            |  4 ++--
+ 4 files changed, 54 insertions(+), 18 deletions(-)
+
+commit 3e2734cf9131dc075ac120209c803d55720672b3
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Mon Jul 26 02:12:21 2021 +0200
+
+    [docs] Don’t use GTK-Doc syntax for internal functions
+    
+    We don’t generate docs for them, reduces the number of warnings.
+
+ src/hb-subset-cff-common.cc | 12 ++++--------
+ src/hb-subset-cff1.cc       |  6 ------
+ src/hb-subset-cff2.cc       |  4 ----
+ 3 files changed, 4 insertions(+), 18 deletions(-)
+
+commit 71b5509c195546b38c27a4efa69f80c175da4d3a
+Author: Qunxin Liu <qxliu at google.com>
+Date:   Tue Jul 20 20:05:35 2021 -0700
+
+    [subset] support option --glyph-names
+
+ src/Makefile.sources                               |   1 +
+ src/hb-ot-post-table-v2subset.hh                   | 114 +++++++++++++++++++++
+ src/hb-ot-post-table.hh                            |  25 ++++-
+ src/hb-subset-input.cc                             |   6 ++
+ src/hb-subset-input.hh                             |   1 +
+ src/hb-subset-plan.cc                              |   1 +
+ src/hb-subset-plan.hh                              |   1 +
+ src/hb-subset.cc                                   |   1 +
+ src/hb-subset.h                                    |   3 +
+ .../Comfortaa-Regular-new.glyph-names.61,62,63.ttf | Bin 0 -> 7072 bytes
+ .../Comfortaa-Regular-new.glyph-names.61,63.ttf    | Bin 0 -> 6700 bytes
+ .../Comfortaa-Regular-new.glyph-names.61.ttf       | Bin 0 -> 6336 bytes
+ .../Comfortaa-Regular-new.glyph-names.62.ttf       | Bin 0 -> 6208 bytes
+ .../Comfortaa-Regular-new.glyph-names.63.ttf       | Bin 0 -> 6264 bytes
+ ...egular-new.glyph-names.retain-all-codepoint.ttf | Bin 0 -> 227920 bytes
+ ...yeongjo-Regular-subset.glyph-names.61,62,63.ttf | Bin 0 -> 4128 bytes
+ ...umMyeongjo-Regular-subset.glyph-names.61,63.ttf | Bin 0 -> 3580 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.61.ttf | Bin 0 -> 3156 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.62.ttf | Bin 0 -> 3180 bytes
+ ...NanumMyeongjo-Regular-subset.glyph-names.63.ttf | Bin 0 -> 3048 bytes
+ ...lar-subset.glyph-names.retain-all-codepoint.ttf | Bin 0 -> 9524 bytes
+ .../Roboto-Regular.abc.glyph-names.61,62,63.ttf    | Bin 0 -> 2452 bytes
+ .../Roboto-Regular.abc.glyph-names.61,63.ttf       | Bin 0 -> 2260 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.61.ttf   | Bin 0 -> 2048 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.62.ttf   | Bin 0 -> 1916 bytes
+ .../basics/Roboto-Regular.abc.glyph-names.63.ttf   | Bin 0 -> 1972 bytes
+ ...egular.abc.glyph-names.retain-all-codepoint.ttf | Bin 0 -> 2452 bytes
+ test/subset/data/profiles/glyph-names.txt          |   1 +
+ test/subset/data/tests/basics.tests                |   1 +
+ util/options-subset.cc                             |   1 +
+ 30 files changed, 152 insertions(+), 4 deletions(-)
+
+commit b235511ed88e46d97d27a9176da1931f4a701b0d
+Merge: 0a44feaed 1fde80ad2
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Jul 23 12:15:15 2021 -0700
+
+    Merge pull request #3021 from googlefonts/stable_api
+    
+    [subset] update hb_subset api with final changes before going stable.
+
+commit a9a607d360c491104517bffdb81701c99252cfe4
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jul 22 16:49:56 2021 -0700
+
+    [variations] Support multiple axes with same tag, aka HOI
+    
+    The axes in fvar are in arbitrary order, NOT sorted. Hence have to
+    lsearch all entries.
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/1673
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/2743
+    
+    Test from https://github.com/ctrlcctrlv/FontForge-Higher-Order-Interpolation
+
+ src/hb-font.cc                                     |  21 ++++++++-------
+ src/hb-ot-var-fvar-table.hh                        |  29 +++------------------
+ test/shaping/data/in-house/Makefile.sources        |   3 +--
+ .../e8691822f6a705e3e9fb48a0405c645b1a036590.ttf   | Bin 0 -> 2192 bytes
+ test/shaping/data/in-house/meson.build             |   3 +--
+ .../data/in-house/tests/variations-rounding.tests  |   2 --
+ .../data/in-house/tests/variations-space.tests     |   2 --
+ test/shaping/data/in-house/tests/variations.tests  |   5 ++++
+ 8 files changed, 21 insertions(+), 44 deletions(-)
+
+commit 1fde80ad282affc5d6cb54cd38915a803eeb70cb
+Author: Garret Rieger <grieger at google.com>
+Date:   Thu Jul 22 16:45:48 2021 -0700
+
+    [subset] update comments referencing hb_subset_input_t parameter.
+
+ src/hb-subset-input.cc | 26 +++++++++++++-------------
+ 1 file changed, 13 insertions(+), 13 deletions(-)
+
+commit c581d11eba0885d3e286d58cf648fec52caf6cd4
+Author: Garret Rieger <grieger at google.com>
+Date:   Thu Jul 22 14:04:39 2021 -0700
+
+    [set] in hb_set_set() avoid calling memcpy on nullptr.
+
+ src/hb-set.hh | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 2b9cb29923ab1face19a84a03459dabe2d47fb67
+Author: Garret Rieger <grieger at google.com>
+Date:   Thu Jul 22 13:26:03 2021 -0700
+
+    [subset] cleanup no_subset_tables on destruction.
+
+ src/hb-subset-input.cc | 1 +
+ src/hb-subset-plan.cc  | 1 +
+ 2 files changed, 2 insertions(+)
+
+commit 89fc399eba5c7adf61c67be60cf5e81cfb21bbdc
+Author: Garret Rieger <grieger at google.com>
+Date:   Thu Jul 22 13:00:34 2021 -0700
+
+    [subset] Add hb-subset section documentation.
+
+ src/hb-subset.cc | 11 +++++++++++
+ src/hb-subset.h  |  4 ----
+ 2 files changed, 11 insertions(+), 4 deletions(-)
+
+commit 792e2ed61c14ba850e7ffcedbddc107947394014
+Author: Garret Rieger <grieger at google.com>
+Date:   Thu Jul 22 12:41:48 2021 -0700
+
+    [subset] convert no get/set prune unicode ranges to enum.
+
+ src/hb-subset-input.cc | 45 ++++++---------------------------------------
+ src/hb-subset.h        | 26 +++-----------------------
+ 2 files changed, 9 insertions(+), 62 deletions(-)
+
+commit 0a44feaedaf211a47d93765014106495d161af3f
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jul 22 12:18:48 2021 -0700
+
+    [fvar] Make find_axis_index() return a range, not individual value
+
+ src/hb-ot-var-fvar-table.hh | 24 ++++++++++++++++++++----
+ 1 file changed, 20 insertions(+), 4 deletions(-)
+
+commit 1b6c1aa684df072a4212f9d350c78d9592f93413
+Author: Garret Rieger <grieger at google.com>
+Date:   Mon Jun 28 12:57:39 2021 -0700
+
+    [subset] add hb-subset api to documentation generator.
+    
+    Standardize subset_input parameter to be input.
+
+ docs/harfbuzz-docs.xml     |  8 ++++-
+ docs/harfbuzz-sections.txt | 22 ++++++++++++
+ src/hb-subset-input.cc     | 84 +++++++++++++++++++++++-----------------------
+ src/hb-subset-plan.cc      |  3 ++
+ src/hb-subset.h            | 22 ++++++------
+ 5 files changed, 85 insertions(+), 54 deletions(-)
+
+commit 8ce968341285be9dd5bf10a6bd5cf316995248cd
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 23 13:55:11 2021 -0700
+
+    [subset] add documentation for all hb-subset.h methods.
+
+ src/hb-subset-input.cc | 71 +++++++++++++++++++++++++++++++++++++++++++++++---
+ src/hb-subset.h        | 59 ++++++++++++++++++++++-------------------
+ 2 files changed, 100 insertions(+), 30 deletions(-)
+
+commit 9ab751ac9ff139a7a1c286674f5560af386a7d23
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 23 13:38:47 2021 -0700
+
+    [subset] Remove hb_subset(). Leaving just hb_subset_or_fail().
+
+ src/hb-subset.cc                   | 15 ---------------
+ src/hb-subset.h                    | 22 +++++++++++-----------
+ test/api/hb-subset-test.h          |  2 +-
+ test/api/test-subset-drop-tables.c |  3 ++-
+ test/api/test-subset-glyf.c        |  7 +++----
+ test/api/test-subset-hdmx.c        |  5 ++---
+ test/api/test-subset-hmtx.c        |  5 ++---
+ test/api/test-subset.c             | 12 +++++-------
+ test/fuzzing/hb-subset-fuzzer.cc   |  3 ++-
+ 9 files changed, 28 insertions(+), 46 deletions(-)
+
+commit e5c887fc0fc5263c4c84b32c327f1334b3b0dffc
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 23 13:19:25 2021 -0700
+
+    [subset] add documentation for subset input flag enums.
+
+ src/hb-subset.h | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+commit 372722ceee3bb4d30df9edd78c5899dbd6bbd66c
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 23 13:10:03 2021 -0700
+
+    [subset] move notdef_outline to the subset input property enum.
+
+ src/hb-subset-input.cc | 6 +++++-
+ src/hb-subset.h        | 1 +
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+commit a6c6cda48608e988a7debc3c18597186e3b4e2ee
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 9 17:46:47 2021 -0700
+
+    [subset] Add no subset tables and passthrough unrecognized tables to the subset api.
+    
+    Matches fontTools options.
+
+ src/hb-subset-input.cc | 29 ++++++++++++++++++++++++++++-
+ src/hb-subset-input.hh |  3 +++
+ src/hb-subset-plan.cc  |  2 ++
+ src/hb-subset-plan.hh  |  4 ++++
+ src/hb-subset.cc       | 22 ++++++++++++++++++----
+ src/hb-subset.h        | 15 +++++++++------
+ 6 files changed, 64 insertions(+), 11 deletions(-)
+
+commit 668f2bd93e3ea72e43e57ce10981d300f39a1967
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 9 16:33:50 2021 -0700
+
+    [subset] Add hb_subset_or_fail () to public subset api.
+
+ src/hb-subset.cc  | 22 ++++++++++++++++++++--
+ src/hb-subset.h   |  3 +++
+ util/hb-subset.cc | 10 ++++++----
+ 3 files changed, 29 insertions(+), 6 deletions(-)
+
+commit aba2e13141c133091197adfcb1579de0a965a59d
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 9 16:23:35 2021 -0700
+
+    [subset] Remove hb_subset_input_get/set_overlaps_flag ().
+
+ src/hb-subset.h             | 1 -
+ test/api/test-subset-glyf.c | 2 +-
+ 2 files changed, 1 insertion(+), 2 deletions(-)
+
+commit 7d82191f61f79aba910d37aff74d45f4ca0d48e9
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 9 16:20:55 2021 -0700
+
+    [subset] Remove hb_subset_input_get/set_name_legacy ().
+
+ src/hb-subset-input.cc    | 13 -------------
+ src/hb-subset.h           |  6 ------
+ test/api/hb-subset-test.h |  2 +-
+ 3 files changed, 1 insertion(+), 20 deletions(-)
+
+commit 942636ae1300e56dfe599b5f961719f044bdf828
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 9 16:18:39 2021 -0700
+
+    [subset] Remove hb_subset_input_get/set_retain_gids.
+
+ src/hb-subset-input.cc           | 24 ------------------------
+ src/hb-subset.h                  |  7 -------
+ test/api/test-subset-cff1.c      |  4 ++--
+ test/api/test-subset-cff2.c      |  2 +-
+ test/api/test-subset-glyf.c      |  4 ++--
+ test/api/test-subset-gvar.c      |  2 +-
+ test/api/test-subset-hvar.c      |  4 ++--
+ test/api/test-subset-vvar.c      |  2 +-
+ test/fuzzing/hb-subset-fuzzer.cc |  2 +-
+ 9 files changed, 10 insertions(+), 41 deletions(-)
+
+commit 77b4a1cd9634aafb6353b7d5e451d1f5a06e929b
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 9 14:11:17 2021 -0700
+
+    [subset] Remove hb_subset_input_get/set_desubroutinize.
+
+ src/hb-subset-input.cc      | 13 -------------
+ src/hb-subset.h             |  6 ------
+ test/api/test-subset-cff1.c |  8 ++++----
+ test/api/test-subset-cff2.c |  4 ++--
+ 4 files changed, 6 insertions(+), 25 deletions(-)
+
+commit 8bf5d4d4f787600e5e290bb8d59ee13f3a0d2515
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 9 14:05:17 2021 -0700
+
+    [subset] Remove hb_subset_input_get/set_drop_hints.
+
+ src/hb-subset-input.cc           | 13 -------------
+ src/hb-subset-plan.cc            |  2 +-
+ src/hb-subset.h                  |  6 +-----
+ test/api/test-subset-cff1.c      | 10 +++++-----
+ test/api/test-subset-cff2.c      |  4 ++--
+ test/api/test-subset-glyf.c      |  6 +++---
+ test/fuzzing/hb-subset-fuzzer.cc |  2 +-
+ 7 files changed, 13 insertions(+), 30 deletions(-)
+
+commit 9fb3a2563333a0af1b67b2519f50cbc8278a8244
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 9 13:46:35 2021 -0700
+
+    [subset] Use hb_set_copy in subset input.
+
+ src/hb-subset-plan.cc | 65 +++++++++++++++++++++++----------------------------
+ 1 file changed, 29 insertions(+), 36 deletions(-)
+
+commit 38de3491a08633175d7e40d9acabd48d813f755a
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 9 12:54:14 2021 -0700
+
+    [subset] add implementation for get/set flag on subset input.
+
+ src/hb-subset-input.cc | 61 +++++++++++++++++++++++++++++++++++++++-----------
+ src/hb-subset.h        | 35 ++++++++++++++++-------------
+ 2 files changed, 67 insertions(+), 29 deletions(-)
+
+commit 83727837ef8818eec7c7c840117e7752c4bb487e
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 9 11:09:14 2021 -0700
+
+    [subset] add proposed enum property get/set method.
+
+ src/hb-subset-input.cc | 15 +++++++++++++++
+ src/hb-subset.h        | 18 ++++++++++++++++++
+ 2 files changed, 33 insertions(+)
+
+commit b38e49dcfa8c8cf11b4586ce93784ce7523b5f48
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 9 10:57:58 2021 -0700
+
+    [subset] add get/set user data methods to subset input.
+
+ src/hb-subset-input.cc | 42 ++++++++++++++++++++++++++++++++++++++++++
+ src/hb-subset.h        | 10 ++++++++++
+ 2 files changed, 52 insertions(+)
+
+commit edb57a8d9af6513c8d4ed5799bd208e4b9d68927
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 9 10:42:48 2021 -0700
+
+    Make subset input const in the subsetting operation. Don't modify the subset input's sets.
+
+ src/hb-subset-plan.cc | 19 +++++++++++++------
+ src/hb-subset-plan.hh |  2 +-
+ src/hb-subset.cc      |  2 +-
+ src/hb-subset.h       |  2 +-
+ 4 files changed, 16 insertions(+), 9 deletions(-)
+
+commit 233c29b3024469fed9ea68018e9a072a036884af
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jul 22 12:00:24 2021 -0700
+
+    [font] Call fvar.find_axis_index instead of find_axis_info in set_variations()
+
+ src/hb-font.cc | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+commit 89018068cd4e247d556d42a501a7ffa8e6c9ef52
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jul 22 11:59:23 2021 -0700
+
+    [fvar] Centralize axis finding logic
+    
+    Part of fixing https://github.com/harfbuzz/harfbuzz/issues/1673
+
+ src/hb-ot-var-fvar-table.hh | 13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+commit 0b2280af909cb57570a28602922c7d5787ae42c7
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jul 22 11:53:32 2021 -0700
+
+    [font] Call fvar table directly, instead of calling public get_axis_info
+    
+    To lighten it up in next commit.
+
+ src/hb-font.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b86a45ca55d0ce230965f9db507939f55e5145dd
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jul 22 11:46:44 2021 -0700
+
+    [fvar] Add TODO
+    
+    Fixing https://github.com/harfbuzz/harfbuzz/issues/1673
+
+ src/hb-ot-var-fvar-table.hh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit ba6db26b65c6ce00755def84691e117249b857ff
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jul 22 11:37:39 2021 -0700
+
+    Tolerate unsorted OT table entries for small number of entries
+    
+    See comment.
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/3065
+
+ src/hb-open-file.hh | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+commit 03cd9c5cbab9c70c091d4bc5d634fd67469f0658
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jul 22 11:27:33 2021 -0700
+
+    Align lfind() API to match bfind()
+
+ src/hb-array.hh            | 43 +++++++++++++++++++++++++++++++------------
+ src/hb-open-file.hh        |  2 +-
+ src/hb-open-type.hh        | 16 ++++++++++------
+ src/hb-ot-layout-common.hh |  4 ++--
+ src/hb-set.hh              |  6 +++---
+ src/hb-vector.hh           |  2 +-
+ 6 files changed, 48 insertions(+), 25 deletions(-)
+
+commit f54f5c1b16b920464557ff29049b07668b12dad7
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jul 22 11:09:02 2021 -0700
+
+    Fix debug printer of bool
+
+ src/hb-debug.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6269866bddd789be354d189ce31ad444b479a772
+Author: Garret Rieger <grieger at google.com>
+Date:   Fri Jul 16 14:06:55 2021 -0700
+
+    [subset] Keep bimap consistent if only one of the internal maps is in error.
+
+ src/hb-bimap.hh            | 5 +++++
+ src/hb-ot-layout-common.hh | 3 ++-
+ 2 files changed, 7 insertions(+), 1 deletion(-)
+
+commit 48edbef96f41a1ace04232af72bb2d55003614d9
+Author: Garret Rieger <grieger at google.com>
+Date:   Tue Jun 29 13:14:26 2021 -0700
+
+    [subset] bail if region_map is in error.
+    
+    Fixes fuzzer case https://oss-fuzz.com/testcase-detail/5499162606043136.
+
+ src/hb-ot-layout-common.hh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 79e8b306090ebadafa0fd53242ffcfbc74c94ab6
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Jul 16 15:06:10 2021 -0600
+
+    [ot-shape] Fix application of kern table if GPOS kern is missing
+    
+    Was broken sometime after we implemented kerx and tweaking it.
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/3043
+
+ src/hb-ot-shape.cc                                       |   9 ++++++---
+ src/hb-ot-shape.hh                                       |   1 +
+ test/shaping/data/in-house/Makefile.sources              |   1 +
+ .../fonts/b121d4306b2e3add5abbaad21d95fcf04aacbd64.ttf   | Bin 0 -> 1308 bytes
+ test/shaping/data/in-house/meson.build                   |   1 +
+ test/shaping/data/in-house/tests/tt-kern-gpos.tests      |   1 +
+ 6 files changed, 10 insertions(+), 3 deletions(-)
+
+commit 1060b04938d6d744b4441414f3061613047cff92
+Merge: deee24fbe 9aa0ecef3
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jul 14 17:50:46 2021 -0700
+
+    Merge pull request #3060 from googlefonts/unicode_collect
+    
+    [subset] de-duplicate the logic that finds unicodes corresponding to …
+
+commit 9aa0ecef3fd2070e37a645c3455471407b363fbe
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jul 14 17:27:14 2021 -0700
+
+    [subset] de-duplicate the logic that finds unicodes corresponding to requested glyphs.
+    
+    Move the logic into subset planning and then re-use the results in cmap and OS2 subsetting. Removes depedency on cmap from os2.
+
+ src/hb-ot-cmap-table.hh | 41 ++++++----------------------------
+ src/hb-ot-os2-table.hh  | 23 ++------------------
+ src/hb-subset-plan.cc   | 58 ++++++++++++++++++++++++++++++++++---------------
+ 3 files changed, 50 insertions(+), 72 deletions(-)
+
+commit deee24fbef7a67989ed7f60d1f76538f926d22a7
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jul 14 13:46:36 2021 -0700
+
+    [subset] Add missing FontName op code in top dict parsing.
+    
+    Fix for #3058
+
+ src/hb-ot-cff1-table.hh                                |   1 +
+ test/subset/data/Makefile.am                           |   1 +
+ test/subset/data/Makefile.sources                      |   1 +
+ ...05,1039,1005,100A,103A,1038,1010,103D,1031,104A.otf | Bin 0 -> 7724 bytes
+ .../NotoSerifMyanmar-Regular.notdef-outline.1092.otf   | Bin 0 -> 1380 bytes
+ test/subset/data/fonts/NotoSerifMyanmar-Regular.otf    | Bin 0 -> 137544 bytes
+ test/subset/data/tests/cff.notoserifmyanmar.tests      |   9 +++++++++
+ test/subset/meson.build                                |   1 +
+ 8 files changed, 13 insertions(+)
+
+commit 9985ca64919b42b28010a741dc79b3cd0db4714d
+Merge: f51384d37 2c7ef0db0
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Jul 13 13:42:09 2021 -0700
+
+    Merge pull request #3057 from harfbuzz/ci-coverage-macos
+    
+    [ci] Add macOS GitHub workflow
+
+commit 2c7ef0db0b1b0815fa32d5d21b2c53d3b753aab6
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Tue Jul 13 13:23:53 2021 +0200
+
+    [ci] Generate only XML coverage data
+    
+    That is the one we are uploading, and HTML coverage seems broken on
+    macOS.
+
+ .github/workflows/linux-ci.yml | 2 +-
+ .github/workflows/macos-ci.yml | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit f51384d375210aea7d6e3bba82d776c812024950
+Merge: 1cb0ca1f2 95b04f740
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jul 12 16:51:43 2021 -0700
+
+    Merge pull request #3027 from harfbuzz/buffer-sync
+    
+    Improving buffer synchronization
+
+commit 95b04f7409e5af6dec97feb4ed18ba0bfae2cd88
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jul 12 17:35:45 2021 -0600
+
+    [buffer] Remove unnecessary have_separate_output()
+
+ src/hb-buffer.hh    | 5 +----
+ src/hb-ot-layout.cc | 2 --
+ 2 files changed, 1 insertion(+), 6 deletions(-)
+
+commit 3e266e5f64b6d078d64fe0f3783f774d7e29472d
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jul 12 17:30:26 2021 -0600
+
+    [buffer] Update comments
+
+ src/hb-buffer.cc | 9 +++++----
+ src/hb-buffer.hh | 2 +-
+ 2 files changed, 6 insertions(+), 5 deletions(-)
+
+commit 3807061d634b60bd6235d6e1d8c47a034377f924
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jul 12 17:02:03 2021 -0600
+
+    [ot-layout] Don't remove_output() before reverse substitution
+    
+    No need anymore, because of new swap_buffers() semantics.
+    
+    Just assert instead.
+
+ src/hb-buffer.cc    | 10 ----------
+ src/hb-buffer.hh    |  1 -
+ src/hb-ot-layout.cc |  4 +---
+ 3 files changed, 1 insertion(+), 14 deletions(-)
+
+commit 10a9960f0af9d6fb93ff3d234b2a989f9bc00b21
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jul 12 17:09:03 2021 -0600
+
+    [buffer] Restructure swap_buffers()
+    
+    Is more of a "commit" operation now. Will rename when ready.
+
+ src/hb-buffer.cc | 20 +++++++-------------
+ 1 file changed, 7 insertions(+), 13 deletions(-)
+
+commit f6c9fcfd3e07dffe246fb727fce95429d028395a
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Tue Jul 13 01:12:43 2021 +0200
+
+    [ci] Add macOS GitHub workflow
+    
+    To collect codecov coverage on macOS as well (hopefully it will run the
+    macOS-specific tests).
+
+ .github/workflows/macos-ci.yml | 27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+commit d56afb750a1cde046158f13bb7bc6abbd8f1cb1b
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Tue Jul 13 00:56:54 2021 +0200
+
+    [tests] Ignore more symbols
+    
+    These seem to be exported when building with code coverage on macOS.
+
+ src/check-symbols.py | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+commit a7f4c985a8080797482c971a7b6275636fe5be62
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jul 12 17:00:46 2021 -0600
+
+    [ot-layout] Always swap_buffers() even if no substitutions happened
+
+ src/hb-ot-layout.cc | 14 +++++---------
+ 1 file changed, 5 insertions(+), 9 deletions(-)
+
+commit 62b441e6ff798f1d551d290a2a4970482254dbe2
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jul 12 16:59:34 2021 -0600
+
+    [layout] Use Proxy::inplace instead of table index check
+    
+    Equivalent.
+
+ src/hb-ot-layout.cc | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 431f164003d1d92b657b3facf984c8bbe342418b
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jul 12 16:57:25 2021 -0600
+
+    [layout] Don't call clear_output() before pause-func
+
+ src/hb-ot-layout.cc | 3 ---
+ 1 file changed, 3 deletions(-)
+
+commit a623446a34a4a388f86afc97ed9c5a74792d5420
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jul 12 16:55:54 2021 -0600
+
+    [shape] Remove stray clear_output() call in hb_shape()
+
+ src/hb-ot-shape.cc | 2 --
+ 1 file changed, 2 deletions(-)
+
+commit 05c17787c4fc5283925920b546952ccca0ba4a00
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jul 12 16:55:08 2021 -0600
+
+    [buffer] Rewind cursor in clear_output()
+
+ src/hb-buffer.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 1cb0ca1f2cc24092e2977ac7b12274c399d6814a
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jul 12 16:52:31 2021 -0600
+
+    Whitespace
+
+ src/hb-ot-layout.cc | 3 ++-
+ src/hb-ot-shape.cc  | 4 +++-
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+commit 5f5a8b4dd7ddba13cd2459c626c3eb2f3c19d9d5
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Mon Jul 12 22:24:14 2021 +0200
+
+    [ci] Use the latest stable XCode image
+
+ .circleci/config.yml | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 13187d29efdf9d6ce19d649a6ce8349e2a9d954e
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Mon Jul 12 22:21:47 2021 +0200
+
+    [ci] Drop macOS job using deprecated XCode image
+
+ .circleci/config.yml | 14 --------------
+ 1 file changed, 14 deletions(-)
+
+commit 69310f14a6b79399041a1d9d70c246722b58829f
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Jul 9 17:24:29 2021 -0600
+
+    [buffer] Change nil buffer have_output to false
+    
+    Seems like a historical artefact that it was true.
+
+ src/hb-buffer.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 40884af17e9fd0149051b5a7ea452226ba806283
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Jul 9 17:17:05 2021 -0600
+
+    [ot-layout] Narrow down random feature logic vs safe-to-break
+
+ src/hb-ot-layout-gsub-table.hh | 5 +++++
+ src/hb-ot-layout.cc            | 2 --
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+commit 33b579d0ad06c34aec9780df90ae99eda697b7a1
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Jul 9 17:12:09 2021 -0600
+
+    [ot-layout] Clear random flag for subsequent flags
+    
+    Ouch!
+
+ src/hb-ot-layout.cc | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+commit 29c9833e579cddf9f97c4eca956ccca98c1683c4
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Jul 9 11:58:36 2021 -0600
+
+    Remove Offset::serialize()
+    
+    Finishing https://github.com/harfbuzz/harfbuzz/pull/2355
+
+ src/hb-open-file.hh | 20 +++++++++++++-------
+ src/hb-open-type.hh |  9 ---------
+ 2 files changed, 13 insertions(+), 16 deletions(-)
+
+commit 63e15eac4f443fa53565d1e4fb9611cdd7814f28
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Thu Jul 8 22:46:33 2021 +0200
+
+    2.8.2
+
+ NEWS                   | 16 ++++++++++++++++
+ configure.ac           |  2 +-
+ docs/harfbuzz-docs.xml |  1 +
+ meson.build            |  2 +-
+ src/hb-blob.cc         |  4 ++--
+ src/hb-set.cc          |  2 +-
+ src/hb-version.h       |  4 ++--
+ 7 files changed, 24 insertions(+), 7 deletions(-)
+
+commit eee36bbea3c96ab3c84a2b928cb254d9e1860069
+Author: Caleb Maclennan <caleb at alerque.com>
+Date:   Thu Jul 8 21:19:57 2021 +0300
+
+    [releasing] Format notes as Markdown checklist for pasting in GH PR/Issue
+
+ RELEASING.md | 49 ++++++++++++++++++++++++-------------------------
+ 1 file changed, 24 insertions(+), 25 deletions(-)
+
+commit eda5dcdb3eb1b85d914602c27a480ba3a16e43fb
+Author: Caleb Maclennan <caleb at alerque.com>
+Date:   Thu Jul 8 21:10:35 2021 +0300
+
+    [releasing] Drop obsolete release process items
+
+ RELEASING.md | 8 +-------
+ 1 file changed, 1 insertion(+), 7 deletions(-)
+
+commit 2337f0d047f2561c13b29b70ad783bbf0d286654
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jul 8 10:58:50 2021 -0600
+
+    Internally use hb_malloc/.../hb_free instead of malloc/.../free
+    
+    Redefining those stock names as macros was conflicting with gcc 10
+    headers.
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/3044
+
+ src/hb-array.hh                            |  4 +--
+ src/hb-blob.cc                             | 32 ++++++++---------
+ src/hb-buffer.cc                           | 10 +++---
+ src/hb-common.cc                           | 12 +++----
+ src/hb-directwrite.cc                      |  4 +--
+ src/hb-draw.cc                             |  2 +-
+ src/hb-face.cc                             | 18 +++++-----
+ src/hb-font.cc                             | 58 +++++++++++++++---------------
+ src/hb-ft.cc                               | 24 ++++++-------
+ src/hb-gdi.cc                              |  6 ++--
+ src/hb-gobject-structs.cc                  |  4 +--
+ src/hb-graphite2.cc                        | 10 +++---
+ src/hb-machinery.hh                        |  6 ++--
+ src/hb-map.cc                              |  2 +-
+ src/hb-map.hh                              |  6 ++--
+ src/hb-object.hh                           |  8 ++---
+ src/hb-ot-color-cbdt-table.hh              |  2 +-
+ src/hb-ot-glyf-table.hh                    |  4 +--
+ src/hb-ot-layout-gsubgpos.hh               |  4 +--
+ src/hb-ot-name-table.hh                    |  4 +--
+ src/hb-ot-post-table.hh                    |  6 ++--
+ src/hb-ot-shape-complex-arabic-fallback.hh |  8 ++---
+ src/hb-ot-shape-complex-arabic.cc          |  4 +--
+ src/hb-ot-shape-complex-hangul.cc          |  4 +--
+ src/hb-ot-shape-complex-indic.cc           |  4 +--
+ src/hb-ot-shape-complex-khmer.cc           |  4 +--
+ src/hb-ot-shape-complex-use.cc             |  6 ++--
+ src/hb-ot-tag.cc                           |  4 +--
+ src/hb-pool.hh                             |  4 +--
+ src/hb-repacker.hh                         |  4 +--
+ src/hb-serialize.hh                        |  6 ++--
+ src/hb-set.cc                              |  2 +-
+ src/hb-shape-plan.cc                       | 12 +++----
+ src/hb-shape-plan.hh                       |  2 +-
+ src/hb-shape.cc                            |  4 +--
+ src/hb-shaper.cc                           |  4 +--
+ src/hb-subset-input.cc                     |  2 +-
+ src/hb-subset-plan.cc                      | 10 +++---
+ src/hb-unicode.cc                          |  2 +-
+ src/hb-uniscribe.cc                        | 24 ++++++-------
+ src/hb-vector.hh                           |  4 +--
+ src/hb.hh                                  | 13 ++++---
+ 42 files changed, 179 insertions(+), 174 deletions(-)
+
+commit bb48bf52a4645abda6fe98cc5ee33beab69931a5
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jul 8 10:53:45 2021 -0600
+
+    Rename misc uses of "free"
+    
+    In preparation for fixing https://github.com/harfbuzz/harfbuzz/issues/3044
+
+ src/hb-array.hh                |  4 ++--
+ src/hb-cache.hh                |  2 +-
+ src/hb-common.cc               | 10 ++++------
+ src/hb-iter.hh                 |  2 +-
+ src/hb-ot-face-table-list.hh   |  2 +-
+ src/hb-ot-glyf-table.hh        |  2 +-
+ src/hb-ot-layout-gpos-table.hh |  2 +-
+ src/hb-ot-layout.cc            |  3 ++-
+ src/hb-pool.hh                 |  4 ++--
+ src/hb-serialize.hh            |  2 +-
+ src/hb-set.hh                  |  2 +-
+ src/hb-shape-plan.cc           |  4 ++--
+ src/hb-shape-plan.hh           |  2 +-
+ src/test-repacker.cc           |  8 ++++----
+ 14 files changed, 24 insertions(+), 25 deletions(-)
+
+commit 7416faceeb7a875ba7316cee124edee2d59ea8d0
+Author: Qunxin Liu <qxliu at google.com>
+Date:   Wed Jul 7 11:27:49 2021 -0700
+
+    [subset] fuzzer fix: https://oss-fuzz.com/testcase-detail/5715464591376384
+
+ src/hb-ot-color-cpal-table.hh                      |  49 +++++++--------------
+ ...ase-minimized-hb-subset-fuzzer-5715464591376384 | Bin 0 -> 2116 bytes
+ 2 files changed, 15 insertions(+), 34 deletions(-)
+
+commit 895acdf7c7ac128cc1540fa251f772323f0042e8
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Jun 23 14:53:28 2021 +0200
+
+    [ci] Don’t build Cairo subproject with FontConfig on win32 cross-build
+    
+    We don’t need it and it breaks the build because FontConfig renamed its
+    master branch and the released version of Cairo wants to build
+    FontConfig from master branch.
+
+ .ci/build-win32.sh | 16 ++++++++++++++--
+ 1 file changed, 14 insertions(+), 2 deletions(-)
+
+commit 0da9158f620077ec46dcdfa4c1556253b23337eb
+Author: Garret Rieger <grieger at google.com>
+Date:   Tue Jun 29 14:23:37 2021 -0700
+
+    [subset] Remove OffsetTo::serialize().
+    
+    Convert remaining uses of it to serialize_serialize() which correctly uses the object packer.
+
+ src/hb-open-type.hh                                   |   4 ----
+ src/hb-ot-layout-common.hh                            |   8 ++++----
+ src/hb-ot-var-hvar-table.hh                           |  14 ++++++++------
+ test/api/fonts/AdobeVFPrototype.abc.otf               | Bin 6900 -> 5164 bytes
+ test/api/fonts/AdobeVFPrototype.ac.nohints.otf        | Bin 4212 -> 4384 bytes
+ .../api/fonts/AdobeVFPrototype.ac.nosubrs.nohints.otf | Bin 4092 -> 4268 bytes
+ test/api/fonts/AdobeVFPrototype.ac.nosubrs.otf        | Bin 6284 -> 4464 bytes
+ test/api/fonts/AdobeVFPrototype.ac.otf                | Bin 6408 -> 4584 bytes
+ test/api/fonts/AdobeVFPrototype.ac.retaingids.otf     | Bin 6412 -> 4584 bytes
+ .../fonts/SourceSansVariable-Roman-modHVAR.abc.ttf    | Bin 3260 -> 3124 bytes
+ .../api/fonts/SourceSansVariable-Roman-modHVAR.ac.ttf | Bin 3032 -> 2892 bytes
+ test/api/fonts/SourceSansVariable-Roman.abc.ttf       | Bin 3240 -> 3196 bytes
+ .../fonts/SourceSansVariable-Roman.ac.retaingids.ttf  | Bin 2616 -> 2976 bytes
+ test/api/fonts/SourceSansVariable-Roman.ac.ttf        | Bin 3028 -> 2964 bytes
+ test/api/fonts/SourceSerifVariable-Roman-VVAR.abc.ttf | Bin 5632 -> 3588 bytes
+ .../SourceSerifVariable-Roman-VVAR.ac.retaingids.ttf  | Bin 5288 -> 3244 bytes
+ test/api/fonts/SourceSerifVariable-Roman-VVAR.ac.ttf  | Bin 3224 -> 3224 bytes
+ 17 files changed, 12 insertions(+), 14 deletions(-)
+
+commit 0969614865a8664aaa13759e2d60caab0bd7df3a
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sat Jun 26 08:52:53 2021 -0600
+
+    [ot-shape] Rewrite loop without foreach_grapheme()
+    
+    We were not using the graphemes, and that's costlier than just for().
+
+ src/hb-ot-shape.cc | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+commit eee7b459ee18cd722e9ba0d030c983e66b6e7777
+Author: Qunxin Liu <qxliu at google.com>
+Date:   Thu Jun 24 10:17:46 2021 -0700
+
+    [subset] add option --no-prune-unicode-ranges
+
+ src/hb-ot-os2-table.hh                                 |   1 +
+ src/hb-subset-input.cc                                 |  14 ++++++++++++++
+ src/hb-subset-input.hh                                 |   1 +
+ src/hb-subset-plan.cc                                  |   1 +
+ src/hb-subset-plan.hh                                  |   1 +
+ src/hb-subset.h                                        |   7 +++++++
+ ...aa-Regular-new.no-prune-unicode-ranges.61,62,63.ttf | Bin 0 -> 7060 bytes
+ ...ortaa-Regular-new.no-prune-unicode-ranges.61,63.ttf | Bin 0 -> 6692 bytes
+ ...omfortaa-Regular-new.no-prune-unicode-ranges.61.ttf | Bin 0 -> 6328 bytes
+ ...omfortaa-Regular-new.no-prune-unicode-ranges.62.ttf | Bin 0 -> 6200 bytes
+ ...omfortaa-Regular-new.no-prune-unicode-ranges.63.ttf | Bin 0 -> 6256 bytes
+ ...ew.no-prune-unicode-ranges.retain-all-codepoint.ttf | Bin 0 -> 220928 bytes
+ ...Regular-subset.no-prune-unicode-ranges.61,62,63.ttf | Bin 0 -> 4128 bytes
+ ...jo-Regular-subset.no-prune-unicode-ranges.61,63.ttf | Bin 0 -> 3580 bytes
+ ...ongjo-Regular-subset.no-prune-unicode-ranges.61.ttf | Bin 0 -> 3156 bytes
+ ...ongjo-Regular-subset.no-prune-unicode-ranges.62.ttf | Bin 0 -> 3180 bytes
+ ...ongjo-Regular-subset.no-prune-unicode-ranges.63.ttf | Bin 0 -> 3048 bytes
+ ...et.no-prune-unicode-ranges.retain-all-codepoint.ttf | Bin 0 -> 9524 bytes
+ ...to-Regular.abc.no-prune-unicode-ranges.61,62,63.ttf | Bin 0 -> 2452 bytes
+ ...oboto-Regular.abc.no-prune-unicode-ranges.61,63.ttf | Bin 0 -> 2260 bytes
+ .../Roboto-Regular.abc.no-prune-unicode-ranges.61.ttf  | Bin 0 -> 2048 bytes
+ .../Roboto-Regular.abc.no-prune-unicode-ranges.62.ttf  | Bin 0 -> 1916 bytes
+ .../Roboto-Regular.abc.no-prune-unicode-ranges.63.ttf  | Bin 0 -> 1972 bytes
+ ...bc.no-prune-unicode-ranges.retain-all-codepoint.ttf | Bin 0 -> 2452 bytes
+ test/subset/data/profiles/no-prune-unicode-ranges.txt  |   1 +
+ test/subset/data/tests/basics.tests                    |   1 +
+ util/options-subset.cc                                 |   1 +
+ 27 files changed, 28 insertions(+)
+
+commit c3be28ea26cd23011440db7e6afaf4412e5d705d
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Jun 23 17:39:23 2021 +0200
+
+    [ot-shape] Numeric runs native direction is LTR
+    
+    See inline comments. Slightly modified version of the code from Jonathan
+    Kew on the linked issue.
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/501
+
+ src/hb-ot-shape.cc                                 |  29 +++++++++++++++++++++
+ src/hb-unicode.hh                                  |   7 +++++
+ test/shaping/data/in-house/Makefile.sources        |   1 +
+ .../3b791518a9ba89675df02f1eefbc9026a50648a6.ttf   | Bin 0 -> 3144 bytes
+ .../a6b17da98b9f1565ba428719777bbf94a66403c1.ttf   | Bin 0 -> 3676 bytes
+ .../b082211be29a3e2cf91f0fd43497e40b2a27b344.ttf   | Bin 0 -> 4800 bytes
+ .../e5ff44940364c2247abed50bdda30d2ef5aedfe4.ttf   | Bin 0 -> 2548 bytes
+ test/shaping/data/in-house/meson.build             |   1 +
+ test/shaping/data/in-house/tests/digits.tests      |   5 ++++
+ 9 files changed, 43 insertions(+)
+
+commit 71a62966202012300a2cf2c8fbaae32354d136ba
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed Jun 23 18:16:56 2021 +0200
+
+    [tests] Make record-test.sh work with .otf files
+    
+    It hard-codes the file extension, but fonttools sunset will use .otf for
+    CFF fonts, so hard-code the output file from subset as well.
+
+ test/shaping/record-test.sh | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+commit cc9bb294919e846ef8a0731b5e9f304f95ef3bb8
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sun Jun 20 18:47:03 2021 -0600
+
+    [blob] Fix-up recent mistake in hb_blob_create() destroy(user_data)
+    
+    https://github.com/harfbuzz/harfbuzz/pull/3026#discussion_r653437491
+
+ src/hb-blob.cc | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit bc06af977fc89b8b25bfd7180d010b915811c0d8
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 16 15:49:14 2021 -0700
+
+    [subset] speed up feature collection when tags are specified.
+    
+    Precompute a feature index filter to avoid needing to iterate the feature tag list for each encountered feature index. For this particular fuzzer case speeds up feature collection from 50s to 2s.
+
+ src/hb-ot-layout.cc                                |  98 +++++++++++++--------
+ ...ase-minimized-hb-subset-fuzzer-5241922561114112 | Bin 0 -> 638237 bytes
+ 2 files changed, 63 insertions(+), 35 deletions(-)
+
+commit 14f220b76159a2f2d926029e32b3fe975d1dc525
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Sun Jun 20 18:59:13 2021 +0200
+
+    [directwrite] Support feature ranges
+    
+    Code copied from hb-uniscribe.cc and adapted to use DirectWrite types.
+    May be there is a better way to de-duplicate the code, though I'm not
+    exactly sure how or if it is worth it.
+
+ src/hb-directwrite.cc | 198 +++++++++++++++++++++++++++++++++++++++++++++-----
+ 1 file changed, 180 insertions(+), 18 deletions(-)
+
+commit d2397d91f30c7eda0a446cefd623d78e16cf7268
+Author: Garret Rieger <grieger at google.com>
+Date:   Fri Jun 18 18:12:19 2021 -0700
+
+    [subset] Add additional colrv1 subsetting tests that has a glyph with components.
+
+ test/subset/data/Makefile.am                            |   1 +
+ test/subset/data/Makefile.sources                       |   1 +
+ .../NotoColrEmojiGlyf-Regular.subset.default.1f35e.ttf  | Bin 0 -> 3004 bytes
+ .../NotoColrEmojiGlyf-Regular.subset.default.1f696.ttf  | Bin 0 -> 3752 bytes
+ ...Glyf-Regular.subset.drop-hints-retain-gids.1f35e.ttf | Bin 0 -> 3516 bytes
+ ...Glyf-Regular.subset.drop-hints-retain-gids.1f696.ttf | Bin 0 -> 5048 bytes
+ ...otoColrEmojiGlyf-Regular.subset.drop-hints.1f35e.ttf | Bin 0 -> 3004 bytes
+ ...otoColrEmojiGlyf-Regular.subset.drop-hints.1f696.ttf | Bin 0 -> 3752 bytes
+ ...toColrEmojiGlyf-Regular.subset.retain-gids.1f35e.ttf | Bin 0 -> 3516 bytes
+ ...toColrEmojiGlyf-Regular.subset.retain-gids.1f696.ttf | Bin 0 -> 5048 bytes
+ .../data/fonts/NotoColrEmojiGlyf-Regular.subset.ttf     | Bin 0 -> 71896 bytes
+ test/subset/data/tests/colrv1.notoemoji.tests           |  12 ++++++++++++
+ test/subset/meson.build                                 |   1 +
+ 13 files changed, 15 insertions(+)
+
+commit 26c80adb61938288b3954b907fe6ddbb430fa468
+Author: Garret Rieger <grieger at google.com>
+Date:   Fri Jun 18 14:14:20 2021 -0700
+
+    [subset] do colrv1 glyph closure before glyf composite closure.
+
+ src/hb-subset-plan.cc | 21 +++++++++++----------
+ 1 file changed, 11 insertions(+), 10 deletions(-)
+
+commit d07f789ae3997ee95923525af56627d4be4a90e4
+Author: Qunxin Liu <qxliu at google.com>
+Date:   Wed Jun 9 15:36:40 2021 -0700
+
+    [subset] support option "--notdef-outline"
+
+ src/hb-ot-glyf-table.hh                            |   5 ++++-
+ src/hb-ot-var-gvar-table.hh                        |   4 ++--
+ src/hb-subset-input.cc                             |  15 +++++++++++++++
+ src/hb-subset-input.hh                             |  14 ++++++++------
+ src/hb-subset-plan.cc                              |   1 +
+ src/hb-subset-plan.hh                              |   1 +
+ src/hb-subset.h                                    |   7 +++++++
+ .../Comfortaa-Regular-new.default.61,62,63.ttf     | Bin 7652 -> 7060 bytes
+ .../basics/Comfortaa-Regular-new.default.61,63.ttf | Bin 7284 -> 6692 bytes
+ .../basics/Comfortaa-Regular-new.default.61.ttf    | Bin 6920 -> 6328 bytes
+ .../basics/Comfortaa-Regular-new.default.62.ttf    | Bin 6796 -> 6200 bytes
+ .../basics/Comfortaa-Regular-new.default.63.ttf    | Bin 6844 -> 6256 bytes
+ ...aa-Regular-new.default.retain-all-codepoint.ttf | Bin 221524 -> 220928 bytes
+ ...Regular-new.drop-hints-retain-gids.61,62,63.ttf | Bin 5104 -> 4608 bytes
+ ...aa-Regular-new.drop-hints-retain-gids.61,63.ttf | Bin 4808 -> 4312 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.61.ttf | Bin 4220 -> 3724 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.62.ttf | Bin 4396 -> 3900 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.63.ttf | Bin 4468 -> 3972 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 190296 -> 189800 bytes
+ .../Comfortaa-Regular-new.drop-hints.61,62,63.ttf  | Bin 3100 -> 2600 bytes
+ .../Comfortaa-Regular-new.drop-hints.61,63.ttf     | Bin 2792 -> 2296 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.61.ttf | Bin 2472 -> 1976 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.62.ttf | Bin 2396 -> 1900 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.63.ttf | Bin 2460 -> 1968 bytes
+ ...Regular-new.drop-hints.retain-all-codepoint.ttf | Bin 190252 -> 189756 bytes
+ .../basics/Comfortaa-Regular-new.gids.61,62,63.ttf | Bin 8580 -> 7988 bytes
+ .../basics/Comfortaa-Regular-new.gids.61,63.ttf    | Bin 8220 -> 7628 bytes
+ .../basics/Comfortaa-Regular-new.gids.61.ttf       | Bin 7848 -> 7256 bytes
+ .../basics/Comfortaa-Regular-new.gids.62.ttf       | Bin 7772 -> 7184 bytes
+ .../basics/Comfortaa-Regular-new.gids.63.ttf       | Bin 7776 -> 7180 bytes
+ ...ortaa-Regular-new.gids.retain-all-codepoint.ttf | Bin 221524 -> 220928 bytes
+ ...gular-new.keep-all-layout-features.61,62,63.ttf | Bin 8100 -> 7504 bytes
+ ...-Regular-new.keep-all-layout-features.61,63.ttf | Bin 7736 -> 7140 bytes
+ ...taa-Regular-new.keep-all-layout-features.61.ttf | Bin 7360 -> 6772 bytes
+ ...taa-Regular-new.keep-all-layout-features.62.ttf | Bin 6796 -> 6200 bytes
+ ...taa-Regular-new.keep-all-layout-features.63.ttf | Bin 6844 -> 6256 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttf | Bin 222212 -> 221620 bytes
+ ...fortaa-Regular-new.layout-features.61,62,63.ttf | Bin 7652 -> 7060 bytes
+ ...Comfortaa-Regular-new.layout-features.61,63.ttf | Bin 7284 -> 6692 bytes
+ .../Comfortaa-Regular-new.layout-features.61.ttf   | Bin 6920 -> 6328 bytes
+ .../Comfortaa-Regular-new.layout-features.62.ttf   | Bin 6796 -> 6200 bytes
+ .../Comfortaa-Regular-new.layout-features.63.ttf   | Bin 6844 -> 6256 bytes
+ ...ar-new.layout-features.retain-all-codepoint.ttf | Bin 219716 -> 219124 bytes
+ .../Comfortaa-Regular-new.name-ids.61,62,63.ttf    | Bin 7392 -> 6800 bytes
+ .../Comfortaa-Regular-new.name-ids.61,63.ttf       | Bin 7024 -> 6432 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.61.ttf   | Bin 6660 -> 6068 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.62.ttf   | Bin 6536 -> 5940 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.63.ttf   | Bin 6584 -> 5996 bytes
+ ...a-Regular-new.name-ids.retain-all-codepoint.ttf | Bin 221264 -> 220668 bytes
+ ...mfortaa-Regular-new.name-languages.61,62,63.ttf | Bin 7652 -> 7060 bytes
+ .../Comfortaa-Regular-new.name-languages.61,63.ttf | Bin 7284 -> 6692 bytes
+ .../Comfortaa-Regular-new.name-languages.61.ttf    | Bin 6920 -> 6328 bytes
+ .../Comfortaa-Regular-new.name-languages.62.ttf    | Bin 6796 -> 6200 bytes
+ .../Comfortaa-Regular-new.name-languages.63.ttf    | Bin 6844 -> 6256 bytes
+ ...lar-new.name-languages.retain-all-codepoint.ttf | Bin 221524 -> 220928 bytes
+ .../Comfortaa-Regular-new.name-legacy.61,62,63.ttf | Bin 7652 -> 7060 bytes
+ .../Comfortaa-Regular-new.name-legacy.61,63.ttf    | Bin 7284 -> 6692 bytes
+ .../Comfortaa-Regular-new.name-legacy.61.ttf       | Bin 6920 -> 6328 bytes
+ .../Comfortaa-Regular-new.name-legacy.62.ttf       | Bin 6796 -> 6200 bytes
+ .../Comfortaa-Regular-new.name-legacy.63.ttf       | Bin 6844 -> 6256 bytes
+ ...egular-new.name-legacy.retain-all-codepoint.ttf | Bin 221524 -> 220928 bytes
+ ...mfortaa-Regular-new.notdef-outline.61,62,63.ttf | Bin 0 -> 7652 bytes
+ .../Comfortaa-Regular-new.notdef-outline.61,63.ttf | Bin 0 -> 7284 bytes
+ .../Comfortaa-Regular-new.notdef-outline.61.ttf    | Bin 0 -> 6920 bytes
+ .../Comfortaa-Regular-new.notdef-outline.62.ttf    | Bin 0 -> 6796 bytes
+ .../Comfortaa-Regular-new.notdef-outline.63.ttf    | Bin 0 -> 6844 bytes
+ ...lar-new.notdef-outline.retain-all-codepoint.ttf | Bin 0 -> 221524 bytes
+ .../Comfortaa-Regular-new.retain-gids.61,62,63.ttf | Bin 9656 -> 9068 bytes
+ .../Comfortaa-Regular-new.retain-gids.61,63.ttf    | Bin 9300 -> 8708 bytes
+ .../Comfortaa-Regular-new.retain-gids.61.ttf       | Bin 8668 -> 8076 bytes
+ .../Comfortaa-Regular-new.retain-gids.62.ttf       | Bin 8796 -> 8200 bytes
+ .../Comfortaa-Regular-new.retain-gids.63.ttf       | Bin 8852 -> 8260 bytes
+ ...egular-new.retain-gids.retain-all-codepoint.ttf | Bin 221568 -> 220972 bytes
+ ...ngjo-Regular-subset.notdef-outline.61,62,63.ttf | Bin 0 -> 4128 bytes
+ ...yeongjo-Regular-subset.notdef-outline.61,63.ttf | Bin 0 -> 3580 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.61.ttf | Bin 0 -> 3156 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.62.ttf | Bin 0 -> 3180 bytes
+ ...umMyeongjo-Regular-subset.notdef-outline.63.ttf | Bin 0 -> 3048 bytes
+ ...-subset.notdef-outline.retain-all-codepoint.ttf | Bin 0 -> 9524 bytes
+ .../Roboto-Regular.abc.notdef-outline.61,62,63.ttf | Bin 0 -> 2452 bytes
+ .../Roboto-Regular.abc.notdef-outline.61,63.ttf    | Bin 0 -> 2260 bytes
+ .../Roboto-Regular.abc.notdef-outline.61.ttf       | Bin 0 -> 2048 bytes
+ .../Roboto-Regular.abc.notdef-outline.62.ttf       | Bin 0 -> 1916 bytes
+ .../Roboto-Regular.abc.notdef-outline.63.ttf       | Bin 0 -> 1972 bytes
+ ...lar.abc.notdef-outline.retain-all-codepoint.ttf | Bin 0 -> 2452 bytes
+ .../cmap/AdobeBlank-Regular.default.61,62.ttf      | Bin 1336 -> 1252 bytes
+ .../cmap/AdobeBlank-Regular.default.61,FEFA.ttf    | Bin 1348 -> 1264 bytes
+ .../cmap/AdobeBlank-Regular.default.FEE6,FECF.ttf  | Bin 1300 -> 1216 bytes
+ .../cmap/AdobeBlank-Regular.default.FEF9,FEFA.ttf  | Bin 1288 -> 1204 bytes
+ .../cmap/AdobeBlank-Regular.default.FEFA.ttf       | Bin 1268 -> 1184 bytes
+ ...eBlank-Regular.drop-hints-retain-gids.61,62.ttf | Bin 1552 -> 1468 bytes
+ ...lank-Regular.drop-hints-retain-gids.61,FEFA.ttf | Bin 8316 -> 8232 bytes
+ ...nk-Regular.drop-hints-retain-gids.FEE6,FECF.ttf | Bin 8188 -> 8104 bytes
+ ...nk-Regular.drop-hints-retain-gids.FEF9,FEFA.ttf | Bin 8256 -> 8172 bytes
+ ...beBlank-Regular.drop-hints-retain-gids.FEFA.ttf | Bin 8240 -> 8156 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.61,62.ttf   | Bin 1164 -> 1080 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.61,FEFA.ttf | Bin 1176 -> 1092 bytes
+ .../AdobeBlank-Regular.drop-hints.FEE6,FECF.ttf    | Bin 1128 -> 1044 bytes
+ .../AdobeBlank-Regular.drop-hints.FEF9,FEFA.ttf    | Bin 1116 -> 1032 bytes
+ .../cmap/AdobeBlank-Regular.drop-hints.FEFA.ttf    | Bin 1096 -> 1012 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.61,62.ttf     | Bin 1084 -> 1000 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.61,FEFA.ttf   | Bin 1096 -> 1012 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEE6,FECF.ttf | Bin 1048 -> 964 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEF9,FEFA.ttf | Bin 1036 -> 952 bytes
+ .../cmap/AdobeBlank-Regular.name-ids.FEFA.ttf      | Bin 1016 -> 932 bytes
+ .../cmap/AdobeBlank-Regular.retain-gids.61,62.ttf  | Bin 1724 -> 1640 bytes
+ .../AdobeBlank-Regular.retain-gids.61,FEFA.ttf     | Bin 8488 -> 8404 bytes
+ .../AdobeBlank-Regular.retain-gids.FEE6,FECF.ttf   | Bin 8360 -> 8276 bytes
+ .../AdobeBlank-Regular.retain-gids.FEF9,FEFA.ttf   | Bin 8428 -> 8344 bytes
+ .../cmap/AdobeBlank-Regular.retain-gids.FEFA.ttf   | Bin 8412 -> 8328 bytes
+ .../Roboto-Regular.default.1FC,21,41,20,62,63.ttf  | Bin 3276 -> 3080 bytes
+ .../full-font/Roboto-Regular.default.61,62,63.ttf  | Bin 2864 -> 2672 bytes
+ .../Roboto-Regular.default.D7,D8,D9,DA,DE.ttf      | Bin 3216 -> 3024 bytes
+ ...oboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf | Bin 1712 -> 1632 bytes
+ .../Roboto-Regular.drop-hints.61,62,63.ttf         | Bin 1496 -> 1412 bytes
+ .../Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf   | Bin 1728 -> 1648 bytes
+ ...ifVariable-Roman.default.1FC,21,41,20,62,63.ttf | Bin 4144 -> 3992 bytes
+ .../SourceSerifVariable-Roman.default.61,62,63.ttf | Bin 3984 -> 3832 bytes
+ ...eSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf | Bin 4548 -> 4396 bytes
+ ...ariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf | Bin 4120 -> 3968 bytes
+ ...urceSerifVariable-Roman.drop-hints.61,62,63.ttf | Bin 3984 -> 3832 bytes
+ ...rifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 4548 -> 4396 bytes
+ .../IndicTestJalandhar-Regular.default.A01.ttf     | Bin 4220 -> 4176 bytes
+ .../IndicTestJalandhar-Regular.default.A05,A06.ttf | Bin 4796 -> 4752 bytes
+ .../IndicTestJalandhar-Regular.default.A07,A1B.ttf | Bin 4768 -> 4724 bytes
+ ...andhar-Regular.default.retain-all-codepoint.ttf | Bin 49288 -> 49244 bytes
+ .../IndicTestJalandhar-Regular.drop-hints.A01.ttf  | Bin 1080 -> 1036 bytes
+ ...dicTestJalandhar-Regular.drop-hints.A05,A06.ttf | Bin 1388 -> 1344 bytes
+ ...dicTestJalandhar-Regular.drop-hints.A07,A1B.ttf | Bin 1388 -> 1344 bytes
+ ...har-Regular.drop-hints.retain-all-codepoint.ttf | Bin 29504 -> 29464 bytes
+ .../IndicTestJalandhar-Regular.keep-gdef.A01.ttf   | Bin 4220 -> 4176 bytes
+ ...ndicTestJalandhar-Regular.keep-gdef.A05,A06.ttf | Bin 4796 -> 4752 bytes
+ ...ndicTestJalandhar-Regular.keep-gdef.A07,A1B.ttf | Bin 4768 -> 4724 bytes
+ ...dhar-Regular.keep-gdef.retain-all-codepoint.ttf | Bin 49288 -> 49244 bytes
+ .../Roboto-Regular.default.1E00,303.ttf            | Bin 2720 -> 2524 bytes
+ .../layout.gdef/Roboto-Regular.default.303.ttf     | Bin 2312 -> 2116 bytes
+ .../Roboto-Regular.default.309,20,30F.ttf          | Bin 2408 -> 2212 bytes
+ .../layout.gdef/Roboto-Regular.default.323.ttf     | Bin 2204 -> 2008 bytes
+ .../Roboto-Regular.default.41,42,43.ttf            | Bin 2764 -> 2572 bytes
+ .../Roboto-Regular.drop-hints.1E00,303.ttf         | Bin 1464 -> 1380 bytes
+ .../layout.gdef/Roboto-Regular.drop-hints.303.ttf  | Bin 1196 -> 1112 bytes
+ .../Roboto-Regular.drop-hints.309,20,30F.ttf       | Bin 1256 -> 1172 bytes
+ .../layout.gdef/Roboto-Regular.drop-hints.323.ttf  | Bin 1136 -> 1056 bytes
+ .../Roboto-Regular.drop-hints.41,42,43.ttf         | Bin 1472 -> 1388 bytes
+ .../Roboto-Regular.keep-gdef-gpos.1E00,303.ttf     | Bin 2720 -> 2524 bytes
+ .../Roboto-Regular.keep-gdef-gpos.303.ttf          | Bin 2312 -> 2116 bytes
+ .../Roboto-Regular.keep-gdef-gpos.309,20,30F.ttf   | Bin 2408 -> 2212 bytes
+ .../Roboto-Regular.keep-gdef-gpos.323.ttf          | Bin 2204 -> 2008 bytes
+ .../Roboto-Regular.keep-gdef-gpos.41,42,43.ttf     | Bin 2764 -> 2572 bytes
+ ...ular.default.627,644,623,62D,644,627,645,2E.ttf | Bin 12724 -> 12684 bytes
+ .../Amiri-Regular.default.627,644,62D,628.ttf      | Bin 10028 -> 9992 bytes
+ .../Amiri-Regular.default.627,644.ttf              | Bin 4208 -> 4168 bytes
+ ...-Regular.default.633,645,627,621,20,644,627.ttf | Bin 9552 -> 9516 bytes
+ .../Amiri-Regular.default.63A,64A,631.ttf          | Bin 7360 -> 7324 bytes
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttf | Bin 48052 -> 48012 bytes
+ .../Amiri-Regular.retain-gids.627,644,62D,628.ttf  | Bin 42676 -> 42640 bytes
+ .../Amiri-Regular.retain-gids.627,644.ttf          | Bin 36736 -> 36696 bytes
+ ...ular.retain-gids.633,645,627,621,20,644,627.ttf | Bin 45944 -> 45908 bytes
+ .../Amiri-Regular.retain-gids.63A,64A,631.ttf      | Bin 38024 -> 37988 bytes
+ ...Bold.default.627,644,623,62D,644,627,645,2E.ttf | Bin 11436 -> 11396 bytes
+ ...toNastaliqUrdu-Bold.default.627,644,62D,628.ttf | Bin 18288 -> 18248 bytes
+ .../NotoNastaliqUrdu-Bold.default.627,644.ttf      | Bin 3568 -> 3528 bytes
+ ...rdu-Bold.default.633,645,627,621,20,644,627.ttf | Bin 12408 -> 12368 bytes
+ .../NotoNastaliqUrdu-Bold.default.63A,64A,631.ttf  | Bin 20408 -> 20368 bytes
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttf | Bin 18272 -> 18232 bytes
+ ...staliqUrdu-Bold.retain-gids.627,644,62D,628.ttf | Bin 24416 -> 24376 bytes
+ .../NotoNastaliqUrdu-Bold.retain-gids.627,644.ttf  | Bin 9216 -> 9176 bytes
+ ...Bold.retain-gids.633,645,627,621,20,644,627.ttf | Bin 18212 -> 18172 bytes
+ ...toNastaliqUrdu-Bold.retain-gids.63A,64A,631.ttf | Bin 26628 -> 26588 bytes
+ .../variable/Fraunces.default.26,66,69,124,125.ttf | Bin 15912 -> 15792 bytes
+ .../data/expected/variable/Fraunces.default.61.ttf | Bin 4348 -> 4228 bytes
+ test/subset/data/profiles/notdef-outline.txt       |   1 +
+ test/subset/data/tests/basics.tests                |   1 +
+ test/subset/generate-expected-outputs.py           |   3 +--
+ util/options-subset.cc                             |   1 +
+ 175 files changed, 42 insertions(+), 11 deletions(-)
+
+commit 10ad1859320c0475bdbf706d4b547e1d292c7111
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 16 16:34:46 2021 -0700
+
+    [subset] add comment to copy_bytes().
+
+ src/hb-serialize.hh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 675ebbeb3a0c5b007f87505d6805096a570dd10c
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed Jun 16 10:40:46 2021 -0700
+
+    [subset] don't alloc zero bytes.
+    
+    It will be leaked later since hb_blob_create() won't set up the blob to cleanup since it has length zero.
+
+ src/hb-serialize.hh                                        |   2 ++
+ ...zz-testcase-minimized-hb-subset-fuzzer-5269686781607936 | Bin 0 -> 48 bytes
+ 2 files changed, 2 insertions(+)
+
+commit 93e6a9bc4e1ac16abeccc9c0bead08a1eded1540
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Jun 15 15:38:49 2021 -0600
+
+    Revert "Remove unneeded buffer clear_output / remove_output calls"
+    
+    This reverts commit 06175b71433bc42edc07d342e6354035e37fb5fd.
+    
+    One of the sanitizers is failing. Pushing again as PR to debug.
+    I have suspicions.
+
+ src/hb-buffer.cc    | 10 ++++++++++
+ src/hb-buffer.hh    |  1 +
+ src/hb-ot-layout.cc | 12 ++++++++----
+ src/hb-ot-shape.cc  |  3 ++-
+ 4 files changed, 21 insertions(+), 5 deletions(-)
+
+commit 06175b71433bc42edc07d342e6354035e37fb5fd
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Jun 15 14:33:27 2021 -0600
+
+    Remove unneeded buffer clear_output / remove_output calls
+    
+    Made sure clear_output is always paired with swap_buffers.
+    Trying to see if we can move towards RAII-like buffer iterators
+    instead of the buffer keeping an iterator internally.
+
+ src/hb-buffer.cc    | 10 ----------
+ src/hb-buffer.hh    |  1 -
+ src/hb-ot-layout.cc | 12 ++++--------
+ src/hb-ot-shape.cc  |  3 +--
+ 4 files changed, 5 insertions(+), 21 deletions(-)
+
+commit bdfed8f113431a2156e13d59a4b21e19feb7efd9
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jun 14 15:46:04 2021 -0600
+
+    [blob] Add failing versions of create API
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/2567
+    
+    New API:
+    +hb_blob_create_or_fail()
+    +hb_blob_create_from_file_or_fail()
+    
+    Use these in util/ to distinguish empty file from not-found file.
+    Only err on the latter.
+
+ docs/harfbuzz-sections.txt          |  2 +
+ docs/usermanual-getting-started.xml |  2 +-
+ perf/perf-draw.hh                   |  4 +-
+ perf/perf-extents.hh                |  4 +-
+ perf/perf-shaping.hh                |  8 ++--
+ src/hb-blob.cc                      | 89 ++++++++++++++++++++++++++++++-------
+ src/hb-blob.h                       | 10 +++++
+ src/main.cc                         | 12 ++---
+ src/test-buffer-serialize.cc        |  5 ++-
+ src/test-gpos-size-params.cc        |  5 ++-
+ src/test-gsub-would-substitute.cc   |  5 ++-
+ src/test-ot-glyphname.cc            |  5 ++-
+ src/test-ot-meta.cc                 |  5 ++-
+ src/test-ot-name.cc                 |  5 ++-
+ src/test.cc                         |  5 ++-
+ test/api/hb-test.h                  |  4 +-
+ test/fuzzing/main.cc                | 10 +++--
+ util/options.cc                     |  6 +--
+ 18 files changed, 132 insertions(+), 54 deletions(-)
+
+commit 2fc8d0e6f0b7cfe3897f69ca0411265257dd4a18
+Merge: d3dd93630 085aa65e0
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Tue Jun 15 12:56:17 2021 -0700
+
+    Merge pull request #3020 from googlefonts/serialize_serialize
+    
+    [subset] Always serialize objects point to by OffsetTo to a new serializer object.
+
+commit 085aa65e09e847cf28d6430e85238ea77cce20e2
+Author: Garret Rieger <grieger at google.com>
+Date:   Mon Jun 14 16:47:45 2021 -0700
+
+    [subset] Convert offset serialization in gsubgpos and gdef to serialize_serialize().
+
+ src/hb-ot-layout-gdef-table.hh | 6 ++----
+ src/hb-ot-layout-gsubgpos.hh   | 6 ++----
+ 2 files changed, 4 insertions(+), 8 deletions(-)
+
+commit cc96c4e87ee3d5de6364ab207676daf6d243f95b
+Author: Garret Rieger <grieger at google.com>
+Date:   Mon Jun 14 16:43:23 2021 -0700
+
+    [shaping] Update shaping substituion lookup serialization to use serializer pop()/pack().
+
+ src/hb-ot-layout-gsub-table.hh | 66 +++++++++++++++++++++++++++---------------
+ 1 file changed, 43 insertions(+), 23 deletions(-)
+
+commit d3dd9363095fadaeb59dabe59b5101bb0ecddb41
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jun 14 12:31:02 2021 -0600
+
+    [coretext] Round position info
+    
+    Test:
+    
+    Before:
+    $ ./hb-shape /System/Library/Fonts/ヒラギノ丸ゴ\ ProN\ W4.ttc 1 --features="+palt" --shaper=coretext
+    [gid781=0 at -78,0+841]
+    $ ./hb-shape /System/Library/Fonts/ヒラギノ丸ゴ\ ProN\ W4.ttc 1 --features="+palt" --shaper=ot
+    [gid781=0 at -78,0+842]
+    
+    After:
+    $ ./hb-shape /System/Library/Fonts/ヒラギノ丸ゴ\ ProN\ W4.ttc 1 --features="+palt" --shaper=coretext
+    [gid781=0 at -78,0+842]
+    $ ./hb-shape /System/Library/Fonts/ヒラギノ丸ゴ\ ProN\ W4.ttc 1 --features="+palt" --shaper=ot
+    [gid781=0 at -78,0+842]
+    
+    I've verified in the font that 842 is correct.
+
+ src/hb-coretext.cc | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+commit 8443cc85cb118e858043179ac27673ce170dad3b
+Author: Garret Rieger <grieger at google.com>
+Date:   Fri Jun 11 13:40:39 2021 -0700
+
+    [subset] Correct OffsetTo serialization in GPOS to use serialize_serialize ().
+
+ src/hb-ot-layout-gpos-table.hh | 30 +++++++++++-------------------
+ 1 file changed, 11 insertions(+), 19 deletions(-)
+
+commit 5ba46ed067a04b6e1de1611153885c2478de3ceb
+Author: Garret Rieger <grieger at google.com>
+Date:   Fri Jun 11 13:34:00 2021 -0700
+
+    [subset] Correct OffsetTo serialization in GSUB to use serialize_serialize ().
+
+ src/hb-ot-layout-gsub-table.hh | 44 +++++++++++++++++++-----------------------
+ 1 file changed, 20 insertions(+), 24 deletions(-)
+
+commit 35458b6b66f801194a1dad957308be9a71280425
+Author: Garret Rieger <grieger at google.com>
+Date:   Fri Jun 11 13:14:51 2021 -0700
+
+    [subset] Add serialize_serialize to OffsetTo.
+    
+    Similar to serialize_subset() this will serialize the new object and then link it to the offset.
+
+ src/hb-open-type.hh            | 17 +++++++++++++++++
+ src/hb-ot-layout-gsub-table.hh |  2 +-
+ 2 files changed, 18 insertions(+), 1 deletion(-)
+
+commit 2b0ced28b685de4edbd22cf5f59be30075984dfb
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jun 9 19:06:31 2021 -0600
+
+    Cluster Regional_Indicator pairs (aka emoji flags)
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/2265
+
+ src/hb-ot-shape.cc | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit 4e72d5e35d68b1772985ddafc522dcd4b0aceec2
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sun Jun 13 05:46:17 2021 -0600
+
+    [src/check-static-init] Ignore objdump "file format not recognized" error
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/3019
+
+ src/check-static-inits.py | 17 +++++++++++++++--
+ 1 file changed, 15 insertions(+), 2 deletions(-)
+
+commit 5bc05ba155a0fd568b56423009e55d16ed42b91c
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sun Jun 13 05:28:20 2021 -0600
+
+    Prefer GPOS over kerx, if GSUB was applied
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/3008
+
+ src/hb-ot-shape.cc                           | 6 ++++--
+ test/shaping/data/in-house/tests/macos.tests | 3 +++
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit 13c6ad980fcff52567955d268f33d698ff78379e
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sat Jun 12 11:00:19 2021 -0600
+
+    [src/check-*] Pickup $(NM), $(OBJDUMP), $(LDD), $(OTOOL)
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/3019
+
+ src/Makefile.am            |  4 ++++
+ src/check-libstdc++.py     | 14 ++++++--------
+ src/check-static-inits.py  |  4 ++--
+ src/check-symbols.py       |  6 +++---
+ src/gen-ragel-artifacts.py |  4 ++--
+ 5 files changed, 17 insertions(+), 15 deletions(-)
+
+commit c61ce962cfdef3fc756850132eb9f76cb7a57ba5
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Thu Jun 10 17:33:29 2021 -0600
+
+    [buffer] In hb_buffer_get_positions(), return NULL if inside message callback
+    
+    As discussed in https://github.com/harfbuzz/harfbuzz/issues/2468#issuecomment-645666066
+    
+    Part of fixing https://github.com/harfbuzz/harfbuzz/issues/2468
+
+ src/hb-buffer.cc | 16 +++++++++++++---
+ src/hb-buffer.hh |  9 +++++++++
+ util/options.cc  |  2 +-
+ 3 files changed, 23 insertions(+), 4 deletions(-)
+
+commit 855a3f478eea5b770e64611d09fd347336c56b67
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jun 9 15:10:52 2021 -0600
+
+    [emoji] Fix emoji table generation
+    
+    Previously, the last of each range having Extended_Pictograph property
+    was not processed as so. Ouch!
+    
+    Test:
+    
+    $ echo x > null; hb-shape null -u U+1f43b,U+200d,U+2744,U+fe0f
+    
+    Before:
+    [gid0=0+1000|gid0=2+1000]
+    
+    After:
+    [gid0=0+1000|gid0=0+1000]
+    
+    Caught by https://github.com/harfbuzz/harfbuzz/issues/3017
+
+ src/gen-emoji-table.py        |  2 +-
+ src/hb-unicode-emoji-table.hh | 64 +++++++++++++++++++++++--------------------
+ 2 files changed, 36 insertions(+), 30 deletions(-)
+
+commit bd5502f09f09b3f464754395880f9db30a5fcf60
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jun 9 14:03:25 2021 -0600
+
+    [set] Oops. Fix compile
+
+ src/hb-set.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3962225a7247582f1ae12193a4caee11dc876e1e
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jun 9 14:02:31 2021 -0600
+
+    [set] Add hb_set_copy()
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/3016
+
+ docs/harfbuzz-sections.txt |  1 +
+ src/hb-set.cc              | 18 ++++++++++++++++++
+ src/hb-set.h               |  3 +++
+ 3 files changed, 22 insertions(+)
+
+commit bc33b87f5e72648c66949cc9469291e77aa80701
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jun 9 11:51:32 2021 -0600
+
+    [set] Use references, not pointers, in internal C++ API
+
+ src/hb-ot-layout-gsubgpos.hh |  2 +-
+ src/hb-set.cc                | 14 ++++-----
+ src/hb-set.hh                | 69 ++++++++++++++++++++++----------------------
+ src/hb-subset-plan.cc        |  2 +-
+ 4 files changed, 44 insertions(+), 43 deletions(-)
+
+commit 9cfac093aa5816113289812764c44ec0c44c04c4
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed Jun 9 11:41:59 2021 -0600
+
+    [set] Add copy constructor/assignment
+
+ src/hb-set.hh | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit a83b9b0fec4c21e9da19b7c83ea76cb33aabd195
+Merge: 4811e8f5d 6119ff9d8
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Mon Jun 7 16:41:27 2021 -0700
+
+    Merge pull request #3011 from harfbuzz/directwrite-cleanup
+    
+    Some directwrite cleanups
+
+commit 4811e8f5d76ef528b4cec00f241cc4ab8110db30
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Mon Jun 7 10:54:36 2021 +0200
+
+    Trigger doc rebuild
+
+ src/hb-face.cc | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+commit 09a2eb65d782c1e6bba5ebb5027eaf84c40fc31a
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Mon Jun 7 10:52:27 2021 +0200
+
+    Revert "Temporarily always push the docs commit"
+    
+    This reverts commit 6612fd39ae6f84446dad1b0507417d6febf22fa0.
+
+ .ci/deploy-docs.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 6612fd39ae6f84446dad1b0507417d6febf22fa0
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Mon Jun 7 10:36:02 2021 +0200
+
+    Temporarily always push the docs commit
+
+ .ci/deploy-docs.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit b39b047505d0cd8a77fb9eafca2a08b717a07ead
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Mon Jun 7 10:27:33 2021 +0200
+
+    Try to fix doc deployment
+    
+    https://github.com/harfbuzz/harfbuzz.github.io/issues/4
+    
+    From CI logs at https://github.com/harfbuzz/harfbuzz/runs/2758234200:
+    
+    + git init
+    hint: Using 'master' as the name for the initial branch. This default branch name
+    hint: is subject to change. To configure the initial branch name to use in all
+    hint: of your new repositories, which will suppress this warning, call:
+    hint:
+    hint:   git config --global init.defaultBranch <name>
+    hint:
+    hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
+    hint: 'development'. The just-created branch can be renamed via this command:
+    hint:
+    hint:   git branch -m <name>
+    
+    We want the branch too be main not master.
+
+ .ci/deploy-docs.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 5585ea02eb90c013ddba73290d3a9ae435df9f15
+Author: David Corbett <corbett.dav at northeastern.edu>
+Date:   Sat Jun 5 08:35:28 2021 -0400
+
+    [syllabic] Set position of dotted circle for Indic
+
+ src/hb-ot-shape-complex-indic.cc                          |   3 ++-
+ src/hb-ot-shape-complex-syllabic.cc                       |   5 ++++-
+ src/hb-ot-shape-complex-syllabic.hh                       |   3 ++-
+ .../fonts/fd07ea46e4d8368ada1776208c07fd596f727852.ttf    | Bin 0 -> 956 bytes
+ test/shaping/data/in-house/tests/cluster.tests            |   1 +
+ 5 files changed, 9 insertions(+), 3 deletions(-)
+
+commit a9fb6a0c3cb1ffdbd6c18c8a4b1ad7a51ade2e1c
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Sun Jun 6 14:40:50 2021 +0200
+
+    [aat] Add start table/end table to buffer messages
+    
+    Related to https://github.com/harfbuzz/harfbuzz/issues/3008
+
+ src/hb-aat-layout.cc | 6 ++++++
+ src/hb-ot-layout.cc  | 2 ++
+ 2 files changed, 8 insertions(+)
+
+commit 19cb449358202b22b851f87032ea01b950b04f0f
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Sat Jun 5 13:44:51 2021 -0600
+
+    Update COPYING
+    
+    Mainly just to push any commit to see if it fixes our github.io site.
+    
+    https://github.com/harfbuzz/harfbuzz.github.io/issues/4
+
+ COPYING | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit cf9538e8080c6e96c840db09515191a799c85de9
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Jun 4 22:33:16 2021 -0600
+
+    Removal remaining uses of "blacklist" terminology
+
+ src/gen-use-table.py | 4 ++--
+ src/hb-config.hh     | 2 +-
+ src/hb-ot-layout.cc  | 6 +++---
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 6119ff9d806db7de3ceef73de67fe589507800bb
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Thu Jun 3 13:02:53 2021 +0200
+
+    [hb-directwrite] Don't load dwrit.dll dynamically
+    
+    We already link to it, so I don't see the point of trying to load it
+    dynamically.
+
+ src/hb-directwrite.cc | 36 ++----------------------------------
+ 1 file changed, 2 insertions(+), 34 deletions(-)
+
+commit b2070a509c6aabc5a275749979d140f8d78206e6
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Thu Jun 3 10:50:46 2021 +0200
+
+    [hb-directwrite] Don’t override new/delete
+    
+    This is a testing shaper, we don’t care for overridden malloc/free here.
+    Use malloc/free in the code called from hb_directwrite_face_create().
+
+ src/hb-directwrite.cc | 14 ++------------
+ 1 file changed, 2 insertions(+), 12 deletions(-)
+
+commit 221d642b196a1bc1550e06a06d32bc8888590380
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Thu Jun 3 10:45:23 2021 +0200
+
+    [hb-directwrite] Remove _hb_directwrite_shape_experimental_width
+    
+    Not used anywhere.
+
+ src/hb-directwrite.cc | 128 +++-----------------------------------------------
+ 1 file changed, 6 insertions(+), 122 deletions(-)
+
+commit fa432a121e3c409de77cd2e2b1085b31b93be4c6
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Sat Jun 5 04:06:58 2021 +0200
+
+    Rename various references to master branch
+
+ .ci/deploy-docs.sh             | 4 ++--
+ .github/workflows/linux-ci.yml | 6 +++---
+ .github/workflows/msvc-ci.yml  | 4 ++--
+ .github/workflows/msys2-ci.yml | 4 ++--
+ README                         | 8 ++++----
+ README.md                      | 4 ++--
+ 6 files changed, 15 insertions(+), 15 deletions(-)
+
+commit 35d6af69435ff070cee00f7cd9741b3545ca161c
+Author: Qunxin Liu <qxliu at google.com>
+Date:   Fri Jun 4 10:04:27 2021 -0700
+
+    [subset] fix fuzzer testcase: https://oss-fuzz.com/testcase-detail/5965777994907648
+
+ src/hb-ot-color-colr-table.hh                            |  15 +++++++++++++--
+ ...-testcase-minimized-hb-subset-fuzzer-5965777994907648 | Bin 0 -> 159 bytes
+ 2 files changed, 13 insertions(+), 2 deletions(-)
+
+commit 92206345a390311e6ebe074238bf39d6dc77d79e
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Fri Jun 4 14:51:49 2021 -0600
+
+    [ci] Disable patch-level codecov failures
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/3004
+
+ .codecov.yml | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 3d48bfc18731e3c2187a5b0666a7e94dcab0150b
+Author: Peter Williams <peter at newton.cx>
+Date:   Wed Jun 2 23:12:53 2021 -0400
+
+    Avoid a deprecation warning in graphite2
+    
+    As of graphite2 1.3.7, `gr_make_face` is deprecated in favor of
+    `gr_make_face_with_ops`. It's a one-liner to port over to using it.
+    
+    This is potentially a compatibility break since I'm not sure when the
+    `with_ops` API was added, but the minimum version of graphite2 that's
+    supported by Harfbuzz doesn't seem to be documented anywhere anyway.
+
+ src/hb-graphite2.cc | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 1b6008ca625e0f41cb34259368f91677a110b5dd
+Author: Qunxin Liu <qxliu at google.com>
+Date:   Wed Jun 2 15:07:18 2021 -0700
+
+    fix fuzzer testcase: https://oss-fuzz.com/testcase-detail/5417934246772736
+
+ src/hb-ot-color-colr-table.hh                             |  12 +++++++++---
+ ...z-testcase-minimized-hb-subset-fuzzer-5417934246772736 | Bin 0 -> 104 bytes
+ 2 files changed, 9 insertions(+), 3 deletions(-)
+
+commit 18f61210a43e2dc4e7001227e37fc899d5af7979
+Author: Garret Rieger <grieger at google.com>
+Date:   Thu May 27 16:01:17 2021 -0700
+
+    Add public api methods to get/set the layout features to retain.
+
+ src/hb-subset-input.cc | 20 ++++++++++++++++++++
+ src/hb-subset.h        |  9 +++++++++
+ 2 files changed, 29 insertions(+)
+
+commit 243d056ff1c2af583ceb67e5dfbfaac51dc96e63
+Author: Andi-Bogdan Postelnicu <abpostelnicu at me.com>
+Date:   Wed Jun 2 14:08:11 2021 +0300
+
+    Removed unused variable `supp_size` from plan_subset_encoding(...).
+
+ src/hb-subset-cff1.cc | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+commit 7ab0f4eda9a8a1d7ccd334fa7f9fef4b038a1c24
+Author: Qunxin Liu <qxliu at google.com>
+Date:   Thu May 27 11:40:34 2021 -0700
+
+    fuzzer fix
+
+ src/hb-subset.cc                                           |   1 +
+ ...zz-testcase-minimized-hb-subset-fuzzer-4681956043390976 | Bin 0 -> 56 bytes
+ 2 files changed, 1 insertion(+)
+
+commit cb5a6b5a27cfe616113bafe7f23ad33f1b0d0a1e
+Author: Qunxin Liu <qxliu at google.com>
+Date:   Wed May 19 17:33:46 2021 -0700
+
+    [subset] support option --layout-features
+
+ src/hb-subset-input.cc                             |  91 +++++++++++++
+ src/hb-subset-input.hh                             |   2 +
+ src/hb-subset-plan.cc                              | 147 +++++++++++----------
+ src/hb-subset-plan.hh                              |   4 +
+ .../Comfortaa-Regular-new.default.61,62,63.ttf     | Bin 8100 -> 7652 bytes
+ .../basics/Comfortaa-Regular-new.default.61,63.ttf | Bin 7736 -> 7284 bytes
+ .../basics/Comfortaa-Regular-new.default.61.ttf    | Bin 7360 -> 6920 bytes
+ ...aa-Regular-new.default.retain-all-codepoint.ttf | Bin 222212 -> 221524 bytes
+ ...Regular-new.drop-hints-retain-gids.61,62,63.ttf | Bin 7012 -> 5104 bytes
+ ...aa-Regular-new.drop-hints-retain-gids.61,63.ttf | Bin 6712 -> 4808 bytes
+ ...ortaa-Regular-new.drop-hints-retain-gids.61.ttf | Bin 6388 -> 4220 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 190920 -> 190296 bytes
+ .../Comfortaa-Regular-new.drop-hints.61,62,63.ttf  | Bin 3424 -> 3100 bytes
+ .../Comfortaa-Regular-new.drop-hints.61,63.ttf     | Bin 3128 -> 2792 bytes
+ .../basics/Comfortaa-Regular-new.drop-hints.61.ttf | Bin 2800 -> 2472 bytes
+ ...Regular-new.drop-hints.retain-all-codepoint.ttf | Bin 190908 -> 190252 bytes
+ .../basics/Comfortaa-Regular-new.gids.61,62,63.ttf | Bin 9036 -> 8580 bytes
+ .../basics/Comfortaa-Regular-new.gids.61,63.ttf    | Bin 8668 -> 8220 bytes
+ .../basics/Comfortaa-Regular-new.gids.61.ttf       | Bin 8304 -> 7848 bytes
+ .../basics/Comfortaa-Regular-new.gids.62.ttf       | Bin 8236 -> 7772 bytes
+ .../basics/Comfortaa-Regular-new.gids.63.ttf       | Bin 8220 -> 7776 bytes
+ ...ortaa-Regular-new.gids.retain-all-codepoint.ttf | Bin 222212 -> 221524 bytes
+ ...gular-new.keep-all-layout-features.61,62,63.ttf | Bin 0 -> 8100 bytes
+ ...-Regular-new.keep-all-layout-features.61,63.ttf | Bin 0 -> 7736 bytes
+ ...taa-Regular-new.keep-all-layout-features.61.ttf | Bin 0 -> 7360 bytes
+ ...taa-Regular-new.keep-all-layout-features.62.ttf | Bin 0 -> 6796 bytes
+ ...taa-Regular-new.keep-all-layout-features.63.ttf | Bin 0 -> 6844 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttf | Bin 0 -> 222212 bytes
+ ...fortaa-Regular-new.layout-features.61,62,63.ttf | Bin 0 -> 7652 bytes
+ ...Comfortaa-Regular-new.layout-features.61,63.ttf | Bin 0 -> 7284 bytes
+ .../Comfortaa-Regular-new.layout-features.61.ttf   | Bin 0 -> 6920 bytes
+ .../Comfortaa-Regular-new.layout-features.62.ttf   | Bin 0 -> 6796 bytes
+ .../Comfortaa-Regular-new.layout-features.63.ttf   | Bin 0 -> 6844 bytes
+ ...ar-new.layout-features.retain-all-codepoint.ttf | Bin 0 -> 219716 bytes
+ .../Comfortaa-Regular-new.name-ids.61,62,63.ttf    | Bin 7840 -> 7392 bytes
+ .../Comfortaa-Regular-new.name-ids.61,63.ttf       | Bin 7476 -> 7024 bytes
+ .../basics/Comfortaa-Regular-new.name-ids.61.ttf   | Bin 7100 -> 6660 bytes
+ ...a-Regular-new.name-ids.retain-all-codepoint.ttf | Bin 221952 -> 221264 bytes
+ ...mfortaa-Regular-new.name-languages.61,62,63.ttf | Bin 8100 -> 7652 bytes
+ .../Comfortaa-Regular-new.name-languages.61,63.ttf | Bin 7736 -> 7284 bytes
+ .../Comfortaa-Regular-new.name-languages.61.ttf    | Bin 7360 -> 6920 bytes
+ ...lar-new.name-languages.retain-all-codepoint.ttf | Bin 222212 -> 221524 bytes
+ .../Comfortaa-Regular-new.name-legacy.61,62,63.ttf | Bin 8100 -> 7652 bytes
+ .../Comfortaa-Regular-new.name-legacy.61,63.ttf    | Bin 7736 -> 7284 bytes
+ .../Comfortaa-Regular-new.name-legacy.61.ttf       | Bin 7360 -> 6920 bytes
+ ...egular-new.name-legacy.retain-all-codepoint.ttf | Bin 222212 -> 221524 bytes
+ .../Comfortaa-Regular-new.retain-gids.61,62,63.ttf | Bin 11688 -> 9656 bytes
+ .../Comfortaa-Regular-new.retain-gids.61,63.ttf    | Bin 11320 -> 9300 bytes
+ .../Comfortaa-Regular-new.retain-gids.61.ttf       | Bin 10952 -> 8668 bytes
+ ...egular-new.retain-gids.retain-all-codepoint.ttf | Bin 222224 -> 221568 bytes
+ ...ar-subset.keep-all-layout-features.61,62,63.ttf | Bin 0 -> 4128 bytes
+ ...gular-subset.keep-all-layout-features.61,63.ttf | Bin 0 -> 3580 bytes
+ ...-Regular-subset.keep-all-layout-features.61.ttf | Bin 0 -> 3156 bytes
+ ...-Regular-subset.keep-all-layout-features.62.ttf | Bin 0 -> 3180 bytes
+ ...-Regular-subset.keep-all-layout-features.63.ttf | Bin 0 -> 3048 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttf | Bin 0 -> 9524 bytes
+ ...gjo-Regular-subset.layout-features.61,62,63.ttf | Bin 0 -> 4128 bytes
+ ...eongjo-Regular-subset.layout-features.61,63.ttf | Bin 0 -> 3580 bytes
+ ...mMyeongjo-Regular-subset.layout-features.61.ttf | Bin 0 -> 3156 bytes
+ ...mMyeongjo-Regular-subset.layout-features.62.ttf | Bin 0 -> 3180 bytes
+ ...mMyeongjo-Regular-subset.layout-features.63.ttf | Bin 0 -> 3048 bytes
+ ...subset.layout-features.retain-all-codepoint.ttf | Bin 0 -> 9524 bytes
+ ...gular.abc.keep-all-layout-features.61,62,63.ttf | Bin 0 -> 2452 bytes
+ ...-Regular.abc.keep-all-layout-features.61,63.ttf | Bin 0 -> 2260 bytes
+ ...oto-Regular.abc.keep-all-layout-features.61.ttf | Bin 0 -> 2048 bytes
+ ...oto-Regular.abc.keep-all-layout-features.62.ttf | Bin 0 -> 1916 bytes
+ ...oto-Regular.abc.keep-all-layout-features.63.ttf | Bin 0 -> 1972 bytes
+ ...ep-all-layout-features.retain-all-codepoint.ttf | Bin 0 -> 2452 bytes
+ ...Roboto-Regular.abc.layout-features.61,62,63.ttf | Bin 0 -> 2452 bytes
+ .../Roboto-Regular.abc.layout-features.61,63.ttf   | Bin 0 -> 2260 bytes
+ .../Roboto-Regular.abc.layout-features.61.ttf      | Bin 0 -> 2048 bytes
+ .../Roboto-Regular.abc.layout-features.62.ttf      | Bin 0 -> 1916 bytes
+ .../Roboto-Regular.abc.layout-features.63.ttf      | Bin 0 -> 1972 bytes
+ ...ar.abc.layout-features.retain-all-codepoint.ttf | Bin 0 -> 2452 bytes
+ ...eSansPro-Regular.default.1FC,21,41,20,62,63.otf | Bin 4192 -> 2580 bytes
+ .../SourceSansPro-Regular.default.61,62,63.otf     | Bin 3856 -> 2216 bytes
+ ...ourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf | Bin 3144 -> 2328 bytes
+ ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 30788 -> 20232 bytes
+ ...Regular.desubroutinize-retain-gids.61,62,63.otf | Bin 30908 -> 2316 bytes
+ ...r.desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 31336 -> 30540 bytes
+ ...o-Regular.desubroutinize.1FC,21,41,20,62,63.otf | Bin 3968 -> 2436 bytes
+ ...urceSansPro-Regular.desubroutinize.61,62,63.otf | Bin 3556 -> 2120 bytes
+ ...nsPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf | Bin 3168 -> 2312 bytes
+ ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 30488 -> 20064 bytes
+ ...p-hints-desubroutinize-retain-gids.61,62,63.otf | Bin 30668 -> 2192 bytes
+ ...s-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 31124 -> 30372 bytes
+ ...rop-hints-desubroutinize.1FC,21,41,20,62,63.otf | Bin 3668 -> 2268 bytes
+ ...-Regular.drop-hints-desubroutinize.61,62,63.otf | Bin 3320 -> 1996 bytes
+ ...ar.drop-hints-desubroutinize.D7,D8,D9,DA,DE.otf | Bin 2952 -> 2148 bytes
+ ...r.drop-hints-retain-gids.1FC,21,41,20,62,63.otf | Bin 30624 -> 20156 bytes
+ ...Pro-Regular.drop-hints-retain-gids.61,62,63.otf | Bin 30888 -> 2228 bytes
+ ...gular.drop-hints-retain-gids.D7,D8,D9,DA,DE.otf | Bin 31104 -> 30384 bytes
+ ...nsPro-Regular.drop-hints.1FC,21,41,20,62,63.otf | Bin 3808 -> 2352 bytes
+ .../SourceSansPro-Regular.drop-hints.61,62,63.otf  | Bin 3524 -> 2060 bytes
+ ...ceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf | Bin 2932 -> 2164 bytes
+ ...sPro-Regular.retain-gids.1FC,21,41,20,62,63.otf | Bin 31012 -> 20384 bytes
+ .../SourceSansPro-Regular.retain-gids.61,62,63.otf | Bin 31208 -> 2384 bytes
+ ...eSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.otf | Bin 31312 -> 30556 bytes
+ .../Roboto-Regular.default.1FC,21,41,20,62,63.ttf  | Bin 4656 -> 3276 bytes
+ .../full-font/Roboto-Regular.default.61,62,63.ttf  | Bin 3904 -> 2864 bytes
+ .../Roboto-Regular.default.D7,D8,D9,DA,DE.ttf      | Bin 3976 -> 3216 bytes
+ ...oboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf | Bin 2532 -> 1712 bytes
+ .../Roboto-Regular.drop-hints.61,62,63.ttf         | Bin 2116 -> 1496 bytes
+ .../Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf   | Bin 2184 -> 1728 bytes
+ ...ifVariable-Roman.default.1FC,21,41,20,62,63.ttf | Bin 6876 -> 4144 bytes
+ .../SourceSerifVariable-Roman.default.61,62,63.ttf | Bin 6552 -> 3984 bytes
+ ...eSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf | Bin 6136 -> 4548 bytes
+ ...ariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf | Bin 6832 -> 4120 bytes
+ ...urceSerifVariable-Roman.drop-hints.61,62,63.ttf | Bin 6552 -> 3984 bytes
+ ...rifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 6136 -> 4548 bytes
+ ...text1_multiple_subrules_f1.default.41,42,43.otf | Bin 1440 -> 1328 bytes
+ ...context1_multiple_subrules_f1.default.41,42.otf | Bin 1324 -> 1228 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.otf | Bin 3812 -> 3700 bytes
+ ...1_multiple_subrules_f1.retain-gids.41,42,43.otf | Bin 2140 -> 2028 bytes
+ ...ext1_multiple_subrules_f1.retain-gids.41,42.otf | Bin 2028 -> 1932 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf | Bin 3812 -> 3700 bytes
+ ...text2_multiple_subrules_f1.default.41,42,43.otf | Bin 1456 -> 1328 bytes
+ ...context2_multiple_subrules_f1.default.41,42.otf | Bin 1336 -> 1228 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.otf | Bin 3828 -> 3700 bytes
+ ...2_multiple_subrules_f1.retain-gids.41,42,43.otf | Bin 2156 -> 2028 bytes
+ ...ext2_multiple_subrules_f1.retain-gids.41,42.otf | Bin 2040 -> 1932 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf | Bin 3828 -> 3700 bytes
+ .../gpos_context3_simple_f1.default.41,42,43.otf   | Bin 1420 -> 1308 bytes
+ ...ext3_simple_f1.default.retain-all-codepoint.otf | Bin 3792 -> 3680 bytes
+ ...pos_context3_simple_f1.retain-gids.41,42,43.otf | Bin 2120 -> 2008 bytes
+ ..._simple_f1.retain-gids.retain-all-codepoint.otf | Bin 3792 -> 3680 bytes
+ .../AdobeVFPrototype.default.41,42,43,57.otf       | Bin 5460 -> 5440 bytes
+ .../AdobeVFPrototype.default.41,42,43.otf          | Bin 4932 -> 4908 bytes
+ .../AdobeVFPrototype.default.41,42.otf             | Bin 4452 -> 4432 bytes
+ .../AdobeVFPrototype.default.41,56,57.otf          | Bin 4600 -> 4576 bytes
+ .../AdobeVFPrototype.default.41.otf                | Bin 3748 -> 3728 bytes
+ .../AdobeVFPrototype.default.42,57.otf             | Bin 4584 -> 4564 bytes
+ .../AdobeVFPrototype.drop-hints.41,42,43,57.otf    | Bin 5272 -> 5252 bytes
+ .../AdobeVFPrototype.drop-hints.41,42,43.otf       | Bin 4744 -> 4720 bytes
+ .../AdobeVFPrototype.drop-hints.41,42.otf          | Bin 4264 -> 4244 bytes
+ .../AdobeVFPrototype.drop-hints.41,56,57.otf       | Bin 4408 -> 4384 bytes
+ .../AdobeVFPrototype.drop-hints.41.otf             | Bin 3560 -> 3540 bytes
+ .../AdobeVFPrototype.drop-hints.42,57.otf          | Bin 4396 -> 4376 bytes
+ ...AdobeVFPrototype.keep-gdef-gpos.41,42,43,57.otf | Bin 5460 -> 5440 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41,42,43.otf   | Bin 4932 -> 4908 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41,42.otf      | Bin 4452 -> 4432 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41,56,57.otf   | Bin 4600 -> 4576 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.41.otf         | Bin 3748 -> 3728 bytes
+ .../AdobeVFPrototype.keep-gdef-gpos.42,57.otf      | Bin 4584 -> 4564 bytes
+ .../Roboto-Regular.default.41,42,43.ttf            | Bin 3668 -> 2764 bytes
+ .../Roboto-Regular.drop-hints.41,42,43.ttf         | Bin 2036 -> 1472 bytes
+ .../Roboto-Regular.keep-gdef-gpos.41,42,43.ttf     | Bin 3668 -> 2764 bytes
+ .../layout.gpos/gpos1_2_font.default.41,43.otf     | Bin 1352 -> 1292 bytes
+ .../layout.gpos/gpos1_2_font.default.41,46.otf     | Bin 1484 -> 1424 bytes
+ .../layout.gpos/gpos1_2_font.default.41.otf        | Bin 1232 -> 1176 bytes
+ .../layout.gpos/gpos1_2_font.default.43,46.otf     | Bin 1348 -> 1288 bytes
+ .../gpos1_2_font.default.retain-all-codepoint.otf  | Bin 3668 -> 3604 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.41,43.otf | Bin 2068 -> 2008 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.41,46.otf | Bin 2232 -> 2172 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.41.otf    | Bin 1932 -> 1876 bytes
+ .../layout.gpos/gpos1_2_font.retain-gids.43,46.otf | Bin 2096 -> 2036 bytes
+ ...os1_2_font.retain-gids.retain-all-codepoint.otf | Bin 3668 -> 3604 bytes
+ .../gpos2_1_font7.default.21,23,25.otf             | Bin 1428 -> 1360 bytes
+ .../layout.gpos2/gpos2_1_font7.default.21,23.otf   | Bin 1308 -> 1240 bytes
+ .../gpos2_1_font7.default.retain-all-codepoint.otf | Bin 3688 -> 3604 bytes
+ .../gpos2_1_font7.retain-gids.21,23,25.otf         | Bin 1764 -> 1696 bytes
+ .../gpos2_1_font7.retain-gids.21,23.otf            | Bin 1632 -> 1564 bytes
+ ...s2_1_font7.retain-gids.retain-all-codepoint.otf | Bin 3688 -> 3604 bytes
+ .../gpos2_2_font5.default.21,23,25.otf             | Bin 1480 -> 1360 bytes
+ .../layout.gpos2/gpos2_2_font5.default.21,23.otf   | Bin 1360 -> 1240 bytes
+ .../gpos2_2_font5.default.retain-all-codepoint.otf | Bin 3724 -> 3604 bytes
+ .../gpos2_2_font5.retain-gids.21,23,25.otf         | Bin 1816 -> 1696 bytes
+ .../gpos2_2_font5.retain-gids.21,23.otf            | Bin 1684 -> 1564 bytes
+ ...s2_2_font5.retain-gids.retain-all-codepoint.otf | Bin 3724 -> 3604 bytes
+ .../layout.gpos3/gpos3_font3.default.28,29.otf     | Bin 1328 -> 1248 bytes
+ .../layout.gpos3/gpos3_font3.default.28,2B.otf     | Bin 1456 -> 1376 bytes
+ .../layout.gpos3/gpos3_font3.default.29,2B.otf     | Bin 1368 -> 1292 bytes
+ .../gpos3_font3.default.retain-all-codepoint.otf   | Bin 3728 -> 3636 bytes
+ .../layout.gpos3/gpos3_font3.retain-gids.28,29.otf | Bin 1712 -> 1632 bytes
+ .../layout.gpos3/gpos3_font3.retain-gids.28,2B.otf | Bin 1860 -> 1780 bytes
+ .../layout.gpos3/gpos3_font3.retain-gids.29,2B.otf | Bin 1772 -> 1696 bytes
+ ...pos3_font3.retain-gids.retain-all-codepoint.otf | Bin 3728 -> 3636 bytes
+ ...pos4_multiple_anchors_1.default.41,42,43,44.otf | Bin 1640 -> 1516 bytes
+ ...pos4_multiple_anchors_1.default.41,42,43,45.otf | Bin 1632 -> 1524 bytes
+ .../gpos4_multiple_anchors_1.default.41,42,43.otf  | Bin 1404 -> 1308 bytes
+ ...4_multiple_anchors_1.default.41,43,44,45,46.otf | Bin 1992 -> 1864 bytes
+ .../gpos4_multiple_anchors_1.default.41,43,44.otf  | Bin 1632 -> 1524 bytes
+ .../gpos4_multiple_anchors_1.default.41,43,45.otf  | Bin 1632 -> 1532 bytes
+ .../gpos4_multiple_anchors_1.default.41,43.otf     | Bin 1400 -> 1312 bytes
+ ...iple_anchors_1.default.retain-all-codepoint.otf | Bin 3816 -> 3668 bytes
+ ..._multiple_anchors_1.retain-gids.41,42,43,44.otf | Bin 2344 -> 2220 bytes
+ ..._multiple_anchors_1.retain-gids.41,42,43,45.otf | Bin 2352 -> 2244 bytes
+ ...os4_multiple_anchors_1.retain-gids.41,42,43.otf | Bin 2104 -> 2008 bytes
+ ...ltiple_anchors_1.retain-gids.41,43,44,45,46.otf | Bin 2712 -> 2584 bytes
+ ...os4_multiple_anchors_1.retain-gids.41,43,44.otf | Bin 2348 -> 2240 bytes
+ ...os4_multiple_anchors_1.retain-gids.41,43,45.otf | Bin 2360 -> 2260 bytes
+ .../gpos4_multiple_anchors_1.retain-gids.41,43.otf | Bin 2116 -> 2028 bytes
+ ..._anchors_1.retain-gids.retain-all-codepoint.otf | Bin 3816 -> 3668 bytes
+ .../gpos5_font1.default.41,42,43,44.otf            | Bin 1668 -> 1536 bytes
+ .../gpos5_font1.default.41,42,43,45.otf            | Bin 1660 -> 1544 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42,43.otf  | Bin 1432 -> 1328 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42,44.otf  | Bin 1588 -> 1460 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42,45.otf  | Bin 1560 -> 1448 bytes
+ .../layout.gpos5/gpos5_font1.default.41,42.otf     | Bin 1328 -> 1228 bytes
+ .../gpos5_font1.default.retain-all-codepoint.otf   | Bin 3884 -> 3688 bytes
+ .../gpos5_font1.retain-gids.41,42,43,44.otf        | Bin 2372 -> 2240 bytes
+ .../gpos5_font1.retain-gids.41,42,43,45.otf        | Bin 2380 -> 2264 bytes
+ .../gpos5_font1.retain-gids.41,42,43.otf           | Bin 2132 -> 2028 bytes
+ .../gpos5_font1.retain-gids.41,42,44.otf           | Bin 2304 -> 2176 bytes
+ .../gpos5_font1.retain-gids.41,42,45.otf           | Bin 2284 -> 2172 bytes
+ .../layout.gpos5/gpos5_font1.retain-gids.41,42.otf | Bin 2032 -> 1932 bytes
+ ...pos5_font1.retain-gids.retain-all-codepoint.otf | Bin 3884 -> 3688 bytes
+ .../gpos6_font1.default.41,42,43,44.otf            | Bin 1616 -> 1492 bytes
+ .../gpos6_font1.default.41,42,43,45.otf            | Bin 1608 -> 1500 bytes
+ .../layout.gpos6/gpos6_font1.default.41,42,43.otf  | Bin 1380 -> 1284 bytes
+ .../gpos6_font1.default.41,43,44,45,46.otf         | Bin 1968 -> 1840 bytes
+ .../layout.gpos6/gpos6_font1.default.41,43,44.otf  | Bin 1608 -> 1500 bytes
+ .../layout.gpos6/gpos6_font1.default.41,43,45.otf  | Bin 1608 -> 1508 bytes
+ .../layout.gpos6/gpos6_font1.default.41,43.otf     | Bin 1376 -> 1288 bytes
+ .../gpos6_font1.default.retain-all-codepoint.otf   | Bin 3792 -> 3644 bytes
+ .../gpos6_font1.retain-gids.41,42,43,44.otf        | Bin 2320 -> 2196 bytes
+ .../gpos6_font1.retain-gids.41,42,43,45.otf        | Bin 2328 -> 2220 bytes
+ .../gpos6_font1.retain-gids.41,42,43.otf           | Bin 2080 -> 1984 bytes
+ .../gpos6_font1.retain-gids.41,43,44,45,46.otf     | Bin 2688 -> 2560 bytes
+ .../gpos6_font1.retain-gids.41,43,44.otf           | Bin 2324 -> 2216 bytes
+ .../gpos6_font1.retain-gids.41,43,45.otf           | Bin 2336 -> 2236 bytes
+ .../layout.gpos6/gpos6_font1.retain-gids.41,43.otf | Bin 2092 -> 2004 bytes
+ ...pos6_font1.retain-gids.retain-all-codepoint.otf | Bin 3792 -> 3644 bytes
+ ...ular.default.627,644,623,62D,644,627,645,2E.ttf | Bin 13288 -> 12724 bytes
+ .../Amiri-Regular.default.627,644,62D,628.ttf      | Bin 10188 -> 10028 bytes
+ .../Amiri-Regular.default.627,644.ttf              | Bin 4364 -> 4208 bytes
+ ...-Regular.default.633,645,627,621,20,644,627.ttf | Bin 10324 -> 9552 bytes
+ .../Amiri-Regular.default.63A,64A,631.ttf          | Bin 7824 -> 7360 bytes
+ ....retain-gids.627,644,623,62D,644,627,645,2E.ttf | Bin 48596 -> 48052 bytes
+ .../Amiri-Regular.retain-gids.627,644,62D,628.ttf  | Bin 42836 -> 42676 bytes
+ .../Amiri-Regular.retain-gids.627,644.ttf          | Bin 36892 -> 36736 bytes
+ ...ular.retain-gids.633,645,627,621,20,644,627.ttf | Bin 46680 -> 45944 bytes
+ .../Amiri-Regular.retain-gids.63A,64A,631.ttf      | Bin 42896 -> 38024 bytes
+ ...g1_multiple_subrules_f1.default.30,31,32,33.otf | Bin 1944 -> 1840 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.otf | Bin 3832 -> 3704 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf | Bin 2408 -> 2304 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf | Bin 3832 -> 3704 bytes
+ ...g2_multiple_subrules_f1.default.30,31,32,33.otf | Bin 1964 -> 1840 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.otf | Bin 3864 -> 3704 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf | Bin 2428 -> 2304 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf | Bin 3864 -> 3704 bytes
+ ...pos_chaining3_simple_f1.default.30,31,32,33.otf | Bin 1936 -> 1816 bytes
+ ...ing3_simple_f1.default.retain-all-codepoint.otf | Bin 3800 -> 3680 bytes
+ ...chaining3_simple_f1.retain-gids.30,31,32,33.otf | Bin 2400 -> 2280 bytes
+ ..._simple_f1.retain-gids.retain-all-codepoint.otf | Bin 3800 -> 3680 bytes
+ .../layout.gpos9/gpos9_font2.default.41,42.otf     | Bin 1272 -> 1184 bytes
+ .../layout.gpos9/gpos9_font2.default.41.otf        | Bin 1236 -> 1172 bytes
+ .../layout.gpos9/gpos9_font2.default.42.otf        | Bin 1096 -> 1032 bytes
+ .../layout.gpos9/gpos9_font2.retain-gids.41,42.otf | Bin 1976 -> 1888 bytes
+ .../layout.gpos9/gpos9_font2.retain-gids.41.otf    | Bin 1936 -> 1872 bytes
+ .../layout.gpos9/gpos9_font2.retain-gids.42.otf    | Bin 1808 -> 1744 bytes
+ ...ub_alternate_substitution.default.53A9,53F1.otf | Bin 4984 -> 4348 bytes
+ .../gsub_alternate_substitution.default.53A9.otf   | Bin 4524 -> 3904 bytes
+ .../gsub_alternate_substitution.default.53F1.otf   | Bin 2816 -> 2452 bytes
+ ...e_substitution.default.retain-all-codepoint.otf | Bin 6728 -> 6040 bytes
+ ...lternate_substitution.retain-gids.53A9,53F1.otf | Bin 5108 -> 4472 bytes
+ ...sub_alternate_substitution.retain-gids.53A9.otf | Bin 4676 -> 4056 bytes
+ ...sub_alternate_substitution.retain-gids.53F1.otf | Bin 3012 -> 2648 bytes
+ ...bstitution.retain-gids.retain-all-codepoint.otf | Bin 6820 -> 6132 bytes
+ ...text1_multiple_subrules_f2.default.41,42,43.otf | Bin 1460 -> 1340 bytes
+ ...context1_multiple_subrules_f2.default.41,42.otf | Bin 1420 -> 1240 bytes
+ ...le_subrules_f2.default.retain-all-codepoint.otf | Bin 3808 -> 3712 bytes
+ ...1_multiple_subrules_f2.retain-gids.41,42,43.otf | Bin 2248 -> 2040 bytes
+ ...ext1_multiple_subrules_f2.retain-gids.41,42.otf | Bin 2224 -> 1944 bytes
+ ...ubrules_f2.retain-gids.retain-all-codepoint.otf | Bin 3808 -> 3712 bytes
+ ...text2_multiple_subrules_f2.default.41,42,43.otf | Bin 1476 -> 1340 bytes
+ ...context2_multiple_subrules_f2.default.41,42.otf | Bin 1432 -> 1240 bytes
+ ...le_subrules_f2.default.retain-all-codepoint.otf | Bin 3824 -> 3712 bytes
+ ...2_multiple_subrules_f2.retain-gids.41,42,43.otf | Bin 2264 -> 2040 bytes
+ ...ext2_multiple_subrules_f2.retain-gids.41,42.otf | Bin 2236 -> 1944 bytes
+ ...ubrules_f2.retain-gids.retain-all-codepoint.otf | Bin 3824 -> 3712 bytes
+ ..._successive_f1.default.retain-all-codepoint.otf | Bin 3828 -> 3700 bytes
+ ...cessive_f1.retain-gids.retain-all-codepoint.otf | Bin 3828 -> 3700 bytes
+ ...g1_multiple_subrules_f1.default.30,31,32,33.otf | Bin 1916 -> 1852 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.otf | Bin 3804 -> 3716 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf | Bin 2380 -> 2316 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf | Bin 3804 -> 3716 bytes
+ ...g2_multiple_subrules_f1.default.30,31,32,33.otf | Bin 1944 -> 1852 bytes
+ ...le_subrules_f1.default.retain-all-codepoint.otf | Bin 3836 -> 3716 bytes
+ ...ultiple_subrules_f1.retain-gids.30,31,32,33.otf | Bin 2408 -> 2316 bytes
+ ...ubrules_f1.retain-gids.retain-all-codepoint.otf | Bin 3836 -> 3716 bytes
+ ...sub_chaining3_simple_f2.default.30,31,32,33.otf | Bin 1904 -> 1828 bytes
+ ...ing3_simple_f2.default.retain-all-codepoint.otf | Bin 3772 -> 3692 bytes
+ ...chaining3_simple_f2.retain-gids.30,31,32,33.otf | Bin 2368 -> 2292 bytes
+ ..._simple_f2.retain-gids.retain-all-codepoint.otf | Bin 3772 -> 3692 bytes
+ ..._created.default.41,42,43,44,45,46,47,48,49.otf | Bin 2384 -> 2176 bytes
+ ...nually_created.default.41,42,43,44,45,46,47.otf | Bin 1996 -> 1888 bytes
+ ...nually_created.default.41,42,43,44,45,46,4D.otf | Bin 1996 -> 1852 bytes
+ ...nually_created.default.41,42,43,44,45,46,51.otf | Bin 2044 -> 1932 bytes
+ .../gsub8_manually_created.default.61.otf          | Bin 1540 -> 1224 bytes
+ ...nually_created.default.retain-all-codepoint.otf | Bin 3832 -> 3656 bytes
+ ...ated.retain-gids.41,42,43,44,45,46,47,48,49.otf | Bin 3172 -> 2884 bytes
+ ...ly_created.retain-gids.41,42,43,44,45,46,47.otf | Bin 2796 -> 2596 bytes
+ ...ly_created.retain-gids.41,42,43,44,45,46,4D.otf | Bin 2860 -> 2636 bytes
+ ...ly_created.retain-gids.41,42,43,44,45,46,51.otf | Bin 2864 -> 2760 bytes
+ .../gsub8_manually_created.retain-gids.61.otf      | Bin 2584 -> 2276 bytes
+ ...ly_created.retain-gids.retain-all-codepoint.otf | Bin 3832 -> 3656 bytes
+ .../Roboto-Regular.smallcaps.default.41,42,43.ttf  | Bin 3028 -> 2464 bytes
+ .../Roboto-Regular.smallcaps.default.41,43.ttf     | Bin 2628 -> 2284 bytes
+ .../layout/Roboto-Regular.smallcaps.default.41.ttf | Bin 2252 -> 2084 bytes
+ .../layout/Roboto-Regular.smallcaps.default.43.ttf | Bin 2324 -> 2116 bytes
+ .../Roboto-Regular.smallcaps.default.CA,CB.ttf     | Bin 2668 -> 2388 bytes
+ ...boto-Regular.smallcaps.retain-gids.41,42,43.ttf | Bin 6844 -> 2716 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.41,43.ttf | Bin 6472 -> 2548 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.41.ttf    | Bin 6096 -> 2336 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.43.ttf    | Bin 6152 -> 2384 bytes
+ .../Roboto-Regular.smallcaps.retain-gids.CA,CB.ttf | Bin 7996 -> 6476 bytes
+ .../variable/Fraunces.default.26,66,69,124,125.ttf | Bin 18448 -> 15912 bytes
+ .../data/expected/variable/Fraunces.default.61.ttf | Bin 5880 -> 4348 bytes
+ .../data/profiles/keep-all-layout-features.txt     |   1 +
+ test/subset/data/profiles/layout-features.txt      |   1 +
+ test/subset/data/tests/basics.tests                |   2 +
+ test/subset/generate-expected-outputs.py           |   1 -
+ util/options-subset.cc                             |  53 ++++++++
+ 314 files changed, 233 insertions(+), 69 deletions(-)
+
+commit 0989b5553af0e252d7201da9bf762d2f68fade9e
+Author: Garret Rieger <grieger at google.com>
+Date:   Tue May 18 17:12:50 2021 -0700
+
+    [subset] Add test for overlaps flag setting.
+
+ test/api/fonts/Roboto-Regular.abcAE.ttf | Bin 0 -> 7224 bytes
+ test/api/fonts/Roboto-Regular.bAE.ttf   | Bin 0 -> 6732 bytes
+ test/api/test-subset-glyf.c             |  26 ++++++++++++++++++++++++++
+ 3 files changed, 26 insertions(+)
+
+commit 73ff04a324c3ac721bbebd2a7817dbe819c351fa
+Author: Garret Rieger <grieger at google.com>
+Date:   Tue May 18 16:54:01 2021 -0700
+
+    [subset] add option to have the subsetter set the mac overlaps flag on each glyph.
+
+ src/hb-ot-glyf-table.hh | 50 +++++++++++++++++++++++++++++++++++++++++--------
+ src/hb-subset-input.cc  | 14 ++++++++++++++
+ src/hb-subset-input.hh  |  1 +
+ src/hb-subset-plan.cc   |  3 ++-
+ src/hb-subset-plan.hh   |  1 +
+ src/hb-subset.h         |  7 +++++++
+ util/options-subset.cc  |  3 ++-
+ 7 files changed, 69 insertions(+), 10 deletions(-)
+
+commit f739e1dc6a875d092d94bcc906d1604887729eac
+Author: Qunxin Liu <qxliu at google.com>
+Date:   Tue May 11 11:44:32 2021 -0700
+
+    [subset] subset both CPAL and COLRv1
+
+ src/hb-ot-color-colr-table.hh                      |  69 +++++++++--
+ src/hb-ot-color-cpal-table.hh                      | 131 ++++++++++++++++++++-
+ src/hb-subset-plan.cc                              |  28 ++++-
+ src/hb-subset-plan.hh                              |   2 +-
+ src/hb-subset.cc                                   |   2 +
+ .../TwemojiMozilla.subset.default.32,3299.ttf      | Bin 5264 -> 1576 bytes
+ .../api/fonts/TwemojiMozilla.subset.default.32.ttf | Bin 4660 -> 932 bytes
+ .../fonts/TwemojiMozilla.subset.default.3297.ttf   | Bin 5068 -> 1376 bytes
+ test/api/fonts/TwemojiMozilla.subset.ttf           | Bin 5712 -> 1936 bytes
+ .../TwemojiMozilla.subset.default.32,3297,3299.ttf | Bin 5712 -> 1936 bytes
+ .../colr/TwemojiMozilla.subset.default.32,3297.ttf | Bin 5176 -> 1400 bytes
+ .../colr/TwemojiMozilla.subset.default.32,3299.ttf | Bin 5352 -> 1576 bytes
+ .../colr/TwemojiMozilla.subset.default.32.ttf      | Bin 4748 -> 932 bytes
+ .../TwemojiMozilla.subset.default.3297,3299.ttf    | Bin 5692 -> 1916 bytes
+ .../colr/TwemojiMozilla.subset.default.3297.ttf    | Bin 5152 -> 1376 bytes
+ .../colr/TwemojiMozilla.subset.default.3299.ttf    | Bin 5328 -> 1552 bytes
+ ....subset.drop-hints-retain-gids.32,3297,3299.ttf | Bin 5692 -> 1916 bytes
+ ...zilla.subset.drop-hints-retain-gids.32,3297.ttf | Bin 5172 -> 1396 bytes
+ ...zilla.subset.drop-hints-retain-gids.32,3299.ttf | Bin 5352 -> 1576 bytes
+ ...ojiMozilla.subset.drop-hints-retain-gids.32.ttf | Bin 4728 -> 912 bytes
+ ...lla.subset.drop-hints-retain-gids.3297,3299.ttf | Bin 5676 -> 1900 bytes
+ ...iMozilla.subset.drop-hints-retain-gids.3297.ttf | Bin 5148 -> 1372 bytes
+ ...iMozilla.subset.drop-hints-retain-gids.3299.ttf | Bin 5328 -> 1552 bytes
+ ...emojiMozilla.subset.drop-hints.32,3297,3299.ttf | Bin 5692 -> 1916 bytes
+ .../TwemojiMozilla.subset.drop-hints.32,3297.ttf   | Bin 5156 -> 1380 bytes
+ .../TwemojiMozilla.subset.drop-hints.32,3299.ttf   | Bin 5332 -> 1556 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.32.ttf   | Bin 4728 -> 912 bytes
+ .../TwemojiMozilla.subset.drop-hints.3297,3299.ttf | Bin 5672 -> 1896 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.3297.ttf | Bin 5132 -> 1356 bytes
+ .../colr/TwemojiMozilla.subset.drop-hints.3299.ttf | Bin 5308 -> 1532 bytes
+ ...mojiMozilla.subset.retain-gids.32,3297,3299.ttf | Bin 5712 -> 1936 bytes
+ .../TwemojiMozilla.subset.retain-gids.32,3297.ttf  | Bin 5192 -> 1416 bytes
+ .../TwemojiMozilla.subset.retain-gids.32,3299.ttf  | Bin 5372 -> 1596 bytes
+ .../colr/TwemojiMozilla.subset.retain-gids.32.ttf  | Bin 4748 -> 932 bytes
+ ...TwemojiMozilla.subset.retain-gids.3297,3299.ttf | Bin 5696 -> 1920 bytes
+ .../TwemojiMozilla.subset.retain-gids.3297.ttf     | Bin 5168 -> 1392 bytes
+ .../TwemojiMozilla.subset.retain-gids.3299.ttf     | Bin 5348 -> 1572 bytes
+ .../colr_with_components/colr-table.default.6B.ttf | Bin 4576 -> 4260 bytes
+ .../colr-table.drop-hints-retain-gids.6B.ttf       | Bin 5300 -> 4984 bytes
+ .../colr-table.drop-hints.6B.ttf                   | Bin 4576 -> 4260 bytes
+ .../colr-table.retain-gids.6B.ttf                  | Bin 5300 -> 4984 bytes
+ .../colrv1/TestCOLRv1.default.E000,E004.ttf        | Bin 0 -> 900 bytes
+ .../colrv1/TestCOLRv1.default.E003,E004.ttf        | Bin 0 -> 1000 bytes
+ .../expected/colrv1/TestCOLRv1.default.E004.ttf    | Bin 0 -> 744 bytes
+ .../TestCOLRv1.default.retain-all-codepoint.ttf    | Bin 0 -> 1444 bytes
+ ...TestCOLRv1.drop-hints-retain-gids.E000,E004.ttf | Bin 0 -> 984 bytes
+ ...TestCOLRv1.drop-hints-retain-gids.E003,E004.ttf | Bin 0 -> 1076 bytes
+ .../TestCOLRv1.drop-hints-retain-gids.E004.ttf     | Bin 0 -> 836 bytes
+ ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 0 -> 1444 bytes
+ .../colrv1/TestCOLRv1.drop-hints.E000,E004.ttf     | Bin 0 -> 900 bytes
+ .../colrv1/TestCOLRv1.drop-hints.E003,E004.ttf     | Bin 0 -> 1000 bytes
+ .../expected/colrv1/TestCOLRv1.drop-hints.E004.ttf | Bin 0 -> 744 bytes
+ .../TestCOLRv1.drop-hints.retain-all-codepoint.ttf | Bin 0 -> 1444 bytes
+ .../colrv1/TestCOLRv1.retain-gids.E000,E004.ttf    | Bin 0 -> 984 bytes
+ .../colrv1/TestCOLRv1.retain-gids.E003,E004.ttf    | Bin 0 -> 1076 bytes
+ .../colrv1/TestCOLRv1.retain-gids.E004.ttf         | Bin 0 -> 836 bytes
+ ...TestCOLRv1.retain-gids.retain-all-codepoint.ttf | Bin 0 -> 1444 bytes
+ test/subset/data/fonts/TestCOLRv1.ttf              | Bin 0 -> 1780 bytes
+ test/subset/data/tests/colrv1.tests                |  21 ++++
+ test/subset/subset_test_suite.py                   |   4 +
+ 60 files changed, 241 insertions(+), 16 deletions(-)
+
+commit 466e1fdf5dc2589fe134bec16a71d9ba9f0d035d
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed May 26 14:22:21 2021 -0700
+
+    [subset] remove unnessecary brackets.
+
+ src/hb-set.hh | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit 583237299d623b2e8afa36a4e334e396874da073
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed May 26 14:06:02 2021 -0700
+
+    Add cmp() method for major to page map.
+
+ src/hb-set.hh | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+commit 2c137045dc53c4ad678e18499cc556c00a0ce3cb
+Author: Garret Rieger <grieger at google.com>
+Date:   Thu May 20 16:22:04 2021 -0700
+
+    [subset] Optimize set iteration by caching the last found page map index.
+    
+    Reuse it if possible on consecutive calls to next(). Will signifcantly speed up cases where the entire set is iterated. In local testing iterating a very large set was 10x faster.
+
+ src/hb-set.hh | 37 ++++++++++++++++++++++++++++---------
+ 1 file changed, 28 insertions(+), 9 deletions(-)
+
+commit 1bb00cd54b2343971371d520fdda159d2e2a9018
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed May 26 14:18:32 2021 -0700
+
+    [subset] add num-iterations flag to util/hb-subset.
+
+ util/hb-subset.cc      | 6 +++++-
+ util/options-subset.cc | 3 +++
+ util/options.hh        | 2 ++
+ 3 files changed, 10 insertions(+), 1 deletion(-)
+
+commit 9e5738a86af1bc50480b0263664057b665b94cba
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed May 26 15:12:39 2021 -0600
+
+    [set] Okay, giving up on constexpr till C++14
+    
+    ../src/hb-set.hh:213:89: error: call to non-'constexpr' function 'const elt_t& hb_vector_size_t<elt_t, byte_size>::operator[](unsigned int) const [with elt_t = long long unsigned int; unsigned int byte_size = 64]'
+
+ src/hb-set.hh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit fac0bc78764a368a22623ba5b5a49ed803b0e915
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed May 26 14:44:58 2021 +0200
+
+    [meson] Drop more wraps we don’t use directly
+
+ Makefile.am                    |  5 ++---
+ subprojects/.gitignore         |  5 -----
+ subprojects/libffi.wrap        |  5 -----
+ subprojects/libpng.wrap        | 12 ------------
+ subprojects/pixman.wrap        |  6 ------
+ subprojects/proxy-libintl.wrap |  5 -----
+ subprojects/zlib.wrap          | 12 ------------
+ 7 files changed, 2 insertions(+), 48 deletions(-)
+
+commit 21d1034dc0320a43061df89a1fcb1f20c58f56a2
+Author: Khaled Hosny <khaled at aliftype.com>
+Date:   Wed May 26 14:31:05 2021 +0200
+
+    [meson] Remove expat.wrap that we don’t use directly
+    
+    Fixes https://github.com/harfbuzz/harfbuzz/issues/2987
+
+ Makefile.am            | 1 -
+ subprojects/.gitignore | 1 -
+ subprojects/expat.wrap | 9 ---------
+ 3 files changed, 11 deletions(-)
+
+commit 90fa558a5bfd9ac99dc8434810f50ef2b69014af
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed May 26 15:05:48 2021 -0600
+
+    [set] Another try at constexpr to make msvc happy
+
+ src/hb-set.hh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit bf5d4a6392de3d0d26a4d2175490532639631d4c
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed May 26 14:27:02 2021 -0600
+
+    [set] Add TODO
+
+ src/hb-set.hh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 11d03f1ff973bb1a0731cdf6302d1587185c347a
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed May 26 14:26:05 2021 -0600
+
+    [set] Mark a couple methods as constexpr
+
+ src/hb-set.hh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit d2829ad374a10957683b54f1d253df6653befd93
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed May 26 14:24:27 2021 -0600
+
+    [set] Refactor code into page_t::is_subset()
+
+ src/hb-set.hh | 18 ++++++++++++------
+ 1 file changed, 12 insertions(+), 6 deletions(-)
+
+commit e47e44a8583d9f74bd13172a6a0b084745f7d5fe
+Author: Behdad Esfahbod <behdad at behdad.org>
+Date:   Wed May 26 14:19:27 2021 -0600
+
+    [set] Whitespace
+
+ src/hb-set.hh | 15 ++-------------
+ 1 file changed, 2 insertions(+), 13 deletions(-)
+
+commit 2000f47ae539ff31c248626e4d142a3221522708
+Author: Kurt Kartaltepe <kkartaltepe at gmail.com>
+Date:   Wed May 19 00:34:09 2021 -0700
+
+    [set] Compute is_subset by comparing pages.
+    
+    Test subsets one page at a time instead of by codepoints. On my machine
+    this is about 250x faster than the previous implementation.
+
+ src/hb-set.hh       | 44 +++++++++++++++++++++++++++++++++++++-------
+ test/api/test-set.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 90 insertions(+), 7 deletions(-)
+
+commit 1dffb553613d8bcaa5440d27b411ae1ff22bf68b
+Author: Dominik Röttsches <drott at chromium.org>
+Date:   Tue May 18 12:31:14 2021 +0300
+
+    Chromium build fixes for C++ 17 warning and missing _remap_indexes
+    
+    Use class instead of typename, move _remap_indexes out of #ifndef.
+    
+    Fixes #2979
+
+ src/hb-ot-color-colrv1-closure.hh | 8 ++++----
+ src/hb-subset-plan.cc             | 2 +-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 89df3539966d7d544b49495a667ccebf94bb045c
+Author: Jonathan Kew <jfkthame at gmail.com>
+Date:   Thu May 13 11:45:32 2021 +0100
+
+    [aat] Add testcase for Apple Color Emoji couple-with-skin-tones sequence.
+
+ test/shaping/data/in-house/tests/macos.tests | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit bbc5fc373143b6a5f66b7e72eac42a9377c81d1e
+Author: Jonathan Kew <jfkthame at gmail.com>
+Date:   Thu May 13 11:39:09 2021 +0100
+
+    [aat] If shaping via morx, don't adjust mark positioning when zeroing widths.
+
+ src/hb-ot-shape.cc | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+commit 4f1e8d2bf702910e45d3d3756227abbb9d659093
+Author: Jonathan Kew <jfkthame at gmail.com>
+Date:   Wed May 5 11:11:43 2021 +0100
+
+    [aat] Update glyph properties from GDEF if available when doing a replacement.
+
+ src/hb-aat-layout-common.hh     |  4 ++++
+ src/hb-aat-layout-morx-table.hh | 17 +++++++++++++++++
+ src/hb-aat-layout.cc            |  7 ++++---
+ 3 files changed, 25 insertions(+), 3 deletions(-)
+
+commit 5e0ec33b3d9379b78084cd59a9ebed3fc583eed6
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed May 12 14:46:54 2021 -0700
+
+    Error when link width not in [2, 4]
+
+ src/hb-repacker.hh | 17 +++++++++++------
+ 1 file changed, 11 insertions(+), 6 deletions(-)
+
+commit b23f29bf05650134a9d398d03eb271840172ac9e
+Author: Qunxin Liu <qxliu at google.com>
+Date:   Sat Apr 17 09:59:45 2021 -0700
+
+    [subset] Add subset () method for COLRv1 Paint tables, BaseGlyphV1List and LayerV1List
+    
+    Also add support for Offset24 in serializer and repacker
+
+ src/hb-ot-color-colr-table.hh | 196 +++++++++++++++++++++++++++++++++++++++++-
+ src/hb-repacker.hh            |  16 ++--
+ src/hb-serialize.hh           |  17 ++--
+ 3 files changed, 216 insertions(+), 13 deletions(-)
+
+commit 413769bf8616c6b3cf420f35801bd19129155498
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed May 12 14:14:06 2021 -0700
+
+    Add hb-ot-color-colrv1-closure.hh to sources list.
+
+ src/Makefile.sources | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit de0eba20ed4fc38fb4bb81f8deab4a2e62187763
+Author: Garret Rieger <grieger at google.com>
+Date:   Wed May 12 14:05:34 2021 -0700
+
+    Remove array for visited_paint.
+
+ src/hb-ot-color-colr-table.hh | 12 +++++-------
+ 1 file changed, 5 insertions(+), 7 deletions(-)
+
+commit e59ffe54824ffefd97cd14c81b0778afb4d8a878
+Author: Qunxin Liu <qxliu at google.com>
+Date:   Thu Apr 1 12:01:19 2021 -0700
+
+    [subset] COLRv1 layer/palette indices closure
+
+ src/hb-ot-color-colr-table.hh     | 134 ++++++++++++++++++++++++++++++++++++++
+ src/hb-ot-color-colrv1-closure.hh | 101 ++++++++++++++++++++++++++++
+ src/hb-subset-plan.cc             |  12 ++++
+ src/hb-subset-plan.hh             |   4 ++
+ 4 files changed, 251 insertions(+)
+
+commit a08900b721fc8c5e26215dabe62c4124985d434d
+Author: Garret Rieger <grieger at google.com>
+Date:   Tue May 4 16:48:41 2021 -0700
+
+    [subset] fix failing colrv0 subsetting when font has composite glyphs.
+    
+    Composite glyph collection was happening along side colrv0 glyph collection which meant it was possible to miss grabbing the component glyphs for a glyph added by colrv0.
+
+ src/hb-subset-plan.cc                                   |  16 ++++++++++++----
+ test/subset/data/Makefile.am                            |   1 +
+ test/subset/data/Makefile.sources                       |   1 +
+ .../colr_with_components/colr-table.default.6B.ttf      | Bin 0 -> 4576 bytes
+ .../colr-table.drop-hints-retain-gids.6B.ttf            | Bin 0 -> 5300 bytes
+ .../colr_with_components/colr-table.drop-hints.6B.ttf   | Bin 0 -> 4576 bytes
+ .../colr_with_components/colr-table.retain-gids.6B.ttf  | Bin 0 -> 5300 bytes
+ test/subset/data/fonts/colr-table.ttf                   | Bin 0 -> 26952 bytes
+ test/subset/data/tests/colr_with_components.tests       |  11 +++++++++++
+ test/subset/meson.build                                 |   1 +
+ 10 files changed, 26 insertions(+), 4 deletions(-)
+
+commit b54d9b695a17afb86f022084e12d72bb4a199673
+Author: tstuefe <thomas.stuefe at gmail.com>
+Date:   Thu May 6 06:22:48 2021 +0200
+
+    start
+
+ src/hb-ot-shape-complex-use-machine.hh | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit b07b97d5d753ffb58cd5abcbc898d602f76b0f72
+Author: Garret Rieger <grieger at google.com>
+Date:   Mon Mar 29 10:39:38 2021 -0700
+
+    [subset] Add more Noto Nastaliq test cases.
+
+ ...Urdu-Bold.default.627,644,623,62D,644,627,645,2E.ttf | Bin 0 -> 11436 bytes
+ .../NotoNastaliqUrdu-Bold.default.627,644,62D,628.ttf   | Bin 0 -> 18288 bytes
+ .../NotoNastaliqUrdu-Bold.default.627,644.ttf           | Bin 0 -> 3568 bytes
+ ...aliqUrdu-Bold.default.633,645,627,621,20,644,627.ttf | Bin 0 -> 12408 bytes
+ .../NotoNastaliqUrdu-Bold.default.63A,64A,631.ttf       | Bin 0 -> 20408 bytes
+ ...-Bold.retain-gids.627,644,623,62D,644,627,645,2E.ttf | Bin 0 -> 18272 bytes
+ ...otoNastaliqUrdu-Bold.retain-gids.627,644,62D,628.ttf | Bin 0 -> 24416 bytes
+ .../NotoNastaliqUrdu-Bold.retain-gids.627,644,62D.ttf   | Bin 11532 -> 0 bytes
+ .../NotoNastaliqUrdu-Bold.retain-gids.627,644.ttf       | Bin 0 -> 9216 bytes
+ ...Urdu-Bold.retain-gids.633,645,627,621,20,644,627.ttf | Bin 0 -> 18212 bytes
+ .../NotoNastaliqUrdu-Bold.retain-gids.63A,64A,631.ttf   | Bin 0 -> 26628 bytes
+ test/subset/data/tests/layout.notonastaliqurdu.tests    |   7 ++++++-
+ 12 files changed, 6 insertions(+), 1 deletion(-)
+
 commit b37f03f16b39d397a626f097858e9ae550234ca0
 Author: Khaled Hosny <khaled at aliftype.com>
 Date:   Tue May 4 02:07:06 2021 +0200

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/INSTALL
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/INSTALL	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/INSTALL	2021-08-29 04:06:16 UTC (rev 60356)
@@ -1,8 +1,8 @@
 Installation Instructions
 *************************
 
-   Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
-Foundation, Inc.
+   Copyright (C) 1994-1996, 1999-2002, 2004-2017, 2020-2021 Free
+Software Foundation, Inc.
 
    Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
@@ -225,7 +225,7 @@
 
 and if that doesn't work, install pre-built binaries of GCC for HP-UX.
 
-   HP-UX 'make' updates targets which have the same time stamps as their
+   HP-UX 'make' updates targets which have the same timestamps as their
 prerequisites, which makes it generally unusable when shipped generated
 files such as 'configure' are involved.  Use GNU 'make' instead.
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am	2021-08-29 04:06:16 UTC (rev 60356)
@@ -19,13 +19,11 @@
 	replace-enum-strings.cmake \
 	meson.build \
 	meson_options.txt \
-	subprojects/expat.wrap \
+	subprojects/cairo.wrap \
 	subprojects/freetype2.wrap \
 	subprojects/glib.wrap \
-	subprojects/libffi.wrap \
-	subprojects/proxy-libintl.wrap \
-	subprojects/zlib.wrap \
 	subprojects/google-benchmark.wrap \
+	subprojects/ttf-parser.wrap \
 	perf/meson.build \
 	perf/perf-draw.hh \
 	perf/perf-extents.hh \

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/NEWS	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/NEWS	2021-08-29 04:06:16 UTC (rev 60356)
@@ -1,3 +1,39 @@
+Overview of changes leading to 2.9.0
+Wednesday, August 18, 2021
+History Repeats Itself (Afghanistan)
+====================================
+- Subsetter API is being stabilized, with the first stable API to happen in
+  3.0.0 release (https://github.com/harfbuzz/harfbuzz/issues/3078).
+- Support multiple variation axes with same tag, aka HOI.
+- The “coretext” testing shaper now passes font variations to CoreText.
+- hb-shape/hb-view does not break line at new lines unless text is read from
+  file.
+- hb-view and hb-subset has a --batch now, similar to hb-shape.
+- The --batch mode now uses ; as argument separator instead of : used previously.
+- The --batch in hb-shape does not expect 0th argument anymore. That is, the
+  lines read are interpreted as argv[1:], instead of argv[0:].
+- The --batch option has been undocumented. We are ready to document it; send
+  feedback if you find it useful.
+- hb-subset got arguments revamps. Added much-requested --gids-file, --glyphs,
+  --glyphs-file, --unicodes-file, supporting ranges in --unicodes.
+- Various bug fixes.
+
+Overview of changes leading to 2.8.2
+Tuesday, July 8, 2021
+====================================
+- Shaping LTR digits for RTL scripts now makes the native direction of the
+  digits LTR, applying shaping and positioning rules on the same glyph order as
+  Uniscribe. (Jonathan Kew, Khaled Hosny).
+- Subsetting COLR v1 and CPAL tables is now supported. (Garret Rieger, Qunxin Liu)
+- Various fixes and improvements to the subsetter. (Garret Rieger, Qunxin Liu, Behdad)
+- When applying morx table, mark glyph widths should not be zeroed. (Jonathan Kew)
+- GPOS is preferred over kerx, if GSUB was applied. (Behdad)
+- Regional_Indicator pairs are grouped together when clustering. (Behdad)
+- New API:
++hb_blob_create_or_fail()
++hb_blob_create_from_file_or_fail()
++hb_set_copy()
+
 Overview of changes leading to 2.8.1
 Tuesday, May 4, 2021
 ====================================

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/README
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/README	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/README	2021-08-29 04:06:16 UTC (rev 60356)
@@ -4,12 +4,12 @@
 
   http://harfbuzz.org/
 
-For license information, see https://github.com/harfbuzz/harfbuzz/blob/master/COPYING
+For license information, see https://github.com/harfbuzz/harfbuzz/blob/main/COPYING
 
-For build information, see https://github.com/harfbuzz/harfbuzz/blob/master/BUILD.md
+For build information, see https://github.com/harfbuzz/harfbuzz/blob/main/BUILD.md
 
-For custom configurations, see https://github.com/harfbuzz/harfbuzz/blob/master/CONFIG.md
+For custom configurations, see https://github.com/harfbuzz/harfbuzz/blob/main/CONFIG.md
 
-For test execution, see https://github.com/harfbuzz/harfbuzz/blob/master/TESTING.md
+For test execution, see https://github.com/harfbuzz/harfbuzz/blob/main/TESTING.md
 
 Documentation: https://harfbuzz.github.io

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/README.md
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/README.md	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/README.md	2021-08-29 04:06:16 UTC (rev 60356)
@@ -1,9 +1,9 @@
 [![Linux CI Status](https://github.com/harfbuzz/harfbuzz/workflows/linux-ci/badge.svg)](https://github.com/harfbuzz/harfbuzz/workflows/linux-ci/badge.svg)
-[![CircleCI Build Status](https://circleci.com/gh/harfbuzz/harfbuzz/tree/master.svg?style=svg)](https://circleci.com/gh/harfbuzz/harfbuzz/tree/master)
+[![CircleCI Build Status](https://circleci.com/gh/harfbuzz/harfbuzz/tree/main.svg?style=svg)](https://circleci.com/gh/harfbuzz/harfbuzz/tree/main)
 [![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)
+[![Codecov Code Coverage](https://codecov.io/gh/harfbuzz/harfbuzz/branch/main/graph/badge.svg)](https://codecov.io/gh/harfbuzz/harfbuzz)
 [![Coverals Code Coverage](https://img.shields.io/coveralls/harfbuzz/harfbuzz.svg)](https://coveralls.io/r/harfbuzz/harfbuzz)
 [![Packaging status](https://repology.org/badge/tiny-repos/harfbuzz.svg)](https://repology.org/project/harfbuzz/versions)
 [ABI Tracker](http://abi-laboratory.pro/tracker/timeline/harfbuzz/)

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md	2021-08-29 04:06:16 UTC (rev 60356)
@@ -1,44 +1,37 @@
-HarfBuzz release walk-through checklist:
+# HarfBuzz release walk-through checklist:
 
-1. Open gitk and review changes since last release.
+- [ ] Open gitk and review changes since last release.
 
-   * `git diff $(git describe | sed 's/-.*//').. src/*.h` prints all public API
-     changes.
+	- [ ] Print all public API changes:
+        `git diff $(git describe | sed 's/-.*//').. src/*.h`
 
-     Document them in NEWS.  All API and API semantic changes should be clearly
-     marked as API additions, API changes, or API deletions.  Document
-     deprecations.  Ensure all new API / deprecations are in listed correctly in
-     docs/harfbuzz-sections.txt.  If release added new API, add entry for new
-     API index at the end of docs/harfbuzz-docs.xml.
+    - [ ]  Document them in NEWS.
+        All API and API semantic changes should be clearly marked as API additions, API changes, or API deletions.
 
-     If there's a backward-incompatible API change (including deletions for API
-     used anywhere), that's a release blocker.  Do NOT release.
+    - [ ] Document deprecations.
+        Ensure all new API / deprecations are in listed correctly in docs/harfbuzz-sections.txt.
+        If release added new API, add entry for new API index at the end of docs/harfbuzz-docs.xml.
 
-2. Based on severity of changes, decide whether it's a minor or micro release
-   number bump,
+     If there's a backward-incompatible API change (including deletions for API used anywhere), that's a release blocker.
+     Do NOT release.
 
-3. Search for REPLACEME on the repository and replace it with the chosen version
-   for the release.
+- [ ] Based on severity of changes, decide whether it's a minor or micro release number bump.
 
-4. Make sure you have correct date and new version at the top of NEWS file.
+- [ ] Search for REPLACEME on the repository and replace it with the chosen version for the release.
 
-5. Bump version in line 3 of meson.build and configure.ac.
-   Do a `meson test -Cbuild` so it both checks the tests and updates
-   hb-version.h (use `git diff` to see if is really updated).
+- [ ] Make sure you have correct date and new version at the top of NEWS file.
 
-6. Commit NEWS, meson.build, configure.ac, and src/hb-version.h, as well as any REPLACEME
-   changes you made.  The commit message is simply the release number.  Eg. "1.4.7"
+- [ ] Bump version in line 3 of meson.build and configure.ac.
 
-7. Do a `meson dist -Cbuild` that runs the tests against the latest commited changes.
-   If doesn't pass, something fishy is going on, reset the repo and start over.
+- [ ] Do a `meson test -Cbuild` so it both checks the tests and updates hb-version.h (use `git diff` to see if is really updated).
 
-8. Tag the release and sign it: Eg. "git tag -s 1.4.7 -m 1.4.7".  Enter your
-   GPG password.
+- [ ] Commit NEWS, meson.build, configure.ac, and src/hb-version.h, as well as any REPLACEME changes you made.
+        The commit message is simply the release number, e. g. "1.4.7"
 
-9. Build win32 bundle.  See [README.mingw.md](README.mingw.md).
+- [ ] Do a `meson dist -Cbuild` that runs the tests against the latest commited changes.
+   If doesn't pass, something fishy is going on, reset the repo and start over.
 
-10. Push the commit and tag out: "git push --follow-tags".
+- [ ] Tag the release and sign it: e.g. `git tag -s 1.4.7 -m 1.4.7`.
+	  Enter your GPG password.
 
-11. Go to GitHub release page [here](https://github.com/harfbuzz/harfbuzz/releases),
-    edit the tag, upload win32 bundle and NEWS entry and save.
-    No need to upload source tarball as we rely to GitHub's automatic tar.gz generation.
+- [ ] Push the commit and tag out: `git push --follow-tags`.

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/config.h.in
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/config.h.in	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/config.h.in	2021-08-29 04:06:16 UTC (rev 60356)
@@ -69,9 +69,6 @@
 /* Define to 1 if you have the `isatty' function. */
 #undef HAVE_ISATTY
 
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
 /* Define to 1 if you have the `mmap' function. */
 #undef HAVE_MMAP
 
@@ -90,6 +87,9 @@
 /* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
 
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
 /* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H
 
@@ -148,14 +148,11 @@
    your system. */
 #undef PTHREAD_CREATE_JOINABLE
 
-/* Define to 1 if you have the ANSI C header files. */
+/* Define to 1 if all of the C90 standard headers exist (not just the ones
+   required in a freestanding environment). This macro is provided for
+   backward compatibility; new code need not use it. */
 #undef STDC_HEADERS
 
-/* Enable large inode numbers on Mac OS X 10.5.  */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif
-
 /* Number of bits in a file offset, on hosts where this is settable. */
 #undef _FILE_OFFSET_BITS
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac	2021-08-29 04:06:16 UTC (rev 60356)
@@ -1,6 +1,6 @@
 AC_PREREQ([2.64])
 AC_INIT([HarfBuzz],
-        [2.8.1],
+        [2.9.0],
         [https://github.com/harfbuzz/harfbuzz/issues/new],
         [harfbuzz],
         [http://harfbuzz.org/])
@@ -425,11 +425,11 @@
 test/Makefile
 test/api/Makefile
 test/fuzzing/Makefile
-test/shaping/Makefile
-test/shaping/data/Makefile
-test/shaping/data/aots/Makefile
-test/shaping/data/in-house/Makefile
-test/shaping/data/text-rendering-tests/Makefile
+test/shape/Makefile
+test/shape/data/Makefile
+test/shape/data/aots/Makefile
+test/shape/data/in-house/Makefile
+test/shape/data/text-rendering-tests/Makefile
 test/subset/Makefile
 test/subset/data/Makefile
 test/subset/data/repack_tests/Makefile

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/meson.build
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/meson.build	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/meson.build	2021-08-29 04:06:16 UTC (rev 60356)
@@ -1,6 +1,6 @@
 project('harfbuzz', 'c', 'cpp',
   meson_version: '>= 0.47.0',
-  version: '2.8.1',
+  version: '2.9.0',
   default_options: [
     'cpp_eh=none',          # Just to support msvc, we are passing -fno-rtti also anyway
     'cpp_rtti=false',       # Just to support msvc, we are passing -fno-exceptions also anyway

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am	2021-08-29 04:06:16 UTC (rev 60356)
@@ -410,6 +410,10 @@
 	MAKE="$(MAKE) $(AM_MAKEFLAGS)" \
 	HBSOURCES="$(HBSOURCES)" \
 	HBHEADERS="$(HBHEADERS)" \
+	LDD="$(LDD)" \
+	NM="$(NM)" \
+	OBJDUMP="$(OBJDUMP)" \
+	OTOOL="$(OTOOL)" \
 	$(NULL)
 
 if HAVE_INTROSPECTION

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources	2021-08-29 04:06:16 UTC (rev 60356)
@@ -47,6 +47,8 @@
 	hb-map.cc \
 	hb-map.hh \
 	hb-meta.hh \
+	hb-ms-feature-ranges.cc \
+	hb-ms-feature-ranges.hh \
 	hb-mutex.hh \
 	hb-null.hh \
 	hb-number.cc \
@@ -256,6 +258,8 @@
 	hb-number.hh \
 	hb-ot-cff1-table.cc \
 	hb-ot-cff2-table.cc \
+	hb-ot-color-colrv1-closure.hh \
+	hb-ot-post-table-v2subset.hh \
 	hb-static.cc \
 	hb-subset-cff-common.cc \
 	hb-subset-cff-common.hh \

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/check-libstdc++.py
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/check-libstdc++.py	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/check-libstdc++.py	2021-08-29 04:06:16 UTC (rev 60356)
@@ -6,13 +6,11 @@
 
 libs = os.getenv ('libs', '.libs')
 
-ldd = shutil.which ('ldd')
-if ldd:
-	ldd = [ldd]
-else:
-	ldd = shutil.which ('otool')
-	if ldd:
-		ldd = [ldd, '-L'] # otool -L
+ldd = os.getenv ('LDD', shutil.which ('ldd'))
+if not ldd:
+	otool = os.getenv ('OTOOL', shutil.which ('otool'))
+	if otool:
+		ldd = otool + ' -L'
 	else:
 		print ('check-libstdc++.py: \'ldd\' not found; skipping test')
 		sys.exit (77)
@@ -27,7 +25,7 @@
 		if not os.path.exists (so): continue
 
 		print ('Checking that we are not linking to libstdc++ or libc++ in %s' % so)
-		ldd_result = subprocess.check_output (ldd + [so])
+		ldd_result = subprocess.check_output (ldd.split() + [so])
 		if (b'libstdc++' in ldd_result) or (b'libc++' in ldd_result):
 			print ('Ouch, %s is linked to libstdc++ or libc++' % so)
 			stat = 1

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/check-static-inits.py
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/check-static-inits.py	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/check-static-inits.py	2021-08-29 04:06:16 UTC (rev 60356)
@@ -5,7 +5,7 @@
 builddir = os.getenv ('builddir', os.path.dirname (__file__))
 libs = os.getenv ('libs', '.libs')
 
-objdump = shutil.which ('objdump')
+objdump = os.getenv ('OBJDUMP', shutil.which ('objdump'))
 if not objdump:
 	print ('check-static-inits.py: \'ldd\' not found; skipping test')
 	sys.exit (77)
@@ -20,10 +20,21 @@
 	sys.exit (77)
 
 stat = 0
+tested = 0
 
 for obj in OBJS:
-	result = subprocess.check_output ([objdump, '-t', obj]).decode ('utf-8')
+	result = subprocess.run(objdump.split () + ['-t', obj], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 
+	if result.returncode:
+		if result.stderr.find (b'not recognized') != -1:
+			# https://github.com/harfbuzz/harfbuzz/issues/3019
+			print ('objdump %s returned "not recognized", skipping' % obj)
+			continue
+		print ('objdump %s returned error:\n%s' % (obj, result.stderr.decode ('utf-8')))
+		stat = 2
+
+	result = result.stdout.decode ('utf-8')
+
 	# Checking that no object file has static initializers
 	for l in re.findall (r'^.*\.[cd]tors.*$', result, re.MULTILINE):
 		if not re.match (r'.*\b0+\b', l):
@@ -35,4 +46,6 @@
 		print ('Ouch, %s has lazy static C++ constructors/destructors or other such stuff' % obj)
 		stat = 1
 
-sys.exit (stat)
+	tested += 1
+
+sys.exit (stat if tested else 77)

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/check-symbols.py
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/check-symbols.py	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/check-symbols.py	2021-08-29 04:06:16 UTC (rev 60356)
@@ -9,9 +9,10 @@
 
 IGNORED_SYMBOLS = '|'.join(['_fini', '_init', '_fdata', '_ftext', '_fbss',
 	'__bss_start', '__bss_start__', '__bss_end__', '_edata', '_end', '_bss_end__',
-	'__end__', '__gcov_.*', 'llvm_.*', 'flush_fn_list', 'writeout_fn_list', 'mangle_path'])
+	'__end__', '__gcov_.*', 'llvm_.*', 'flush_fn_list', 'writeout_fn_list', 'mangle_path',
+	'lprofDirMode', 'reset_fn_list'])
 
-nm = shutil.which ('nm')
+nm = os.getenv ('NM', shutil.which ('nm'))
 if not nm:
 	print ('check-symbols.py: \'nm\' not found; skipping test')
 	sys.exit (77)
@@ -30,8 +31,8 @@
 		symprefix = '_' if suffix == 'dylib' else ''
 
 		EXPORTED_SYMBOLS = [s.split ()[2]
-							for s in re.findall (r'^.+ [BCDGIRST] .+$', subprocess.check_output ([nm, so]).decode ('utf-8'), re.MULTILINE)
-							if not re.match (r'.* %s(%s)\b' % (symprefix, IGNORED_SYMBOLS), s)]
+				    for s in re.findall (r'^.+ [BCDGIRST] .+$', subprocess.check_output (nm.split() + [so]).decode ('utf-8'), re.MULTILINE)
+				    if not re.match (r'.* %s(%s)\b' % (symprefix, IGNORED_SYMBOLS), s)]
 
 		# run again c++flit also if is available
 		if cxxflit:
@@ -67,7 +68,7 @@
 			tested = True
 
 if not tested:
-	print ('check-symbols.sh: no shared libraries found; skipping test')
+	print ('check-symbols.py: no shared libraries found; skipping test')
 	sys.exit (77)
 
 sys.exit (stat)

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-emoji-table.py
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-emoji-table.py	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-emoji-table.py	2021-08-29 04:06:16 UTC (rev 60356)
@@ -1,9 +1,10 @@
 #!/usr/bin/env python3
 
-"""usage: ./gen-emoji-table.py emoji-data.txt
+"""usage: ./gen-emoji-table.py emoji-data.txt emoji-test.txt
 
 Input file:
 * https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-data.txt
+* https://www.unicode.org/Public/emoji/latest/emoji-test.txt
 """
 
 import sys
@@ -10,7 +11,7 @@
 from collections import OrderedDict
 import packTab
 
-if len (sys.argv) != 2:
+if len (sys.argv) != 3:
 	sys.exit (__doc__)
 
 f = open(sys.argv[1])
@@ -61,7 +62,7 @@
 
 	arr = dict()
 	for start,end in s:
-		for i in range(start,end):
+		for i in range(start, end + 1):
 			arr[i] = 1
 
 	sol = packTab.pack_table(arr, 0, compression=3)
@@ -74,3 +75,24 @@
 print ("#endif /* HB_UNICODE_EMOJI_TABLE_HH */")
 print ()
 print ("/* == End of generated table == */")
+
+
+# Generate test file.
+sequences = []
+with open(sys.argv[2]) as f:
+    for line in f.readlines():
+        if "#" in line:
+            line = line[:line.index("#")]
+        if ";" in line:
+            line = line[:line.index(";")]
+        line = line.strip()
+        line = line.split(" ")
+        if len(line) < 2:
+            continue
+        sequences.append(line)
+
+with open("../test/shaping/data/in-house/tests/emoji-clusters.tests", "w") as f:
+    for sequence in sequences:
+        f.write("../fonts/AdobeBlank2.ttf:--no-glyph-names --no-positions --font-funcs=ot")
+        f.write(":" + ",".join(sequence))
+        f.write(":[" + "|".join("1=0" for c in sequence) + "]\n")

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ragel-artifacts.py
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ragel-artifacts.py	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ragel-artifacts.py	2021-08-29 04:06:16 UTC (rev 60356)
@@ -4,7 +4,7 @@
 
 import os, os.path, sys, subprocess, shutil
 
-ragel = shutil.which ('ragel')
+ragel = os.getenv ('RAGEL', shutil.which ('ragel'))
 if not ragel:
 	sys.exit ('You have to install ragel if you are going to develop HarfBuzz itself')
 
@@ -19,7 +19,7 @@
 shutil.copy (INPUT, outdir)
 rl = os.path.basename (INPUT)
 hh = rl.replace ('.rl', '.hh')
-subprocess.Popen ([ragel, '-e', '-F1', '-o', hh, rl], cwd=outdir).wait ()
+subprocess.Popen (ragel.split() + ['-e', '-F1', '-o', hh, rl], cwd=outdir).wait ()
 
 # copy it also to src/
 shutil.copyfile (os.path.join (outdir, hh), os.path.join (CURRENT_SOURCE_DIR, hh))

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py	2021-08-29 04:06:16 UTC (rev 60356)
@@ -18,7 +18,7 @@
 if len (sys.argv) != 8:
 	sys.exit (__doc__)
 
-BLACKLISTED_BLOCKS = [
+DISABLED_BLOCKS = [
 	'Samaritan',
 	'Thai',
 	'Lao',
@@ -137,7 +137,7 @@
 		if not u in combined:
 			combined[u] = list (defaults)
 		combined[u][i] = v
-combined = {k:v for k,v in combined.items() if v[4] not in BLACKLISTED_BLOCKS}
+combined = {k:v for k,v in combined.items() if v[4] not in DISABLED_BLOCKS}
 data = combined
 del combined
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -9,6 +9,7 @@
 #include "hb-fallback-shape.cc"
 #include "hb-font.cc"
 #include "hb-map.cc"
+#include "hb-ms-feature-ranges.cc"
 #include "hb-number.cc"
 #include "hb-ot-cff1-table.cc"
 #include "hb-ot-cff2-table.cc"

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -30,6 +30,9 @@
 #include "hb-aat-layout.hh"
 #include "hb-open-type.hh"
 
+namespace OT {
+struct GDEF;
+};
 
 namespace AAT {
 
@@ -863,6 +866,7 @@
   hb_buffer_t *buffer;
   hb_sanitize_context_t sanitizer;
   const ankr *ankr_table;
+  const OT::GDEF *gdef_table;
 
   /* Unused. For debug tracing only. */
   unsigned int lookup_index;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -30,6 +30,7 @@
 #include "hb-open-type.hh"
 #include "hb-aat-layout-common.hh"
 #include "hb-ot-layout-common.hh"
+#include "hb-ot-layout-gdef-table.hh"
 #include "hb-aat-map.hh"
 
 /*
@@ -215,7 +216,9 @@
 			     hb_aat_apply_context_t *c_) :
 	ret (false),
 	c (c_),
+	gdef (*c->gdef_table),
 	mark_set (false),
+	has_glyph_classes (gdef.has_glyph_classes ()),
 	mark (0),
 	table (table_),
 	subs (table+table->substitutionTables) {}
@@ -263,6 +266,9 @@
       {
 	buffer->unsafe_to_break (mark, hb_min (buffer->idx + 1, buffer->len));
 	buffer->info[mark].codepoint = *replacement;
+	if (has_glyph_classes)
+	  _hb_glyph_info_set_glyph_props (&buffer->info[mark],
+					  gdef.get_glyph_props (*replacement));
 	ret = true;
       }
 
@@ -287,6 +293,9 @@
       if (replacement)
       {
 	buffer->info[idx].codepoint = *replacement;
+	if (has_glyph_classes)
+	  _hb_glyph_info_set_glyph_props (&buffer->info[idx],
+					  gdef.get_glyph_props (*replacement));
 	ret = true;
       }
 
@@ -301,7 +310,9 @@
     bool ret;
     private:
     hb_aat_apply_context_t *c;
+    const OT::GDEF &gdef;
     bool mark_set;
+    bool has_glyph_classes;
     unsigned int mark;
     const ContextualSubtable *table;
     const UnsizedListOfOffset16To<Lookup<HBGlyphID>, HBUINT, false> &subs;
@@ -599,6 +610,9 @@
   {
     TRACE_APPLY (this);
 
+    const OT::GDEF &gdef (*c->gdef_table);
+    bool has_glyph_classes = gdef.has_glyph_classes ();
+
     bool ret = false;
     unsigned int num_glyphs = c->face->get_num_glyphs ();
 
@@ -610,6 +624,9 @@
       if (replacement)
       {
 	info[i].codepoint = *replacement;
+	if (has_glyph_classes)
+	  _hb_glyph_info_set_glyph_props (&info[i],
+					  gdef.get_glyph_props (*replacement));
 	ret = true;
       }
     }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -55,6 +55,7 @@
 						       buffer (buffer_),
 						       sanitizer (),
 						       ankr_table (&Null (AAT::ankr)),
+						       gdef_table (face->table.GDEF->table),
 						       lookup_index (0)
 {
   sanitizer.init (blob);
@@ -79,7 +80,7 @@
  * @short_description: Apple Advanced Typography Layout
  * @include: hb-aat.h
  *
- * Functions for querying AAT Layout features in the font face. 
+ * Functions for querying AAT Layout features in the font face.
  *
  * HarfBuzz supports all of the AAT tables used to implement shaping. Other
  * AAT tables and their associated features are not supported.
@@ -172,13 +173,13 @@
   {HB_TAG ('z','e','r','o'), HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS,      HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_ON,                HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_OFF},
 };
 
-/** 
+/**
  * hb_aat_layout_find_feature_mapping:
  * @tag: The requested #hb_tag_t feature tag
  *
  * Fetches the AAT feature-and-selector combination that corresponds
  * to a given OpenType feature tag.
- *  
+ *
  * Return value: the AAT features and selectors corresponding to the
  * OpenType feature tag queried
  *
@@ -248,7 +249,9 @@
   if (morx.has_data ())
   {
     AAT::hb_aat_apply_context_t c (plan, font, buffer, morx_blob);
+    if (!buffer->message (font, "start table morx")) return;
     morx.apply (&c);
+    (void) buffer->message (font, "end table morx");
     return;
   }
 
@@ -257,7 +260,9 @@
   if (mort.has_data ())
   {
     AAT::hb_aat_apply_context_t c (plan, font, buffer, mort_blob);
+    if (!buffer->message (font, "start table mort")) return;
     mort.apply (&c);
+    (void) buffer->message (font, "end table mort");
     return;
   }
 }
@@ -313,8 +318,10 @@
   const AAT::kerx& kerx = *kerx_blob->as<AAT::kerx> ();
 
   AAT::hb_aat_apply_context_t c (plan, font, buffer, kerx_blob);
+  if (!buffer->message (font, "start table kerx")) return;
   c.set_ankr_table (font->face->table.ankr.get ());
   kerx.apply (&c);
+  (void) buffer->message (font, "end table kerx");
 }
 
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -760,6 +760,14 @@
 #define ARRAY_LENGTH_CONST(__array) ((signed int) (sizeof (__array) / sizeof (__array[0])))
 
 
+static inline void *
+hb_memcpy (void *__restrict dst, const void *__restrict src, size_t len)
+{
+  /* It's illegal to pass 0 as size to memcpy. */
+  if (unlikely (!len)) return dst;
+  return memcpy (dst, src, len);
+}
+
 static inline int
 hb_memcmp (const void *a, const void *b, unsigned int len)
 {

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-array.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-array.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-array.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -36,6 +36,14 @@
 template <typename Type>
 struct hb_sorted_array_t;
 
+enum hb_not_found_t
+{
+  HB_NOT_FOUND_DONT_STORE,
+  HB_NOT_FOUND_STORE,
+  HB_NOT_FOUND_STORE_CLOSEST,
+};
+
+
 template <typename Type>
 struct hb_array_t : hb_iter_with_fallback_t<hb_array_t<Type>, Type&>
 {
@@ -139,7 +147,9 @@
     return lfind (x, &i) ? &this->arrayZ[i] : not_found;
   }
   template <typename T>
-  bool lfind (const T &x, unsigned *pos = nullptr) const
+  bool lfind (const T &x, unsigned *pos = nullptr,
+	      hb_not_found_t not_found = HB_NOT_FOUND_DONT_STORE,
+	      unsigned int to_store = (unsigned int) -1) const
   {
     for (unsigned i = 0; i < length; ++i)
       if (hb_equal (x, this->arrayZ[i]))
@@ -149,6 +159,22 @@
 	return true;
       }
 
+    if (pos)
+    {
+      switch (not_found)
+      {
+	case HB_NOT_FOUND_DONT_STORE:
+	  break;
+
+	case HB_NOT_FOUND_STORE:
+	  *pos = to_store;
+	  break;
+
+	case HB_NOT_FOUND_STORE_CLOSEST:
+	  *pos = length;
+	  break;
+      }
+    }
     return false;
   }
 
@@ -231,9 +257,9 @@
 	&& (unsigned int) (arrayZ + length - (const char *) p) >= size;
   }
 
-  /* Only call if you allocated the underlying array using malloc() or similar. */
-  void free ()
-  { ::free ((void *) arrayZ); arrayZ = nullptr; length = 0; }
+  /* Only call if you allocated the underlying array using hb_malloc() or similar. */
+  void fini ()
+  { hb_free ((void *) arrayZ); arrayZ = nullptr; length = 0; }
 
   template <typename hb_serialize_context_t>
   hb_array_t copy (hb_serialize_context_t *c) const
@@ -266,13 +292,6 @@
 hb_array (T (&array_)[length_])
 { return hb_array_t<T> (array_); }
 
-enum hb_bfind_not_found_t
-{
-  HB_BFIND_NOT_FOUND_DONT_STORE,
-  HB_BFIND_NOT_FOUND_STORE,
-  HB_BFIND_NOT_FOUND_STORE_CLOSEST,
-};
-
 template <typename Type>
 struct hb_sorted_array_t :
 	hb_iter_t<hb_sorted_array_t<Type>, Type&>,
@@ -323,7 +342,7 @@
   }
   template <typename T>
   bool bfind (const T &x, unsigned int *i = nullptr,
-	      hb_bfind_not_found_t not_found = HB_BFIND_NOT_FOUND_DONT_STORE,
+	      hb_not_found_t not_found = HB_NOT_FOUND_DONT_STORE,
 	      unsigned int to_store = (unsigned int) -1) const
   {
     unsigned pos;
@@ -339,14 +358,14 @@
     {
       switch (not_found)
       {
-	case HB_BFIND_NOT_FOUND_DONT_STORE:
+	case HB_NOT_FOUND_DONT_STORE:
 	  break;
 
-	case HB_BFIND_NOT_FOUND_STORE:
+	case HB_NOT_FOUND_STORE:
 	  *i = to_store;
 	  break;
 
-	case HB_BFIND_NOT_FOUND_STORE_CLOSEST:
+	case HB_NOT_FOUND_STORE_CLOSEST:
 	  *i = pos;
 	  break;
       }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-bimap.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-bimap.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-bimap.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -58,10 +58,15 @@
 
   void set (hb_codepoint_t lhs, hb_codepoint_t rhs)
   {
+    if (in_error ()) return;
     if (unlikely (lhs == HB_MAP_VALUE_INVALID)) return;
     if (unlikely (rhs == HB_MAP_VALUE_INVALID)) { del (lhs); return; }
+
     forw_map.set (lhs, rhs);
+    if (in_error ()) return;
+
     back_map.set (rhs, lhs);
+    if (in_error ()) forw_map.del (lhs);
   }
 
   hb_codepoint_t get (hb_codepoint_t lhs) const { return forw_map.get (lhs); }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -72,14 +72,52 @@
 		void              *user_data,
 		hb_destroy_func_t  destroy)
 {
+  if (!length)
+  {
+    if (destroy)
+      destroy (user_data);
+    return hb_blob_get_empty ();
+  }
+
+  hb_blob_t *blob = hb_blob_create_or_fail (data, length, mode,
+					    user_data, destroy);
+  return likely (blob) ? blob : hb_blob_get_empty ();
+}
+
+/**
+ * hb_blob_create_or_fail: (skip)
+ * @data: Pointer to blob data.
+ * @length: Length of @data in bytes.
+ * @mode: Memory mode for @data.
+ * @user_data: Data parameter to pass to @destroy.
+ * @destroy: (nullable): Callback to call when @data is not needed anymore.
+ *
+ * Creates a new "blob" object wrapping @data.  The @mode parameter is used
+ * to negotiate ownership and lifecycle of @data.
+ *
+ * Note that this function returns a freshly-allocated empty blob even if @length
+ * is zero. This is in contrast to hb_blob_create(), which returns the singleton
+ * empty blob (as returned by hb_blob_get_empty()) if @length is zero.
+ *
+ * Return value: New blob, or %NULL if failed.  Destroy with hb_blob_destroy().
+ *
+ * Since: 2.8.2
+ **/
+hb_blob_t *
+hb_blob_create_or_fail (const char        *data,
+			unsigned int       length,
+			hb_memory_mode_t   mode,
+			void              *user_data,
+			hb_destroy_func_t  destroy)
+{
   hb_blob_t *blob;
 
-  if (!length ||
-      length >= 1u << 31 ||
-      !(blob = hb_object_create<hb_blob_t> ())) {
+  if (length >= 1u << 31 ||
+      !(blob = hb_object_create<hb_blob_t> ()))
+  {
     if (destroy)
       destroy (user_data);
-    return hb_blob_get_empty ();
+    return nullptr;
   }
 
   blob->data = data;
@@ -91,9 +129,10 @@
 
   if (blob->mode == HB_MEMORY_MODE_DUPLICATE) {
     blob->mode = HB_MEMORY_MODE_READONLY;
-    if (!blob->try_make_writable ()) {
+    if (!blob->try_make_writable ())
+    {
       hb_blob_destroy (blob);
-      return hb_blob_get_empty ();
+      return nullptr;
     }
   }
 
@@ -226,7 +265,7 @@
 
   blob->fini_shallow ();
 
-  free (blob);
+  hb_free (blob);
 }
 
 /**
@@ -452,7 +491,7 @@
 
   char *new_data;
 
-  new_data = (char *) malloc (this->length);
+  new_data = (char *) hb_malloc (this->length);
   if (unlikely (!new_data))
     return false;
 
@@ -463,7 +502,7 @@
   this->mode = HB_MEMORY_MODE_WRITABLE;
   this->data = new_data;
   this->user_data = new_data;
-  this->destroy = free;
+  this->destroy = hb_free;
 
   return true;
 }
@@ -517,7 +556,7 @@
   assert (0); // If we don't have mmap we shouldn't reach here
 #endif
 
-  free (file);
+  hb_free (file);
 }
 #endif
 
@@ -528,7 +567,7 @@
   size_t name_len = strlen (file_name);
   size_t len = name_len + sizeof (_PATH_RSRCFORKSPEC);
 
-  char *rsrc_name = (char *) malloc (len);
+  char *rsrc_name = (char *) hb_malloc (len);
   if (unlikely (!rsrc_name)) return -1;
 
   strncpy (rsrc_name, file_name, name_len);
@@ -536,7 +575,7 @@
 	   sizeof (_PATH_RSRCFORKSPEC) - 1);
 
   int fd = open (rsrc_name, O_RDONLY | O_BINARY, 0);
-  free (rsrc_name);
+  hb_free (rsrc_name);
 
   if (fd != -1)
   {
@@ -561,7 +600,8 @@
  * Creates a new blob containing the data from the
  * specified binary font file.
  *
- * Returns: An #hb_blob_t pointer with the content of the file
+ * Returns: An #hb_blob_t pointer with the content of the file,
+ * or hb_blob_get_empty() if failed.
  *
  * Since: 1.7.7
  **/
@@ -568,10 +608,29 @@
 hb_blob_t *
 hb_blob_create_from_file (const char *file_name)
 {
+  hb_blob_t *blob = hb_blob_create_from_file_or_fail (file_name);
+  return likely (blob) ? blob : hb_blob_get_empty ();
+}
+
+/**
+ * hb_blob_create_from_file_or_fail:
+ * @file_name: A font filename
+ *
+ * Creates a new blob containing the data from the
+ * specified binary font file.
+ *
+ * Returns: An #hb_blob_t pointer with the content of the file,
+ * or %NULL if failed.
+ *
+ * Since: 2.8.2
+ **/
+hb_blob_t *
+hb_blob_create_from_file_or_fail (const char *file_name)
+{
   /* Adopted from glib's gmappedfile.c with Matthias Clasen and
      Allison Lortie permission but changed a lot to suit our need. */
 #if defined(HAVE_MMAP) && !defined(HB_NO_MMAP)
-  hb_mapped_file_t *file = (hb_mapped_file_t *) calloc (1, sizeof (hb_mapped_file_t));
+  hb_mapped_file_t *file = (hb_mapped_file_t *) hb_calloc (1, sizeof (hb_mapped_file_t));
   if (unlikely (!file)) return hb_blob_get_empty ();
 
   int fd = open (file_name, O_RDONLY | O_BINARY, 0);
@@ -601,22 +660,22 @@
 
   close (fd);
 
-  return hb_blob_create (file->contents, file->length,
-			 HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE, (void *) file,
-			 (hb_destroy_func_t) _hb_mapped_file_destroy);
+  return hb_blob_create_or_fail (file->contents, file->length,
+				 HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE, (void *) file,
+				 (hb_destroy_func_t) _hb_mapped_file_destroy);
 
 fail:
   close (fd);
 fail_without_close:
-  free (file);
+  hb_free (file);
 
 #elif defined(_WIN32) && !defined(HB_NO_MMAP)
-  hb_mapped_file_t *file = (hb_mapped_file_t *) calloc (1, sizeof (hb_mapped_file_t));
+  hb_mapped_file_t *file = (hb_mapped_file_t *) hb_calloc (1, sizeof (hb_mapped_file_t));
   if (unlikely (!file)) return hb_blob_get_empty ();
 
   HANDLE fd;
   unsigned int size = strlen (file_name) + 1;
-  wchar_t * wchar_file_name = (wchar_t *) malloc (sizeof (wchar_t) * size);
+  wchar_t * wchar_file_name = (wchar_t *) hb_malloc (sizeof (wchar_t) * size);
   if (unlikely (!wchar_file_name)) goto fail_without_close;
   mbstowcs (wchar_file_name, file_name, size);
 #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
@@ -636,7 +695,7 @@
 		    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,
 		    nullptr);
 #endif
-  free (wchar_file_name);
+  hb_free (wchar_file_name);
 
   if (unlikely (fd == INVALID_HANDLE_VALUE)) goto fail_without_close;
 
@@ -661,14 +720,14 @@
   if (unlikely (!file->contents)) goto fail;
 
   CloseHandle (fd);
-  return hb_blob_create (file->contents, file->length,
-			 HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE, (void *) file,
-			 (hb_destroy_func_t) _hb_mapped_file_destroy);
+  return hb_blob_create_or_fail (file->contents, file->length,
+				 HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE, (void *) file,
+				 (hb_destroy_func_t) _hb_mapped_file_destroy);
 
 fail:
   CloseHandle (fd);
 fail_without_close:
-  free (file);
+  hb_free (file);
 
 #endif
 
@@ -675,8 +734,8 @@
   /* The following tries to read a file without knowing its size beforehand
      It's used as a fallback for systems without mmap or to read from pipes */
   unsigned long len = 0, allocated = BUFSIZ * 16;
-  char *data = (char *) malloc (allocated);
-  if (unlikely (!data)) return hb_blob_get_empty ();
+  char *data = (char *) hb_malloc (allocated);
+  if (unlikely (!data)) return nullptr;
 
   FILE *fp = fopen (file_name, "rb");
   if (unlikely (!fp)) goto fread_fail_without_close;
@@ -689,7 +748,7 @@
       /* Don't allocate and go more than ~536MB, our mmap reader still
 	 can cover files like that but lets limit our fallback reader */
       if (unlikely (allocated > (2 << 28))) goto fread_fail;
-      char *new_data = (char *) realloc (data, allocated);
+      char *new_data = (char *) hb_realloc (data, allocated);
       if (unlikely (!new_data)) goto fread_fail;
       data = new_data;
     }
@@ -706,13 +765,13 @@
   }
 	fclose (fp);
 
-  return hb_blob_create (data, len, HB_MEMORY_MODE_WRITABLE, data,
-			 (hb_destroy_func_t) free);
+  return hb_blob_create_or_fail (data, len, HB_MEMORY_MODE_WRITABLE, data,
+				 (hb_destroy_func_t) hb_free);
 
 fread_fail:
   fclose (fp);
 fread_fail_without_close:
-  free (data);
-  return hb_blob_get_empty ();
+  hb_free (data);
+  return nullptr;
 }
 #endif /* !HB_NO_OPEN */

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.h
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.h	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.h	2021-08-29 04:06:16 UTC (rev 60356)
@@ -91,8 +91,18 @@
 		hb_destroy_func_t  destroy);
 
 HB_EXTERN hb_blob_t *
+hb_blob_create_or_fail (const char        *data,
+			unsigned int       length,
+			hb_memory_mode_t   mode,
+			void              *user_data,
+			hb_destroy_func_t  destroy);
+
+HB_EXTERN hb_blob_t *
 hb_blob_create_from_file (const char *file_name);
 
+HB_EXTERN hb_blob_t *
+hb_blob_create_from_file_or_fail (const char *file_name);
+
 /* Always creates with MEMORY_MODE_READONLY.
  * Even if the parent blob is writable, we don't
  * want the user of the sub-blob to be able to

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -88,7 +88,7 @@
   const T * get () const { return b->as<T> (); }
   hb_blob_t * get_blob () const { return b.get_raw (); }
   unsigned int get_length () const { return b.get ()->length; }
-  void destroy () { hb_blob_destroy (b.get ()); b = nullptr; }
+  void destroy () { hb_blob_destroy (b.get_raw ()); b = nullptr; }
 
   private:
   hb_nonnull_ptr_t<hb_blob_t> b;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -96,14 +96,15 @@
  * As an optimization, both info and out_info may point to the
  * same piece of memory, which is owned by info.  This remains the
  * case as long as out_len doesn't exceed i at any time.
- * In that case, swap_buffers() is no-op and the glyph operations operate
- * mostly in-place.
+ * In that case, swap_buffers() is mostly no-op and the glyph operations
+ * operate mostly in-place.
  *
  * As soon as out_info gets longer than info, out_info is moved over
- * to an alternate buffer (which we reuse the pos buffer for!), and its
+ * to an alternate buffer (which we reuse the pos buffer for), and its
  * current contents (out_len entries) are copied to the new place.
+ *
  * This should all remain transparent to the user.  swap_buffers() then
- * switches info and out_info.
+ * switches info over to out_info and does housekeeping.
  */
 
 
@@ -136,8 +137,8 @@
   if (unlikely (hb_unsigned_mul_overflows (new_allocated, sizeof (info[0]))))
     goto done;
 
-  new_pos = (hb_glyph_position_t *) realloc (pos, new_allocated * sizeof (pos[0]));
-  new_info = (hb_glyph_info_t *) realloc (info, new_allocated * sizeof (info[0]));
+  new_pos = (hb_glyph_position_t *) hb_realloc (pos, new_allocated * sizeof (pos[0]));
+  new_info = (hb_glyph_info_t *) hb_realloc (info, new_allocated * sizeof (info[0]));
 
 done:
   if (unlikely (!new_pos || !new_info))
@@ -282,21 +283,12 @@
 
 
 void
-hb_buffer_t::remove_output ()
-{
-  have_output = false;
-  have_positions = false;
-
-  out_len = 0;
-  out_info = info;
-}
-
-void
 hb_buffer_t::clear_output ()
 {
   have_output = true;
   have_positions = false;
 
+  idx = 0;
   out_len = 0;
   out_info = info;
 }
@@ -316,29 +308,23 @@
 void
 hb_buffer_t::swap_buffers ()
 {
-  if (unlikely (!successful)) return;
+  assert (have_output);
 
   assert (idx <= len);
-  if (unlikely (!next_glyphs (len - idx))) return;
 
-  assert (have_output);
-  have_output = false;
+  if (unlikely (!successful || !next_glyphs (len - idx)))
+    goto reset;
 
   if (out_info != info)
   {
-    hb_glyph_info_t *tmp;
-    tmp = info;
+    pos = (hb_glyph_position_t *) info;
     info = out_info;
-    out_info = tmp;
-
-    pos = (hb_glyph_position_t *) out_info;
   }
-
-  unsigned int tmp;
-  tmp = len;
   len = out_len;
-  out_len = tmp;
 
+reset:
+  have_output = false;
+  out_len = 0;
   idx = 0;
 }
 
@@ -373,12 +359,11 @@
     /* This will blow in our face if memory allocation fails later
      * in this same lookup...
      *
-     * We used to shift with extra 32 items, instead of the 0 below.
+     * We used to shift with extra 32 items.
      * But that would leave empty slots in the buffer in case of allocation
-     * failures.  Setting to zero for now to avoid other problems (see
-     * comments in shift_forward().  This can cause O(N^2) behavior more
-     * severely than adding 32 empty slots can... */
-    if (unlikely (idx < count && !shift_forward (count + 0))) return false;
+     * failures.  See comments in shift_forward().  This can cause O(N^2)
+     * behavior more severely than adding 32 empty slots can... */
+    if (unlikely (idx < count && !shift_forward (count - idx))) return false;
 
     assert (idx >= count);
 
@@ -630,7 +615,7 @@
   HB_BUFFER_CONTENT_TYPE_INVALID,
   HB_SEGMENT_PROPERTIES_DEFAULT,
   false, /* successful */
-  true, /* have_output */
+  false, /* have_output */
   true  /* have_positions */
 
   /* Zero is good enough for everything else. */
@@ -717,14 +702,14 @@
 
   hb_unicode_funcs_destroy (buffer->unicode);
 
-  free (buffer->info);
-  free (buffer->pos);
+  hb_free (buffer->info);
+  hb_free (buffer->pos);
 #ifndef HB_NO_BUFFER_MESSAGE
   if (buffer->message_destroy)
     buffer->message_destroy (buffer->message_data);
 #endif
 
-  free (buffer);
+  hb_free (buffer);
 }
 
 /**
@@ -1363,6 +1348,11 @@
  * Returns @buffer glyph position array.  Returned pointer
  * is valid as long as @buffer contents are not modified.
  *
+ * If buffer did not have positions before, the positions will be
+ * initialized to zeros, unless this function is called from
+ * within a buffer message callback (see hb_buffer_set_message_func()),
+ * in which case %NULL is returned.
+ *
  * Return value: (transfer none) (array length=length):
  * The @buffer glyph position array.
  * The value valid as long as buffer has not been modified.
@@ -1373,12 +1363,17 @@
 hb_buffer_get_glyph_positions (hb_buffer_t  *buffer,
 			       unsigned int *length)
 {
+  if (length)
+    *length = buffer->len;
+
   if (!buffer->have_positions)
+  {
+    if (unlikely (buffer->message_depth))
+      return nullptr;
+
     buffer->clear_positions ();
+  }
 
-  if (length)
-    *length = buffer->len;
-
   return (hb_glyph_position_t *) buffer->pos;
 }
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -107,7 +107,7 @@
 
   unsigned int idx; /* Cursor into ->info and ->pos arrays */
   unsigned int len; /* Length of ->info and ->pos arrays */
-  unsigned int out_len; /* Length of ->out array if have_output */
+  unsigned int out_len; /* Length of ->out_info array if have_output */
 
   unsigned int allocated; /* Length of allocated arrays */
   hb_glyph_info_t     *info;
@@ -128,6 +128,9 @@
   hb_buffer_message_func_t message_func;
   void *message_data;
   hb_destroy_func_t message_destroy;
+  unsigned message_depth; /* How deeply are we inside a message callback? */
+#else
+  static constexpr unsigned message_depth = 0u;
 #endif
 
   /* Internal debugging. */
@@ -186,13 +189,10 @@
   hb_glyph_info_t &prev ()      { return out_info[out_len ? out_len - 1 : 0]; }
   hb_glyph_info_t prev () const { return out_info[out_len ? out_len - 1 : 0]; }
 
-  HB_NODISCARD bool has_separate_output () const { return info != out_info; }
-
-
   HB_INTERNAL void reset ();
   HB_INTERNAL void clear ();
 
-  unsigned int backtrack_len () const { return have_output? out_len : idx; }
+  unsigned int backtrack_len () const { return have_output ? out_len : idx; }
   unsigned int lookahead_len () const { return len - idx; }
   unsigned int next_serial () { return serial++; }
 
@@ -206,7 +206,6 @@
   HB_INTERNAL void guess_segment_properties ();
 
   HB_INTERNAL void swap_buffers ();
-  HB_INTERNAL void remove_output ();
   HB_INTERNAL void clear_output ();
   HB_INTERNAL void clear_positions ();
 
@@ -400,10 +399,16 @@
 #else
     if (!messaging ())
       return true;
+
+    message_depth++;
+
     va_list ap;
     va_start (ap, fmt);
     bool ret = message_impl (font, fmt, ap);
     va_end (ap);
+
+    message_depth--;
+
     return ret;
 #endif
   }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cache.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cache.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cache.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -30,7 +30,7 @@
 #include "hb.hh"
 
 
-/* Implements a lock-free cache for int->int functions. */
+/* Implements a lockfree cache for int->int functions. */
 
 template <unsigned int key_bits, unsigned int value_bits, unsigned int cache_bits>
 struct hb_cache_t

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff2-interp-cs.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff2-interp-cs.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff2-interp-cs.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -136,8 +136,8 @@
 	if (unlikely (!scalars.resize (region_count)))
 	  set_error ();
 	else
-	  varStore->varStore.get_scalars (get_ivs (), coords, num_coords,
-					  &scalars[0], region_count);
+	  varStore->varStore.get_region_scalars (get_ivs (), coords, num_coords,
+						 &scalars[0], region_count);
       }
       seen_blend = true;
     }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -257,13 +257,11 @@
   bool operator == (const char *s) const
   { return lang_equal (lang, s); }
 
-  hb_language_item_t & operator = (const char *s) {
-    /* If a custom allocated is used calling strdup() pairs
-    badly with a call to the custom free() in fini() below.
-    Therefore don't call strdup(), implement its behavior.
-    */
+  hb_language_item_t & operator = (const char *s)
+  {
+    /* We can't call strdup(), because we allow custom allocators. */
     size_t len = strlen(s) + 1;
-    lang = (hb_language_t) malloc(len);
+    lang = (hb_language_t) hb_malloc(len);
     if (likely (lang))
     {
       memcpy((unsigned char *) lang, s, len);
@@ -274,11 +272,11 @@
     return *this;
   }
 
-  void fini () { free ((void *) lang); }
+  void fini () { hb_free ((void *) lang); }
 };
 
 
-/* Thread-safe lock-free language list */
+/* Thread-safe lockfree language list */
 
 static hb_atomic_ptr_t <hb_language_item_t> langs;
 
@@ -294,7 +292,7 @@
   while (first_lang) {
     hb_language_item_t *next = first_lang->next;
     first_lang->fini ();
-    free (first_lang);
+    hb_free (first_lang);
     first_lang = next;
   }
 }
@@ -311,7 +309,7 @@
       return lang;
 
   /* Not found; allocate one. */
-  hb_language_item_t *lang = (hb_language_item_t *) calloc (1, sizeof (hb_language_item_t));
+  hb_language_item_t *lang = (hb_language_item_t *) hb_calloc (1, sizeof (hb_language_item_t));
   if (unlikely (!lang))
     return nullptr;
   lang->next = first_lang;
@@ -318,7 +316,7 @@
   *lang = key;
   if (unlikely (!lang->lang))
   {
-    free (lang);
+    hb_free (lang);
     return nullptr;
   }
 
@@ -325,7 +323,7 @@
   if (unlikely (!langs.cmpexch (first_lang, lang)))
   {
     lang->fini ();
-    free (lang);
+    hb_free (lang);
     goto retry;
   }
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -120,7 +120,7 @@
 #define HB_NO_CMAP_LEGACY_SUBTABLES
 #define HB_NO_FALLBACK_SHAPE
 #define HB_NO_OT_KERN
-#define HB_NO_OT_LAYOUT_BLACKLIST
+#define HB_NO_OT_LAYOUT_BLOCKLIST
 #define HB_NO_OT_SHAPE_FALLBACK
 #endif
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -332,6 +332,44 @@
     return nullptr;
   }
 
+  if (font->coords)
+  {
+    CFMutableDictionaryRef variations =
+      CFDictionaryCreateMutable (kCFAllocatorDefault,
+				 font->num_coords,
+				 &kCFTypeDictionaryKeyCallBacks,
+				 &kCFTypeDictionaryValueCallBacks);
+
+    for (unsigned i = 0; i < font->num_coords; i++)
+    {
+      if (font->coords[i] == 0.) continue;
+
+      hb_ot_var_axis_info_t info;
+      unsigned int c = 1;
+      hb_ot_var_get_axis_infos (font->face, i, &c, &info);
+      CFDictionarySetValue (variations,
+	CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &info.tag),
+	CFNumberCreate (kCFAllocatorDefault, kCFNumberFloatType, &font->design_coords[i])
+      );
+    }
+
+    CFDictionaryRef attributes =
+      CFDictionaryCreate (kCFAllocatorDefault,
+			  (const void **) &kCTFontVariationAttribute,
+			  (const void **) &variations,
+			  1,
+			  &kCFTypeDictionaryKeyCallBacks,
+			  &kCFTypeDictionaryValueCallBacks);
+
+    CTFontDescriptorRef varDesc = CTFontDescriptorCreateWithAttributes (attributes);
+    CTFontRef new_ct_font = CTFontCreateCopyWithAttributes (ct_font, 0, nullptr, varDesc);
+
+    CFRelease (ct_font);
+    CFRelease (attributes);
+    CFRelease (variations);
+    ct_font = new_ct_font;
+  }
+
   return (hb_coretext_font_data_t *) ct_font;
 }
 
@@ -1061,7 +1099,7 @@
 	hb_glyph_info_t *info = run_info;
 	if (HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction))
 	{
-	  hb_position_t x_offset = (positions[0].x - advances_so_far) * x_mult;
+	  hb_position_t x_offset = round ((positions[0].x - advances_so_far) * x_mult);
 	  for (unsigned int j = 0; j < num_glyphs; j++)
 	  {
 	    CGFloat advance;
@@ -1069,15 +1107,15 @@
 	      advance = positions[j + 1].x - positions[j].x;
 	    else /* last glyph */
 	      advance = run_advance - (positions[j].x - positions[0].x);
-	    info->mask = advance * x_mult;
+	    info->mask = round (advance * x_mult);
 	    info->var1.i32 = x_offset;
-	    info->var2.i32 = positions[j].y * y_mult;
+	    info->var2.i32 = round (positions[j].y * y_mult);
 	    info++;
 	  }
 	}
 	else
 	{
-	  hb_position_t y_offset = (positions[0].y - advances_so_far) * y_mult;
+	  hb_position_t y_offset = round ((positions[0].y - advances_so_far) * y_mult);
 	  for (unsigned int j = 0; j < num_glyphs; j++)
 	  {
 	    CGFloat advance;
@@ -1085,8 +1123,8 @@
 	      advance = positions[j + 1].y - positions[j].y;
 	    else /* last glyph */
 	      advance = run_advance - (positions[j].y - positions[0].y);
-	    info->mask = advance * y_mult;
-	    info->var1.i32 = positions[j].x * x_mult;
+	    info->mask = round (advance * y_mult);
+	    info->var1.i32 = round (positions[j].x * x_mult);
 	    info->var2.i32 = y_offset;
 	    info++;
 	  }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-debug.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-debug.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-debug.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -307,7 +307,7 @@
 
     _hb_debug_msg<max_level> (what, obj, func, true, plevel ? *plevel : 1, -1,
 			      "return %s (line %d)",
-			      hb_printer_t<decltype (v)>().print (v), line);
+			      hb_printer_t<hb_decay<decltype (v)>>().print (v), line);
     if (plevel) --*plevel;
     plevel = nullptr;
     returned = true;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -32,6 +32,7 @@
 
 #include "hb-directwrite.h"
 
+#include "hb-ms-feature-ranges.hh"
 
 /**
  * SECTION:hb-directwrite
@@ -42,25 +43,7 @@
  * Functions for using HarfBuzz with DirectWrite fonts.
  **/
 
-/* Declare object creator for dynamic support of DWRITE */
-typedef HRESULT (* WINAPI t_DWriteCreateFactory)(
-  DWRITE_FACTORY_TYPE factoryType,
-  REFIID              iid,
-  IUnknown            **factory
-);
-
 /*
- * hb-directwrite uses new/delete syntatically but as we let users
- * to override malloc/free, we will redefine new/delete so users
- * won't need to do that by their own.
- */
-void* operator new (size_t size)        { return malloc (size); }
-void* operator new [] (size_t size)     { return malloc (size); }
-void operator delete (void* pointer)    { free (pointer); }
-void operator delete [] (void* pointer) { free (pointer); }
-
-
-/*
  * DirectWrite font stream helpers
  */
 
@@ -154,7 +137,6 @@
 
 struct hb_directwrite_face_data_t
 {
-  HMODULE dwrite_dll;
   IDWriteFactory *dwriteFactory;
   IDWriteFontFile *fontFile;
   DWriteFontFileStream *fontFileStream;
@@ -176,33 +158,12 @@
     return nullptr; \
   } HB_STMT_END
 
-  data->dwrite_dll = LoadLibrary (TEXT ("DWRITE"));
-  if (unlikely (!data->dwrite_dll))
-    FAIL ("Cannot find DWrite.DLL");
-
-  t_DWriteCreateFactory p_DWriteCreateFactory;
-
-#if defined(__GNUC__)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wcast-function-type"
-#endif
-
-  p_DWriteCreateFactory = (t_DWriteCreateFactory)
-			  GetProcAddress (data->dwrite_dll, "DWriteCreateFactory");
-
-#if defined(__GNUC__)
-#pragma GCC diagnostic pop
-#endif
-
-  if (unlikely (!p_DWriteCreateFactory))
-    FAIL ("Cannot find DWriteCreateFactory().");
-
   HRESULT hr;
 
   // TODO: factory and fontFileLoader should be cached separately
   IDWriteFactory* dwriteFactory;
-  hr = p_DWriteCreateFactory (DWRITE_FACTORY_TYPE_SHARED, __uuidof (IDWriteFactory),
-			      (IUnknown**) &dwriteFactory);
+  hr = DWriteCreateFactory (DWRITE_FACTORY_TYPE_SHARED, __uuidof (IDWriteFactory),
+			    (IUnknown**) &dwriteFactory);
 
   if (unlikely (hr != S_OK))
     FAIL ("Failed to run DWriteCreateFactory().");
@@ -266,8 +227,6 @@
     delete data->fontFileStream;
   if (data->faceBlob)
     hb_blob_destroy (data->faceBlob);
-  if (data->dwrite_dll)
-    FreeLibrary (data->dwrite_dll);
   if (data)
     delete data;
 }
@@ -552,13 +511,12 @@
  * shaper
  */
 
-static hb_bool_t
-_hb_directwrite_shape_full (hb_shape_plan_t    *shape_plan,
-			    hb_font_t          *font,
-			    hb_buffer_t        *buffer,
-			    const hb_feature_t *features,
-			    unsigned int        num_features,
-			    float               lineWidth)
+hb_bool_t
+_hb_directwrite_shape (hb_shape_plan_t    *shape_plan,
+		       hb_font_t          *font,
+		       hb_buffer_t        *buffer,
+		       const hb_feature_t *features,
+		       unsigned int        num_features)
 {
   hb_face_t *face = font->face;
   const hb_directwrite_face_data_t *face_data = face->data.directwrite;
@@ -611,8 +569,6 @@
       log_clusters[chars_len++] = cluster; /* Surrogates. */
   }
 
-  // TODO: Handle TEST_DISABLE_OPTIONAL_LIGATURES
-
   DWRITE_READING_DIRECTION readingDirection;
   readingDirection = buffer->props.direction ?
 		     DWRITE_READING_DIRECTION_RIGHT_TO_LEFT :
@@ -648,38 +604,54 @@
     mbstowcs ((wchar_t*) localeName,
 	      hb_language_to_string (buffer->props.language), 20);
 
-  // TODO: it does work but doesn't care about ranges
-  DWRITE_TYPOGRAPHIC_FEATURES typographic_features;
-  typographic_features.featureCount = num_features;
+  /*
+   * Set up features.
+   */
+  static_assert ((sizeof (DWRITE_TYPOGRAPHIC_FEATURES) == sizeof (hb_ms_features_t)), "");
+  static_assert ((sizeof (DWRITE_FONT_FEATURE) == sizeof (hb_ms_feature_t)), "");
+  hb_vector_t<hb_ms_features_t *> range_features;
+  hb_vector_t<uint32_t> range_char_counts;
   if (num_features)
   {
-    typographic_features.features = new DWRITE_FONT_FEATURE[num_features];
-    for (unsigned int i = 0; i < num_features; ++i)
-    {
-      typographic_features.features[i].nameTag = (DWRITE_FONT_FEATURE_TAG)
-						 hb_uint32_swap (features[i].tag);
-      typographic_features.features[i].parameter = features[i].value;
-    }
+    hb_vector_t<hb_ms_feature_t> feature_records;
+    hb_vector_t<hb_ms_range_record_t> range_records;
+    if (hb_ms_setup_features (features, num_features, feature_records, range_records))
+      hb_ms_make_feature_ranges (feature_records,
+				 range_records,
+				 0,
+				 chars_len,
+				 log_clusters,
+				 range_features,
+				 range_char_counts);
   }
-  const DWRITE_TYPOGRAPHIC_FEATURES* dwFeatures;
-  dwFeatures = (const DWRITE_TYPOGRAPHIC_FEATURES*) &typographic_features;
-  const uint32_t featureRangeLengths[] = { textLength };
-  //
 
   uint16_t* clusterMap;
   clusterMap = new uint16_t[textLength];
   DWRITE_SHAPING_TEXT_PROPERTIES* textProperties;
   textProperties = new DWRITE_SHAPING_TEXT_PROPERTIES[textLength];
+
 retry_getglyphs:
   uint16_t* glyphIndices = new uint16_t[maxGlyphCount];
   DWRITE_SHAPING_GLYPH_PROPERTIES* glyphProperties;
   glyphProperties = new DWRITE_SHAPING_GLYPH_PROPERTIES[maxGlyphCount];
 
-  hr = analyzer->GetGlyphs (textString, textLength, fontFace, false,
-			    isRightToLeft, &runHead->mScript, localeName,
-			    nullptr, &dwFeatures, featureRangeLengths, 1,
-			    maxGlyphCount, clusterMap, textProperties,
-			    glyphIndices, glyphProperties, &glyphCount);
+  hr = analyzer->GetGlyphs (textString,
+			    chars_len,
+			    fontFace,
+			    false,
+			    isRightToLeft,
+			    &runHead->mScript,
+			    localeName,
+			    nullptr,
+			    (const DWRITE_TYPOGRAPHIC_FEATURES**) range_features.arrayZ,
+			    range_char_counts.arrayZ,
+			    range_features.length,
+			    maxGlyphCount,
+			    clusterMap,
+			    textProperties,
+			    glyphIndices,
+			    glyphProperties,
+			    &glyphCount);
 
   if (unlikely (hr == HRESULT_FROM_WIN32 (ERROR_INSUFFICIENT_BUFFER)))
   {
@@ -715,101 +687,28 @@
   double x_mult = (double) font->x_scale / fontEmSize;
   double y_mult = (double) font->y_scale / fontEmSize;
 
-  hr = analyzer->GetGlyphPlacements (textString, clusterMap, textProperties,
-				     textLength, glyphIndices, glyphProperties,
-				     glyphCount, fontFace, fontEmSize,
-				     false, isRightToLeft, &runHead->mScript, localeName,
-				     &dwFeatures, featureRangeLengths, 1,
-				     glyphAdvances, glyphOffsets);
+  hr = analyzer->GetGlyphPlacements (textString,
+				     clusterMap,
+				     textProperties,
+				     chars_len,
+				     glyphIndices,
+				     glyphProperties,
+				     glyphCount,
+				     fontFace,
+				     fontEmSize,
+				     false,
+				     isRightToLeft,
+				     &runHead->mScript,
+				     localeName,
+				     (const DWRITE_TYPOGRAPHIC_FEATURES**) range_features.arrayZ,
+				     range_char_counts.arrayZ,
+				     range_features.length,
+				     glyphAdvances,
+				     glyphOffsets);
 
   if (FAILED (hr))
     FAIL ("Analyzer failed to get glyph placements.");
 
-  IDWriteTextAnalyzer1* analyzer1;
-  analyzer->QueryInterface (&analyzer1);
-
-  if (analyzer1 && lineWidth)
-  {
-    DWRITE_JUSTIFICATION_OPPORTUNITY* justificationOpportunities =
-      new DWRITE_JUSTIFICATION_OPPORTUNITY[maxGlyphCount];
-    hr = analyzer1->GetJustificationOpportunities (fontFace, fontEmSize, runHead->mScript,
-						   textLength, glyphCount, textString,
-						   clusterMap, glyphProperties,
-						   justificationOpportunities);
-
-    if (FAILED (hr))
-      FAIL ("Analyzer failed to get justification opportunities.");
-
-    float* justifiedGlyphAdvances = new float[maxGlyphCount];
-    DWRITE_GLYPH_OFFSET* justifiedGlyphOffsets = new DWRITE_GLYPH_OFFSET[glyphCount];
-    hr = analyzer1->JustifyGlyphAdvances (lineWidth, glyphCount, justificationOpportunities,
-					  glyphAdvances, glyphOffsets, justifiedGlyphAdvances,
-					  justifiedGlyphOffsets);
-
-    if (FAILED (hr)) FAIL ("Analyzer failed to get justify glyph advances.");
-
-    DWRITE_SCRIPT_PROPERTIES scriptProperties;
-    hr = analyzer1->GetScriptProperties (runHead->mScript, &scriptProperties);
-    if (FAILED (hr)) FAIL ("Analyzer failed to get script properties.");
-    uint32_t justificationCharacter = scriptProperties.justificationCharacter;
-
-    // if a script justificationCharacter is not space, it can have GetJustifiedGlyphs
-    if (justificationCharacter != 32)
-    {
-      uint16_t* modifiedClusterMap = new uint16_t[textLength];
-    retry_getjustifiedglyphs:
-      uint16_t* modifiedGlyphIndices = new uint16_t[maxGlyphCount];
-      float* modifiedGlyphAdvances = new float[maxGlyphCount];
-      DWRITE_GLYPH_OFFSET* modifiedGlyphOffsets = new DWRITE_GLYPH_OFFSET[maxGlyphCount];
-      uint32_t actualGlyphsCount;
-      hr = analyzer1->GetJustifiedGlyphs (fontFace, fontEmSize, runHead->mScript,
-					  textLength, glyphCount, maxGlyphCount,
-					  clusterMap, glyphIndices, glyphAdvances,
-					  justifiedGlyphAdvances, justifiedGlyphOffsets,
-					  glyphProperties, &actualGlyphsCount,
-					  modifiedClusterMap, modifiedGlyphIndices,
-					  modifiedGlyphAdvances, modifiedGlyphOffsets);
-
-      if (hr == HRESULT_FROM_WIN32 (ERROR_INSUFFICIENT_BUFFER))
-      {
-	maxGlyphCount = actualGlyphsCount;
-	delete [] modifiedGlyphIndices;
-	delete [] modifiedGlyphAdvances;
-	delete [] modifiedGlyphOffsets;
-
-	maxGlyphCount = actualGlyphsCount;
-
-	goto retry_getjustifiedglyphs;
-      }
-      if (FAILED (hr))
-	FAIL ("Analyzer failed to get justified glyphs.");
-
-      delete [] clusterMap;
-      delete [] glyphIndices;
-      delete [] glyphAdvances;
-      delete [] glyphOffsets;
-
-      glyphCount = actualGlyphsCount;
-      clusterMap = modifiedClusterMap;
-      glyphIndices = modifiedGlyphIndices;
-      glyphAdvances = modifiedGlyphAdvances;
-      glyphOffsets = modifiedGlyphOffsets;
-
-      delete [] justifiedGlyphAdvances;
-      delete [] justifiedGlyphOffsets;
-    }
-    else
-    {
-      delete [] glyphAdvances;
-      delete [] glyphOffsets;
-
-      glyphAdvances = justifiedGlyphAdvances;
-      glyphOffsets = justifiedGlyphOffsets;
-    }
-
-    delete [] justificationOpportunities;
-  }
-
   /* Ok, we've got everything we need, now compose output buffer,
    * very, *very*, carefully! */
 
@@ -870,43 +769,10 @@
   delete [] glyphAdvances;
   delete [] glyphOffsets;
 
-  if (num_features)
-    delete [] typographic_features.features;
-
   /* Wow, done! */
   return true;
 }
 
-hb_bool_t
-_hb_directwrite_shape (hb_shape_plan_t    *shape_plan,
-		       hb_font_t          *font,
-		       hb_buffer_t        *buffer,
-		       const hb_feature_t *features,
-		       unsigned int        num_features)
-{
-  return _hb_directwrite_shape_full (shape_plan, font, buffer,
-				     features, num_features, 0);
-}
-
-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;
-  shape_plan = hb_shape_plan_create_cached (font->face, &buffer->props,
-					    features, num_features, &shapers);
-  hb_bool_t res = _hb_directwrite_shape_full (shape_plan, font, buffer,
-					      features, num_features, width);
-
-  buffer->unsafe_to_break_all ();
-
-  return res;
-}
-
 struct _hb_directwrite_font_table_context {
   IDWriteFontFace *face;
   void *table_context;
@@ -917,7 +783,7 @@
 {
   _hb_directwrite_font_table_context *context = (_hb_directwrite_font_table_context *) data;
   context->face->ReleaseFontTable (context->table_context);
-  delete context;
+  hb_free (context);
 }
 
 static hb_blob_t *
@@ -938,7 +804,7 @@
     return nullptr;
   }
 
-  _hb_directwrite_font_table_context *context = new _hb_directwrite_font_table_context;
+  _hb_directwrite_font_table_context *context = (_hb_directwrite_font_table_context *) hb_malloc (sizeof (_hb_directwrite_font_table_context));
   context->face = dw_face;
   context->table_context = table_context;
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -191,7 +191,7 @@
 {
   if (!hb_object_destroy (funcs)) return;
 
-  free (funcs);
+  hb_free (funcs);
 }
 
 /**

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -33,6 +33,7 @@
 #include "hb-open-file.hh"
 #include "hb-ot-face.hh"
 #include "hb-ot-cmap-table.hh"
+#include "hb-map.hh"
 
 
 /**
@@ -106,9 +107,9 @@
  * convenient to provide data for individual tables instead of the whole font
  * data. With the caveat that hb_face_get_table_tags() does not currently work
  * with faces created this way.
- * 
+ *
  * Creates a new face object from the specified @user_data and @reference_table_func,
- * with the @destroy callback. 
+ * with the @destroy callback.
  *
  * Return value: (transfer full): The new face object
  *
@@ -150,7 +151,7 @@
 {
   hb_face_for_data_closure_t *closure;
 
-  closure = (hb_face_for_data_closure_t *) calloc (1, sizeof (hb_face_for_data_closure_t));
+  closure = (hb_face_for_data_closure_t *) hb_calloc (1, sizeof (hb_face_for_data_closure_t));
   if (unlikely (!closure))
     return nullptr;
 
@@ -166,7 +167,7 @@
   hb_face_for_data_closure_t *closure = (hb_face_for_data_closure_t *) data;
 
   hb_blob_destroy (closure->blob);
-  free (closure);
+  hb_free (closure);
 }
 
 static hb_blob_t *
@@ -265,7 +266,7 @@
 /**
  * hb_face_destroy: (skip)
  * @face: A face object
- * 
+ *
  * Decreases the reference count on a face object. When the
  * reference count reaches zero, the face is destroyed,
  * freeing all memory.
@@ -281,7 +282,7 @@
   {
     hb_face_t::plan_node_t *next = node->next;
     hb_shape_plan_destroy (node->shape_plan);
-    free (node);
+    hb_free (node);
     node = next;
   }
 
@@ -291,7 +292,7 @@
   if (face->destroy)
     face->destroy (face->user_data);
 
-  free (face);
+  hb_free (face);
 }
 
 /**
@@ -302,7 +303,7 @@
  * @destroy: (nullable): A callback to call when @data is not needed anymore
  * @replace: Whether to replace an existing data with the same key
  *
- * Attaches a user-data key/data pair to the given face object. 
+ * Attaches a user-data key/data pair to the given face object.
  *
  * Return value: %true if success, %false otherwise
  *
@@ -441,7 +442,7 @@
  *
  * <note>Note: face indices within a collection are zero-based.</note>
  *
- * Return value: The index of @face. 
+ * Return value: The index of @face.
  *
  * Since: 0.9.2
  **/
@@ -623,26 +624,26 @@
 
 struct hb_face_builder_data_t
 {
-  struct table_entry_t
-  {
-    int cmp (hb_tag_t t) const
-    {
-      if (t < tag) return -1;
-      if (t > tag) return -1;
-      return 0;
-    }
+  hb_hashmap_t<hb_tag_t, hb_blob_t *> tables;
+};
 
-    hb_tag_t   tag;
-    hb_blob_t *blob;
-  };
+static int compare_entries (const void* pa, const void* pb)
+{
+  const auto& a = * (const hb_pair_t<hb_tag_t, hb_blob_t*> *) pa;
+  const auto& b = * (const hb_pair_t<hb_tag_t, hb_blob_t*> *) pb;
 
-  hb_vector_t<table_entry_t> tables;
-};
+  /* Order by blob size first (smallest to largest) and then table tag */
 
+  if (a.second->length != b.second->length)
+    return a.second->length < b.second->length ? -1 : +1;
+
+  return a.first < b.first ? -1 : a.first == b.first ? 0 : +1;
+}
+
 static hb_face_builder_data_t *
 _hb_face_builder_data_create ()
 {
-  hb_face_builder_data_t *data = (hb_face_builder_data_t *) calloc (1, sizeof (hb_face_builder_data_t));
+  hb_face_builder_data_t *data = (hb_face_builder_data_t *) hb_calloc (1, sizeof (hb_face_builder_data_t));
   if (unlikely (!data))
     return nullptr;
 
@@ -656,12 +657,12 @@
 {
   hb_face_builder_data_t *data = (hb_face_builder_data_t *) user_data;
 
-  for (unsigned int i = 0; i < data->tables.length; i++)
-    hb_blob_destroy (data->tables[i].blob);
+  for (hb_blob_t* b : data->tables.values())
+    hb_blob_destroy (b);
 
   data->tables.fini ();
 
-  free (data);
+  hb_free (data);
 }
 
 static hb_blob_t *
@@ -668,13 +669,13 @@
 _hb_face_builder_data_reference_blob (hb_face_builder_data_t *data)
 {
 
-  unsigned int table_count = data->tables.length;
+  unsigned int table_count = data->tables.get_population ();
   unsigned int face_length = table_count * 16 + 12;
 
-  for (unsigned int i = 0; i < table_count; i++)
-    face_length += hb_ceil_to_4 (hb_blob_get_length (data->tables[i].blob));
+  for (hb_blob_t* b : data->tables.values())
+    face_length += hb_ceil_to_4 (hb_blob_get_length (b));
 
-  char *buf = (char *) malloc (face_length);
+  char *buf = (char *) hb_malloc (face_length);
   if (unlikely (!buf))
     return nullptr;
 
@@ -682,20 +683,31 @@
   c.propagate_error (data->tables);
   OT::OpenTypeFontFile *f = c.start_serialize<OT::OpenTypeFontFile> ();
 
-  bool is_cff = data->tables.lsearch (HB_TAG ('C','F','F',' ')) || data->tables.lsearch (HB_TAG ('C','F','F','2'));
+  bool is_cff = (data->tables.has (HB_TAG ('C','F','F',' '))
+                 || data->tables.has (HB_TAG ('C','F','F','2')));
   hb_tag_t sfnt_tag = is_cff ? OT::OpenTypeFontFile::CFFTag : OT::OpenTypeFontFile::TrueTypeTag;
 
-  bool ret = f->serialize_single (&c, sfnt_tag, data->tables.as_array ());
+  // Sort the tags so that produced face is deterministic.
+  hb_vector_t<hb_pair_t <hb_tag_t, hb_blob_t*>> sorted_entries;
+  data->tables.iter () | hb_sink (sorted_entries);
+  if (unlikely (sorted_entries.in_error ()))
+  {
+    hb_free (buf);
+    return nullptr;
+  }
 
+  sorted_entries.qsort (compare_entries);
+  bool ret = f->serialize_single (&c, sfnt_tag, + sorted_entries.iter());
+
   c.end_serialize ();
 
   if (unlikely (!ret))
   {
-    free (buf);
+    hb_free (buf);
     return nullptr;
   }
 
-  return hb_blob_create (buf, face_length, HB_MEMORY_MODE_WRITABLE, buf, free);
+  return hb_blob_create (buf, face_length, HB_MEMORY_MODE_WRITABLE, buf, hb_free);
 }
 
 static hb_blob_t *
@@ -706,11 +718,7 @@
   if (!tag)
     return _hb_face_builder_data_reference_blob (data);
 
-  hb_face_builder_data_t::table_entry_t *entry = data->tables.lsearch (tag);
-  if (entry)
-    return hb_blob_reference (entry->blob);
-
-  return nullptr;
+  return hb_blob_reference (data->tables[tag]);
 }
 
 
@@ -750,17 +758,21 @@
 hb_bool_t
 hb_face_builder_add_table (hb_face_t *face, hb_tag_t tag, hb_blob_t *blob)
 {
+  if (tag == HB_MAP_VALUE_INVALID)
+    return false;
+
   if (unlikely (face->destroy != (hb_destroy_func_t) _hb_face_builder_data_destroy))
     return false;
 
   hb_face_builder_data_t *data = (hb_face_builder_data_t *) face->user_data;
 
-  hb_face_builder_data_t::table_entry_t *entry = data->tables.push ();
-  if (unlikely (data->tables.in_error()))
+  hb_blob_t* previous = data->tables.get (tag);
+  if (!data->tables.set (tag, hb_blob_reference (blob)))
+  {
+    hb_blob_destroy (blob);
     return false;
+  }
 
-  entry->tag = tag;
-  entry->blob = hb_blob_reference (blob);
-
+  hb_blob_destroy (previous);
   return true;
 }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -620,7 +620,7 @@
   HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
 #undef HB_FONT_FUNC_IMPLEMENT
 
-  free (ffuncs);
+  hb_free (ffuncs);
 }
 
 /**
@@ -1544,8 +1544,8 @@
 			   float *design_coords,
 			   unsigned int coords_length)
 {
-  free (font->coords);
-  free (font->design_coords);
+  hb_free (font->coords);
+  hb_free (font->design_coords);
 
   font->coords = coords;
   font->design_coords = design_coords;
@@ -1586,8 +1586,8 @@
   unsigned int num_coords = parent->num_coords;
   if (num_coords)
   {
-    int *coords = (int *) calloc (num_coords, sizeof (parent->coords[0]));
-    float *design_coords = (float *) calloc (num_coords, sizeof (parent->design_coords[0]));
+    int *coords = (int *) hb_calloc (num_coords, sizeof (parent->coords[0]));
+    float *design_coords = (float *) hb_calloc (num_coords, sizeof (parent->design_coords[0]));
     if (likely (coords && design_coords))
     {
       memcpy (coords, parent->coords, num_coords * sizeof (parent->coords[0]));
@@ -1596,8 +1596,8 @@
     }
     else
     {
-      free (coords);
-      free (design_coords);
+      hb_free (coords);
+      hb_free (design_coords);
     }
   }
 
@@ -1659,10 +1659,10 @@
   hb_face_destroy (font->face);
   hb_font_funcs_destroy (font->klass);
 
-  free (font->coords);
-  free (font->design_coords);
+  hb_free (font->coords);
+  hb_free (font->design_coords);
 
-  free (font);
+  hb_free (font);
 }
 
 /**
@@ -2052,29 +2052,30 @@
     return;
   }
 
-  unsigned int coords_length = hb_ot_var_get_axis_count (font->face);
+  const OT::fvar &fvar = *font->face->table.fvar;
+  auto axes = fvar.get_axes ();
+  const unsigned coords_length = axes.length;
 
-  int *normalized = coords_length ? (int *) calloc (coords_length, sizeof (int)) : nullptr;
-  float *design_coords = coords_length ? (float *) calloc (coords_length, sizeof (float)) : nullptr;
+  int *normalized = coords_length ? (int *) hb_calloc (coords_length, sizeof (int)) : nullptr;
+  float *design_coords = coords_length ? (float *) hb_calloc (coords_length, sizeof (float)) : nullptr;
 
   if (unlikely (coords_length && !(normalized && design_coords)))
   {
-    free (normalized);
-    free (design_coords);
+    hb_free (normalized);
+    hb_free (design_coords);
     return;
   }
 
-  const OT::fvar &fvar = *font->face->table.fvar;
   for (unsigned int i = 0; i < variations_length; i++)
   {
-    hb_ot_var_axis_info_t info;
-    if (hb_ot_var_find_axis_info (font->face, variations[i].tag, &info) &&
-	info.axis_index < coords_length)
-    {
-      float v = variations[i].value;
-      design_coords[info.axis_index] = v;
-      normalized[info.axis_index] = fvar.normalize_axis_value (info.axis_index, v);
-    }
+    const auto tag = variations[i].tag;
+    const auto v = variations[i].value;
+    for (unsigned axis_index = 0; axis_index < coords_length; axis_index++)
+      if (axes[axis_index].axisTag == tag)
+      {
+	design_coords[axis_index] = v;
+	normalized[axis_index] = fvar.normalize_axis_value (axis_index, v);
+      }
   }
   font->face->table.avar->map_coords (normalized, coords_length);
 
@@ -2100,13 +2101,13 @@
   if (hb_object_is_immutable (font))
     return;
 
-  int *normalized = coords_length ? (int *) calloc (coords_length, sizeof (int)) : nullptr;
-  float *design_coords = coords_length ? (float *) calloc (coords_length, sizeof (float)) : nullptr;
+  int *normalized = coords_length ? (int *) hb_calloc (coords_length, sizeof (int)) : nullptr;
+  float *design_coords = coords_length ? (float *) hb_calloc (coords_length, sizeof (float)) : nullptr;
 
   if (unlikely (coords_length && !(normalized && design_coords)))
   {
-    free (normalized);
-    free (design_coords);
+    hb_free (normalized);
+    hb_free (design_coords);
     return;
   }
 
@@ -2135,13 +2136,13 @@
 
   unsigned int coords_length = hb_ot_var_named_instance_get_design_coords (font->face, instance_index, nullptr, nullptr);
 
-  float *coords = coords_length ? (float *) calloc (coords_length, sizeof (float)) : nullptr;
+  float *coords = coords_length ? (float *) hb_calloc (coords_length, sizeof (float)) : nullptr;
   if (unlikely (coords_length && !coords))
     return;
 
   hb_ot_var_named_instance_get_design_coords (font->face, instance_index, &coords_length, coords);
   hb_font_set_var_coords_design (font, coords, coords_length);
-  free (coords);
+  hb_free (coords);
 }
 
 /**
@@ -2165,15 +2166,15 @@
   if (hb_object_is_immutable (font))
     return;
 
-  int *copy = coords_length ? (int *) calloc (coords_length, sizeof (coords[0])) : nullptr;
-  int *unmapped = coords_length ? (int *) calloc (coords_length, sizeof (coords[0])) : nullptr;
-  float *design_coords = coords_length ? (float *) calloc (coords_length, sizeof (design_coords[0])) : nullptr;
+  int *copy = coords_length ? (int *) hb_calloc (coords_length, sizeof (coords[0])) : nullptr;
+  int *unmapped = coords_length ? (int *) hb_calloc (coords_length, sizeof (coords[0])) : nullptr;
+  float *design_coords = coords_length ? (float *) hb_calloc (coords_length, sizeof (design_coords[0])) : nullptr;
 
   if (unlikely (coords_length && !(copy && unmapped && design_coords)))
   {
-    free (copy);
-    free (unmapped);
-    free (design_coords);
+    hb_free (copy);
+    hb_free (unmapped);
+    hb_free (design_coords);
     return;
   }
 
@@ -2187,7 +2188,7 @@
   font->face->table.avar->unmap_coords (unmapped, coords_length);
   for (unsigned int i = 0; i < coords_length; ++i)
     design_coords[i] = font->face->table.fvar->unnormalize_axis_value (i, unmapped[i]);
-  free (unmapped);
+  hb_free (unmapped);
 
   _hb_font_adopt_var_coords (font, copy, design_coords, coords_length);
 }
@@ -2267,7 +2268,7 @@
 {
   typedef hb_trampoline_t<FuncType> trampoline_t;
 
-  trampoline_t *trampoline = (trampoline_t *) calloc (1, sizeof (trampoline_t));
+  trampoline_t *trampoline = (trampoline_t *) hb_calloc (1, sizeof (trampoline_t));
 
   if (unlikely (!trampoline))
     return nullptr;
@@ -2296,7 +2297,7 @@
 
   if (closure->destroy)
     closure->destroy (closure->user_data);
-  free (closure);
+  hb_free (closure);
 }
 
 typedef hb_trampoline_t<hb_font_get_glyph_func_t> hb_font_get_glyph_trampoline_t;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -91,7 +91,7 @@
 static hb_ft_font_t *
 _hb_ft_font_create (FT_Face ft_face, bool symbol, bool unref)
 {
-  hb_ft_font_t *ft_font = (hb_ft_font_t *) calloc (1, sizeof (hb_ft_font_t));
+  hb_ft_font_t *ft_font = (hb_ft_font_t *) hb_calloc (1, sizeof (hb_ft_font_t));
   if (unlikely (!ft_font)) return nullptr;
 
   ft_font->lock.init ();
@@ -125,7 +125,7 @@
 
   ft_font->lock.fini ();
 
-  free (ft_font);
+  hb_free (ft_font);
 }
 
 /**
@@ -642,7 +642,7 @@
   if (error)
     return nullptr;
 
-  buffer = (FT_Byte *) malloc (length);
+  buffer = (FT_Byte *) hb_malloc (length);
   if (!buffer)
     return nullptr;
 
@@ -649,13 +649,13 @@
   error = FT_Load_Sfnt_Table (ft_face, tag, 0, buffer, &length);
   if (error)
   {
-    free (buffer);
+    hb_free (buffer);
     return nullptr;
   }
 
   return hb_blob_create ((const char *) buffer, length,
 			 HB_MEMORY_MODE_WRITABLE,
-			 buffer, free);
+			 buffer, hb_free);
 }
 
 /**
@@ -846,8 +846,8 @@
   FT_MM_Var *mm_var = nullptr;
   if (!FT_Get_MM_Var (ft_face, &mm_var))
   {
-    FT_Fixed *ft_coords = (FT_Fixed *) calloc (mm_var->num_axis, sizeof (FT_Fixed));
-    int *coords = (int *) calloc (mm_var->num_axis, sizeof (int));
+    FT_Fixed *ft_coords = (FT_Fixed *) hb_calloc (mm_var->num_axis, sizeof (FT_Fixed));
+    int *coords = (int *) hb_calloc (mm_var->num_axis, sizeof (int));
     if (coords && ft_coords)
     {
       if (!FT_Get_Var_Blend_Coordinates (ft_face, mm_var->num_axis, ft_coords))
@@ -866,12 +866,12 @@
 	  hb_font_set_var_coords_normalized (font, nullptr, 0);
       }
     }
-    free (coords);
-    free (ft_coords);
+    hb_free (coords);
+    hb_free (ft_coords);
 #ifdef HAVE_FT_DONE_MM_VAR
     FT_Done_MM_Var (ft_face->glyph->library, mm_var);
 #else
-    free (mm_var);
+    hb_free (mm_var);
 #endif
   }
 #endif
@@ -1020,13 +1020,13 @@
   const int *coords = hb_font_get_var_coords_normalized (font, &num_coords);
   if (num_coords)
   {
-    FT_Fixed *ft_coords = (FT_Fixed *) calloc (num_coords, sizeof (FT_Fixed));
+    FT_Fixed *ft_coords = (FT_Fixed *) hb_calloc (num_coords, sizeof (FT_Fixed));
     if (ft_coords)
     {
       for (unsigned int i = 0; i < num_coords; i++)
 	ft_coords[i] = coords[i] * 4;
       FT_Set_Var_Blend_Coordinates (ft_face, num_coords, ft_coords);
-      free (ft_coords);
+      hb_free (ft_coords);
     }
   }
 #endif

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gdi.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gdi.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gdi.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -50,16 +50,16 @@
   length = GetFontData (hdc, hb_uint32_swap (tag), 0, buffer, length);
   if (unlikely (length == GDI_ERROR)) goto fail_with_releasedc;
 
-  buffer = (char *) malloc (length);
+  buffer = (char *) hb_malloc (length);
   if (unlikely (!buffer)) goto fail_with_releasedc;
   length = GetFontData (hdc, hb_uint32_swap (tag), 0, buffer, length);
   if (unlikely (length == GDI_ERROR)) goto fail_with_releasedc_and_free;
   ReleaseDC (nullptr, hdc);
 
-  return hb_blob_create ((const char *) buffer, length, HB_MEMORY_MODE_WRITABLE, buffer, free);
+  return hb_blob_create ((const char *) buffer, length, HB_MEMORY_MODE_WRITABLE, buffer, hb_free);
 
 fail_with_releasedc_and_free:
-  free (buffer);
+  hb_free (buffer);
 fail_with_releasedc:
   ReleaseDC (nullptr, hdc);
 fail:

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -80,12 +80,12 @@
 #define HB_DEFINE_VALUE_TYPE(name) \
 	static hb_##name##_t *_hb_##name##_reference (const hb_##name##_t *l) \
 	{ \
-	  hb_##name##_t *c = (hb_##name##_t *) calloc (1, sizeof (hb_##name##_t)); \
+	  hb_##name##_t *c = (hb_##name##_t *) hb_calloc (1, sizeof (hb_##name##_t)); \
 	  if (unlikely (!c)) return nullptr; \
 	  *c = *l; \
 	  return c; \
 	} \
-	static void _hb_##name##_destroy (hb_##name##_t *l) { free (l); } \
+	static void _hb_##name##_destroy (hb_##name##_t *l) { hb_free (l); } \
 	HB_DEFINE_BOXED_TYPE (name, _hb_##name##_reference, _hb_##name##_destroy)
 
 HB_DEFINE_OBJECT_TYPE (buffer)

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -88,7 +88,7 @@
   {
     blob = face_data->face->reference_table (tag);
 
-    hb_graphite2_tablelist_t *p = (hb_graphite2_tablelist_t *) calloc (1, sizeof (hb_graphite2_tablelist_t));
+    hb_graphite2_tablelist_t *p = (hb_graphite2_tablelist_t *) hb_calloc (1, sizeof (hb_graphite2_tablelist_t));
     if (unlikely (!p)) {
       hb_blob_destroy (blob);
       return nullptr;
@@ -123,15 +123,16 @@
   }
   hb_blob_destroy (silf_blob);
 
-  hb_graphite2_face_data_t *data = (hb_graphite2_face_data_t *) calloc (1, sizeof (hb_graphite2_face_data_t));
+  hb_graphite2_face_data_t *data = (hb_graphite2_face_data_t *) hb_calloc (1, sizeof (hb_graphite2_face_data_t));
   if (unlikely (!data))
     return nullptr;
 
   data->face = face;
-  data->grface = gr_make_face (data, &hb_graphite2_get_table, gr_face_preloadAll);
+  const gr_face_ops ops = {sizeof(gr_face_ops), &hb_graphite2_get_table, NULL};
+  data->grface = gr_make_face_with_ops (data, &ops, gr_face_preloadAll);
 
   if (unlikely (!data->grface)) {
-    free (data);
+    hb_free (data);
     return nullptr;
   }
 
@@ -148,12 +149,12 @@
     hb_graphite2_tablelist_t *old = tlist;
     hb_blob_destroy (tlist->blob);
     tlist = tlist->next;
-    free (old);
+    hb_free (old);
   }
 
   gr_face_destroy (data->grface);
 
-  free (data);
+  hb_free (data);
 }
 
 /**

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-iter.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-iter.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-iter.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -46,7 +46,7 @@
  * TODO Document more.
  *
  * If iterator implementation implements operator!=, then can be
- * used in range-based for loop.  That comes free if the iterator
+ * used in range-based for loop.  That already happens if the iterator
  * is random-access.  Otherwise, the range-based for loop incurs
  * one traversal to find end(), which can be avoided if written
  * as a while-style for loop, or if iterator implements a faster

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-machinery.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-machinery.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-machinery.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -242,7 +242,7 @@
   static const Stored* get_null () { return &Null (Stored); }
   static Stored *create (Data *data)
   {
-    Stored *p = (Stored *) calloc (1, sizeof (Stored));
+    Stored *p = (Stored *) hb_calloc (1, sizeof (Stored));
     if (likely (p))
       p->init (data);
     return p;
@@ -249,7 +249,7 @@
   }
   static Stored *create ()
   {
-    Stored *p = (Stored *) calloc (1, sizeof (Stored));
+    Stored *p = (Stored *) hb_calloc (1, sizeof (Stored));
     if (likely (p))
       p->init ();
     return p;
@@ -257,7 +257,7 @@
   static void destroy (Stored *p)
   {
     p->fini ();
-    free (p);
+    hb_free (p);
   }
 
 //  private:

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -109,7 +109,7 @@
 
   map->fini_shallow ();
 
-  free (map);
+  hb_free (map);
 }
 
 /**

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -85,7 +85,7 @@
   }
   void fini_shallow ()
   {
-    free (items);
+    hb_free (items);
     items = nullptr;
     population = occupancy = 0;
   }
@@ -109,7 +109,7 @@
 
     unsigned int power = hb_bit_storage (population * 2 + 8);
     unsigned int new_size = 1u << power;
-    item_t *new_items = (item_t *) malloc ((size_t) new_size * sizeof (item_t));
+    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
     if (unlikely (!new_items))
     {
       successful = false;
@@ -135,7 +135,7 @@
 			 old_items[i].hash,
 			 old_items[i].value);
 
-    free (old_items);
+    hb_free (old_items);
 
     return true;
   }
@@ -224,7 +224,7 @@
     if (!items[i].is_unused ())
     {
       occupancy--;
-      if (items[i].is_tombstone ())
+      if (!items[i].is_tombstone ())
 	population--;
     }
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-meta.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-meta.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-meta.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -101,14 +101,14 @@
 template <typename T> static inline T hb_declval ();
 #define hb_declval(T) (hb_declval<T> ())
 
-template <typename T> struct hb_match_const		: hb_type_identity_t<T>, hb_bool_constant<false>{};
-template <typename T> struct hb_match_const<const T>	: hb_type_identity_t<T>, hb_bool_constant<true>	{};
+template <typename T> struct hb_match_const		: hb_type_identity_t<T>, hb_false_type	{};
+template <typename T> struct hb_match_const<const T>	: hb_type_identity_t<T>, hb_true_type	{};
 template <typename T> using hb_remove_const = typename hb_match_const<T>::type;
 template <typename T> using hb_add_const = const T;
 #define hb_is_const(T) hb_match_const<T>::value
-template <typename T> struct hb_match_reference		: hb_type_identity_t<T>, hb_bool_constant<false>{};
-template <typename T> struct hb_match_reference<T &>	: hb_type_identity_t<T>, hb_bool_constant<true>	{};
-template <typename T> struct hb_match_reference<T &&>	: hb_type_identity_t<T>, hb_bool_constant<true>	{};
+template <typename T> struct hb_match_reference		: hb_type_identity_t<T>, hb_false_type	{};
+template <typename T> struct hb_match_reference<T &>	: hb_type_identity_t<T>, hb_true_type	{};
+template <typename T> struct hb_match_reference<T &&>	: hb_type_identity_t<T>, hb_true_type	{};
 template <typename T> using hb_remove_reference = typename hb_match_reference<T>::type;
 template <typename T> auto _hb_try_add_lvalue_reference (hb_priority<1>) -> hb_type_identity<T&>;
 template <typename T> auto _hb_try_add_lvalue_reference (hb_priority<0>) -> hb_type_identity<T>;
@@ -117,8 +117,8 @@
 template <typename T> auto _hb_try_add_rvalue_reference (hb_priority<0>) -> hb_type_identity<T>;
 template <typename T> using hb_add_rvalue_reference = decltype (_hb_try_add_rvalue_reference<T> (hb_prioritize));
 #define hb_is_reference(T) hb_match_reference<T>::value
-template <typename T> struct hb_match_pointer		: hb_type_identity_t<T>, hb_bool_constant<false>{};
-template <typename T> struct hb_match_pointer<T *>	: hb_type_identity_t<T>, hb_bool_constant<true>	{};
+template <typename T> struct hb_match_pointer		: hb_type_identity_t<T>, hb_false_type	{};
+template <typename T> struct hb_match_pointer<T *>	: hb_type_identity_t<T>, hb_true_type	{};
 template <typename T> using hb_remove_pointer = typename hb_match_pointer<T>::type;
 template <typename T> auto _hb_try_add_pointer (hb_priority<1>) -> hb_type_identity<hb_remove_reference<T>*>;
 template <typename T> auto _hb_try_add_pointer (hb_priority<1>) -> hb_type_identity<T>;
@@ -259,15 +259,15 @@
 #define hb_is_arithmetic(T) hb_is_arithmetic<T>::value
 
 
-template <typename T>
-using hb_is_signed = hb_conditional<hb_is_arithmetic (T),
-				    hb_bool_constant<(T) -1 < (T) 0>,
-				    hb_false_type>;
+template <typename T, bool is_arithmetic> struct hb_is_signed_;
+template <typename T> struct hb_is_signed_<T, false>	: hb_false_type {};
+template <typename T> struct hb_is_signed_<T, true>	: hb_bool_constant<(T) -1 < (T) 0> {};
+template <typename T> struct hb_is_signed : hb_is_signed_<T, hb_is_arithmetic (T)> {};
 #define hb_is_signed(T) hb_is_signed<T>::value
-template <typename T>
-using hb_is_unsigned = hb_conditional<hb_is_arithmetic (T),
-				      hb_bool_constant<(T) 0 < (T) -1>,
-				      hb_false_type>;
+template <typename T, bool is_arithmetic> struct hb_is_unsigned_;
+template <typename T> struct hb_is_unsigned_<T, false>	: hb_false_type {};
+template <typename T> struct hb_is_unsigned_<T, true>	: hb_bool_constant<(T) 0 < (T) -1> {};
+template <typename T> struct hb_is_unsigned : hb_is_unsigned_<T, hb_is_arithmetic (T)> {};
 #define hb_is_unsigned(T) hb_is_unsigned<T>::value
 
 template <typename T> struct hb_int_min;
@@ -282,6 +282,7 @@
 template <> struct hb_int_min<unsigned long>		: hb_integral_constant<unsigned long,		0>		{};
 template <> struct hb_int_min<signed long long>		: hb_integral_constant<signed long long,	LLONG_MIN>	{};
 template <> struct hb_int_min<unsigned long long>	: hb_integral_constant<unsigned long long,	0>		{};
+template <typename T> struct hb_int_min<T *>		: hb_integral_constant<T *,			nullptr>	{};
 #define hb_int_min(T) hb_int_min<T>::value
 template <typename T> struct hb_int_max;
 template <> struct hb_int_max<char>			: hb_integral_constant<char,			CHAR_MAX>	{};

Added: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ms-feature-ranges.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ms-feature-ranges.cc	                        (rev 0)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ms-feature-ranges.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -0,0 +1,177 @@
+/*
+ * Copyright © 2011,2012,2013  Google, Inc.
+ * Copyright © 2021  Khaled Hosny
+ *
+ *  This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ * Google Author(s): Behdad Esfahbod
+ */
+
+#include "hb-ms-feature-ranges.hh"
+
+bool
+hb_ms_setup_features (const hb_feature_t                *features,
+		      unsigned int                       num_features,
+		      hb_vector_t<hb_ms_feature_t>      &feature_records, /* OUT */
+		      hb_vector_t<hb_ms_range_record_t> &range_records /* OUT */)
+{
+  feature_records.shrink(0);
+  range_records.shrink(0);
+
+  /* Sort features by start/end events. */
+  hb_vector_t<hb_ms_feature_event_t> feature_events;
+  for (unsigned int i = 0; i < num_features; i++)
+  {
+    hb_ms_active_feature_t feature;
+    feature.fea.tag_le = hb_uint32_swap (features[i].tag);
+    feature.fea.value = features[i].value;
+    feature.order = i;
+
+    hb_ms_feature_event_t *event;
+
+    event = feature_events.push ();
+    event->index = features[i].start;
+    event->start = true;
+    event->feature = feature;
+
+    event = feature_events.push ();
+    event->index = features[i].end;
+    event->start = false;
+    event->feature = feature;
+  }
+  feature_events.qsort ();
+  /* Add a strategic final event. */
+  {
+    hb_ms_active_feature_t feature;
+    feature.fea.tag_le = 0;
+    feature.fea.value = 0;
+    feature.order = num_features + 1;
+
+    auto *event = feature_events.push ();
+    event->index = 0; /* This value does magic. */
+    event->start = false;
+    event->feature = feature;
+  }
+
+  /* Scan events and save features for each range. */
+  hb_vector_t<hb_ms_active_feature_t> active_features;
+  unsigned int last_index = 0;
+  for (unsigned int i = 0; i < feature_events.length; i++)
+  {
+    auto *event = &feature_events[i];
+
+    if (event->index != last_index)
+    {
+      /* Save a snapshot of active features and the range. */
+      auto *range = range_records.push ();
+      auto offset = feature_records.length;
+
+      active_features.qsort ();
+      for (unsigned int j = 0; j < active_features.length; j++)
+      {
+        if (!j || active_features[j].fea.tag_le != feature_records[feature_records.length - 1].tag_le)
+        {
+          feature_records.push (active_features[j].fea);
+        }
+        else
+        {
+          /* Overrides value for existing feature. */
+          feature_records[feature_records.length - 1].value = active_features[j].fea.value;
+        }
+      }
+
+      /* Will convert to pointer after all is ready, since feature_records.array
+       * may move as we grow it. */
+      range->features.features = reinterpret_cast<hb_ms_feature_t *> (offset);
+      range->features.num_features = feature_records.length - offset;
+      range->index_first = last_index;
+      range->index_last  = event->index - 1;
+
+      last_index = event->index;
+    }
+
+    if (event->start)
+    {
+      active_features.push (event->feature);
+    }
+    else
+    {
+      auto *feature = active_features.find (&event->feature);
+      if (feature)
+        active_features.remove (feature - active_features.arrayZ);
+    }
+  }
+
+  if (!range_records.length) /* No active feature found. */
+    num_features = 0;
+
+  /* Fixup the pointers. */
+  for (unsigned int i = 0; i < range_records.length; i++)
+  {
+    auto *range = &range_records[i];
+    range->features.features = (hb_ms_feature_t *) feature_records + reinterpret_cast<uintptr_t> (range->features.features);
+  }
+
+  return !!num_features;
+}
+
+void
+hb_ms_make_feature_ranges (hb_vector_t<hb_ms_feature_t>      &feature_records,
+			   hb_vector_t<hb_ms_range_record_t> &range_records,
+			   unsigned int                       chars_offset,
+			   unsigned int                       chars_len,
+			   uint16_t                          *log_clusters,
+			   hb_vector_t<hb_ms_features_t*>    &range_features, /* OUT */
+			   hb_vector_t<uint32_t>             &range_counts /* OUT */)
+{
+  range_features.shrink (0);
+  range_counts.shrink (0);
+
+  auto *last_range = &range_records[0];
+  for (unsigned int i = chars_offset; i < chars_len; i++)
+  {
+    auto *range = last_range;
+    while (log_clusters[i] < range->index_first)
+      range--;
+    while (log_clusters[i] > range->index_last)
+      range++;
+    if (!range_features.length ||
+        &range->features != range_features[range_features.length - 1])
+    {
+      auto **features = range_features.push ();
+      auto *c = range_counts.push ();
+      if (unlikely (!features || !c))
+      {
+        range_features.shrink (0);
+        range_counts.shrink (0);
+        break;
+      }
+      *features = &range->features;
+      *c = 1;
+    }
+    else
+    {
+      range_counts[range_counts.length - 1]++;
+    }
+
+    last_range = range;
+  }
+}

Added: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ms-feature-ranges.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ms-feature-ranges.hh	                        (rev 0)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ms-feature-ranges.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -0,0 +1,96 @@
+/*
+ * Copyright © 2011,2012,2013  Google, Inc.
+ * Copyright © 2021  Khaled Hosny
+ *
+ *  This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ * Google Author(s): Behdad Esfahbod
+ */
+
+#ifndef HB_MS_FEATURE_RANGES_HH
+#define HB_MS_FEATURE_RANGES_HH
+
+#include "hb.hh"
+
+typedef struct hb_ms_feature_t {
+  uint32_t tag_le;
+  uint32_t value;
+} hb_ms_feature_t;
+
+typedef struct hb_ms_features_t {
+  hb_ms_feature_t *features;
+  uint32_t         num_features;
+} hb_ms_features_t;
+
+struct hb_ms_active_feature_t {
+  hb_ms_feature_t fea;
+  unsigned int order;
+
+  HB_INTERNAL static int cmp (const void *pa, const void *pb) {
+    const auto *a = (const hb_ms_active_feature_t *) pa;
+    const auto *b = (const hb_ms_active_feature_t *) pb;
+    return a->fea.tag_le < b->fea.tag_le ? -1 : a->fea.tag_le > b->fea.tag_le ? 1 :
+	   a->order < b->order ? -1 : a->order > b->order ? 1 :
+	   a->fea.value < b->fea.value ? -1 : a->fea.value > b->fea.value ? 1 :
+	   0;
+  }
+  bool operator== (const hb_ms_active_feature_t *f)
+  { return cmp (this, f) == 0; }
+};
+
+struct hb_ms_feature_event_t {
+  unsigned int index;
+  bool start;
+  hb_ms_active_feature_t feature;
+
+  HB_INTERNAL static int cmp (const void *pa, const void *pb)
+  {
+    const auto *a = (const hb_ms_feature_event_t *) pa;
+    const auto *b = (const hb_ms_feature_event_t *) pb;
+    return a->index < b->index ? -1 : a->index > b->index ? 1 :
+	   a->start < b->start ? -1 : a->start > b->start ? 1 :
+	   hb_ms_active_feature_t::cmp (&a->feature, &b->feature);
+  }
+};
+
+struct hb_ms_range_record_t {
+  hb_ms_features_t features;
+  unsigned int index_first; /* == start */
+  unsigned int index_last;  /* == end - 1 */
+};
+
+HB_INTERNAL bool
+hb_ms_setup_features (const hb_feature_t                *features,
+		      unsigned int                       num_features,
+		      hb_vector_t<hb_ms_feature_t>      &feature_records, /* OUT */
+		      hb_vector_t<hb_ms_range_record_t> &range_records /* OUT */);
+
+
+HB_INTERNAL void
+hb_ms_make_feature_ranges (hb_vector_t<hb_ms_feature_t>      &feature_records,
+			   hb_vector_t<hb_ms_range_record_t> &range_records,
+			   unsigned int                       chars_offset,
+			   unsigned int                       chars_len,
+			   uint16_t                          *log_clusters,
+			   hb_vector_t<hb_ms_features_t*>    &range_features, /* OUT */
+			   hb_vector_t<uint32_t>             &range_counts /* OUT */);
+
+#endif /* HB_MS_FEATURE_RANGES_HH */

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -39,8 +39,7 @@
 
 /* We need external help for these */
 
-#if defined(HB_MUTEX_IMPL_INIT) \
- && defined(hb_mutex_impl_init) \
+#if defined(hb_mutex_impl_init) \
  && defined(hb_mutex_impl_lock) \
  && defined(hb_mutex_impl_unlock) \
  && defined(hb_mutex_impl_finish)
@@ -52,7 +51,6 @@
 
 #include <pthread.h>
 typedef pthread_mutex_t hb_mutex_impl_t;
-#define HB_MUTEX_IMPL_INIT	PTHREAD_MUTEX_INITIALIZER
 #define hb_mutex_impl_init(M)	pthread_mutex_init (M, nullptr)
 #define hb_mutex_impl_lock(M)	pthread_mutex_lock (M)
 #define hb_mutex_impl_unlock(M)	pthread_mutex_unlock (M)
@@ -62,7 +60,6 @@
 #elif !defined(HB_NO_MT) && defined(_WIN32)
 
 typedef CRITICAL_SECTION hb_mutex_impl_t;
-#define HB_MUTEX_IMPL_INIT	{0}
 #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 #define hb_mutex_impl_init(M)	InitializeCriticalSectionEx (M, 0, 0)
 #else
@@ -76,7 +73,6 @@
 #elif defined(HB_NO_MT)
 
 typedef int hb_mutex_impl_t;
-#define HB_MUTEX_IMPL_INIT	0
 #define hb_mutex_impl_init(M)	HB_STMT_START {} HB_STMT_END
 #define hb_mutex_impl_lock(M)	HB_STMT_START {} HB_STMT_END
 #define hb_mutex_impl_unlock(M)	HB_STMT_START {} HB_STMT_END
@@ -91,8 +87,6 @@
 #endif
 
 
-#define HB_MUTEX_INIT		{HB_MUTEX_IMPL_INIT}
-
 struct hb_mutex_t
 {
   hb_mutex_impl_t m;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-object.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-object.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-object.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -217,7 +217,7 @@
 template <typename Type>
 static inline Type *hb_object_create ()
 {
-  Type *obj = (Type *) calloc (1, sizeof (Type));
+  Type *obj = (Type *) hb_calloc (1, sizeof (Type));
 
   if (unlikely (!obj))
     return obj;
@@ -284,7 +284,7 @@
   if (user_data)
   {
     user_data->fini ();
-    free (user_data);
+    hb_free (user_data);
     user_data = nullptr;
   }
 }
@@ -303,7 +303,7 @@
   hb_user_data_array_t *user_data = obj->header.user_data.get ();
   if (unlikely (!user_data))
   {
-    user_data = (hb_user_data_array_t *) calloc (sizeof (hb_user_data_array_t), 1);
+    user_data = (hb_user_data_array_t *) hb_calloc (sizeof (hb_user_data_array_t), 1);
     if (unlikely (!user_data))
       return false;
     user_data->init ();
@@ -310,7 +310,7 @@
     if (unlikely (!obj->header.user_data.cmpexch (nullptr, user_data)))
     {
       user_data->fini ();
-      free (user_data);
+      hb_free (user_data);
       goto retry;
     }
   }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -35,7 +35,6 @@
 
 namespace OT {
 
-
 /*
  *
  * The OpenType Font File
@@ -102,7 +101,13 @@
   {
     Tag t;
     t = tag;
-    return tables.bfind (t, table_index, HB_BFIND_NOT_FOUND_STORE, Index::NOT_FOUND_INDEX);
+    /* Use lfind for small fonts; there are fonts that have unsorted table entries;
+     * those tend to work in other tools, so tolerate them.
+     * https://github.com/harfbuzz/harfbuzz/issues/3065 */
+    if (tables.len < 16)
+      return tables.lfind (t, table_index, HB_NOT_FOUND_STORE, Index::NOT_FOUND_INDEX);
+    else
+      return tables.bfind (t, table_index, HB_NOT_FOUND_STORE, Index::NOT_FOUND_INDEX);
   }
   const TableRecord& get_table_by_tag (hb_tag_t tag) const
   {
@@ -113,44 +118,53 @@
 
   public:
 
-  template <typename item_t>
+  template <typename Iterator,
+	    hb_requires ((hb_is_source_of<Iterator, hb_pair_t<hb_tag_t, hb_blob_t *>>::value))>
   bool serialize (hb_serialize_context_t *c,
 		  hb_tag_t sfnt_tag,
-		  hb_array_t<item_t> items)
+		  Iterator it)
   {
     TRACE_SERIALIZE (this);
     /* Alloc 12 for the OTHeader. */
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
     /* Write sfntVersion (bytes 0..3). */
     sfnt_version = sfnt_tag;
     /* Take space for numTables, searchRange, entrySelector, RangeShift
      * and the TableRecords themselves.  */
-    if (unlikely (!tables.serialize (c, items.length))) return_trace (false);
+    unsigned num_items = it.len ();
+    if (unlikely (!tables.serialize (c, num_items))) return_trace (false);
 
     const char *dir_end = (const char *) c->head;
     HBUINT32 *checksum_adjustment = nullptr;
 
     /* Write OffsetTables, alloc for and write actual table blobs. */
-    for (unsigned int i = 0; i < tables.len; i++)
+    unsigned i = 0;
+    for (hb_pair_t<hb_tag_t, hb_blob_t*> entry : it)
     {
-      TableRecord &rec = tables.arrayZ[i];
-      hb_blob_t *blob = items[i].blob;
-      rec.tag = items[i].tag;
-      rec.length = blob->length;
-      rec.offset.serialize (c, this);
+      hb_blob_t *blob = entry.second;
+      unsigned len = blob->length;
 
       /* Allocate room for the table and copy it. */
-      char *start = (char *) c->allocate_size<void> (rec.length);
+      char *start = (char *) c->allocate_size<void> (len);
       if (unlikely (!start)) return false;
 
-      if (likely (rec.length))
-	memcpy (start, blob->data, rec.length);
+      TableRecord &rec = tables.arrayZ[i];
+      rec.tag = entry.first;
+      rec.length = len;
+      rec.offset = 0;
+      if (unlikely (!c->check_assign (rec.offset,
+				      (unsigned) ((char *) start - (char *) this),
+				      HB_SERIALIZE_ERROR_OFFSET_OVERFLOW)))
+        return_trace (false);
 
+      if (likely (len))
+	memcpy (start, blob->data, len);
+
       /* 4-byte alignment. */
       c->align (4);
       const char *end = (const char *) c->head;
 
-      if (items[i].tag == HB_OT_TAG_head &&
+      if (entry.first == HB_OT_TAG_head &&
 	  (unsigned) (end - start) >= head::static_size)
       {
 	head *h = (head *) start;
@@ -159,6 +173,7 @@
       }
 
       rec.checkSum.set_for_data (start, end - start);
+      i++;
     }
 
     tables.qsort ();
@@ -170,7 +185,7 @@
       /* The following line is a slower version of the following block. */
       //checksum.set_for_data (this, (const char *) c->head - (const char *) this);
       checksum.set_for_data (this, dir_end - (const char *) this);
-      for (unsigned int i = 0; i < items.length; i++)
+      for (unsigned int i = 0; i < num_items; i++)
       {
 	TableRecord &rec = tables.arrayZ[i];
 	checksum = checksum + rec.checkSum;
@@ -477,14 +492,15 @@
     }
   }
 
-  template <typename item_t>
+  template <typename Iterator,
+	    hb_requires ((hb_is_source_of<Iterator, hb_pair_t<hb_tag_t, hb_blob_t *>>::value))>
   bool serialize_single (hb_serialize_context_t *c,
 			 hb_tag_t sfnt_tag,
-			 hb_array_t<item_t> items)
+			 Iterator items)
   {
     TRACE_SERIALIZE (this);
     assert (sfnt_tag != TTCTag);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
     return_trace (u.fontFace.serialize (c, sfnt_tag, items));
   }
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -212,15 +212,6 @@
 
   bool is_null () const { return has_null && 0 == *this; }
 
-  void *serialize (hb_serialize_context_t *c, const void *base)
-  {
-    void *t = c->start_embed<void> ();
-    c->check_assign (*this,
-                     (unsigned) ((char *) t - (char *) base),
-                     HB_SERIALIZE_ERROR_OFFSET_OVERFLOW);
-    return t;
-  }
-
   public:
   DEFINE_SIZE_STATIC (sizeof (Type));
 };
@@ -328,10 +319,6 @@
 	    hb_enable_if (hb_is_convertible (Base, void *))>
   friend Type& operator + (OffsetTo &offset, Base &&base) { return offset ((void *) base); }
 
-  Type& serialize (hb_serialize_context_t *c, const void *base)
-  {
-    return * (Type *) Offset<OffsetType>::serialize (c, base);
-  }
 
   template <typename ...Ts>
   bool serialize_subset (hb_subset_context_t *c, const OffsetTo& src,
@@ -355,6 +342,23 @@
     return ret;
   }
 
+
+  template <typename ...Ts>
+  bool serialize_serialize (hb_serialize_context_t *c, Ts&&... ds)
+  {
+    *this = 0;
+
+    Type* obj = c->push<Type> ();
+    bool ret = obj->serialize (c, hb_forward<Ts> (ds)...);
+
+    if (ret)
+      c->add_link (*this, c->pop_pack ());
+    else
+      c->pop_discard ();
+
+    return ret;
+  }
+
   /* TODO: Somehow merge this with previous function into a serialize_dispatch(). */
   /* Workaround clang bug: https://bugs.llvm.org/show_bug.cgi?id=23029
    * Can't compile: whence = hb_serialize_context_t::Head followed by Ts&&...
@@ -464,8 +468,10 @@
   const Type &lsearch (unsigned int len, const T &x, const Type &not_found = Null (Type)) const
   { return *as_array (len).lsearch (x, &not_found); }
   template <typename T>
-  bool lfind (unsigned int len, const T &x, unsigned *pos = nullptr) const
-  { return as_array (len).lfind (x, pos); }
+  bool lfind (unsigned int len, const T &x, unsigned int *i = nullptr,
+	      hb_not_found_t not_found = HB_NOT_FOUND_DONT_STORE,
+	      unsigned int to_store = (unsigned int) -1) const
+  { return as_array (len).lfind (x, i, not_found, to_store); }
 
   void qsort (unsigned int len, unsigned int start = 0, unsigned int end = (unsigned int) -1)
   { as_array (len).qsort (start, end); }
@@ -473,7 +479,7 @@
   bool serialize (hb_serialize_context_t *c, unsigned int items_len)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend (*this, items_len))) return_trace (false);
+    if (unlikely (!c->extend (this, items_len))) return_trace (false);
     return_trace (true);
   }
   template <typename Iterator,
@@ -573,7 +579,7 @@
   { return *as_array (len).bsearch (x, &not_found); }
   template <typename T>
   bool bfind (unsigned int len, const T &x, unsigned int *i = nullptr,
-	      hb_bfind_not_found_t not_found = HB_BFIND_NOT_FOUND_DONT_STORE,
+	      hb_not_found_t not_found = HB_NOT_FOUND_DONT_STORE,
 	      unsigned int to_store = (unsigned int) -1) const
   { return as_array (len).bfind (x, i, not_found, to_store); }
 };
@@ -635,8 +641,10 @@
   const Type &lsearch (const T &x, const Type &not_found = Null (Type)) const
   { return *as_array ().lsearch (x, &not_found); }
   template <typename T>
-  bool lfind (const T &x, unsigned *pos = nullptr) const
-  { return as_array ().lfind (x, pos); }
+  bool lfind (const T &x, unsigned int *i = nullptr,
+	      hb_not_found_t not_found = HB_NOT_FOUND_DONT_STORE,
+	      unsigned int to_store = (unsigned int) -1) const
+  { return as_array ().lfind (x, i, not_found, to_store); }
 
   void qsort (unsigned int start = 0, unsigned int end = (unsigned int) -1)
   { as_array ().qsort (start, end); }
@@ -644,9 +652,9 @@
   HB_NODISCARD bool serialize (hb_serialize_context_t *c, unsigned items_len)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
     c->check_assign (len, items_len, HB_SERIALIZE_ERROR_ARRAY_OVERFLOW);
-    if (unlikely (!c->extend (*this))) return_trace (false);
+    if (unlikely (!c->extend (this))) return_trace (false);
     return_trace (true);
   }
   template <typename Iterator,
@@ -667,7 +675,7 @@
   {
     TRACE_SERIALIZE (this);
     len++;
-    if (unlikely (!len || !c->extend (*this)))
+    if (unlikely (!len || !c->extend (this)))
     {
       len--;
       return_trace (nullptr);
@@ -794,9 +802,9 @@
   bool serialize (hb_serialize_context_t *c, unsigned int items_len)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
     c->check_assign (lenP1, items_len + 1, HB_SERIALIZE_ERROR_ARRAY_OVERFLOW);
-    if (unlikely (!c->extend (*this))) return_trace (false);
+    if (unlikely (!c->extend (this))) return_trace (false);
     return_trace (true);
   }
   template <typename Iterator,
@@ -937,7 +945,7 @@
   { return *as_array ().bsearch (x, &not_found); }
   template <typename T>
   bool bfind (const T &x, unsigned int *i = nullptr,
-	      hb_bfind_not_found_t not_found = HB_BFIND_NOT_FOUND_DONT_STORE,
+	      hb_not_found_t not_found = HB_NOT_FOUND_DONT_STORE,
 	      unsigned int to_store = (unsigned int) -1) const
   { return as_array ().bfind (x, i, not_found, to_store); }
 };

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -126,7 +126,7 @@
     else
     {
       /* serialize CFFIndex header */
-      if (unlikely (!c->extend_min (*this))) return_trace (false);
+      if (unlikely (!c->extend_min (this))) return_trace (false);
       this->count = byteArray.length;
       this->offSize = offSize_;
       if (unlikely (!c->allocate_size<HBUINT8> (offSize_ * (byteArray.length + 1))))
@@ -214,7 +214,7 @@
     unsigned off_size = calcOffSize (total);
 
     /* serialize CFFIndex header */
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
     this->count = it.len ();
     this->offSize = off_size;
     if (unlikely (!c->allocate_size<HBUINT8> (off_size * (it.len () + 1))))
@@ -335,7 +335,7 @@
   {
     TRACE_SERIALIZE (this);
     /* serialize CFFIndex header */
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
     this->count = dataArrayLen;
     this->offSize = offSize_;
     if (unlikely (!c->allocate_size<HBUINT8> (offSize_ * (dataArrayLen + 1))))

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -187,7 +187,7 @@
 		  const hb_vector_t<code_pair_t>& supp_codes)
   {
     TRACE_SERIALIZE (this);
-    Encoding *dest = c->extend_min (*this);
+    Encoding *dest = c->extend_min (this);
     if (unlikely (!dest)) return_trace (false);
     dest->format = format | ((supp_codes.length > 0) ? 0x80 : 0);
     switch (format) {
@@ -457,7 +457,7 @@
 		  const hb_vector_t<code_pair_t>& sid_ranges)
   {
     TRACE_SERIALIZE (this);
-    Charset *dest = c->extend_min (*this);
+    Charset *dest = c->extend_min (this);
     if (unlikely (!dest)) return_trace (false);
     dest->format = format;
     switch (format)
@@ -713,6 +713,7 @@
       case OpCode_Notice:
       case OpCode_Copyright:
       case OpCode_FullName:
+      case OpCode_FontName:
       case OpCode_FamilyName:
       case OpCode_Weight:
       case OpCode_PostScript:

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	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -49,6 +49,12 @@
     *glyph = gid;
     return true;
   }
+
+  unsigned get_language () const
+  {
+    return language;
+  }
+
   void collect_unicodes (hb_set_t *out) const
   {
     for (unsigned int i = 0; i < 256; i++)
@@ -253,7 +259,7 @@
     if (format4_iter.len () == 0) return;
 
     unsigned table_initpos = c->length ();
-    if (unlikely (!c->extend_min (*this))) return;
+    if (unlikely (!c->extend_min (this))) return;
     this->format = 4;
 
     //serialize endCode[]
@@ -287,6 +293,11 @@
 		       : 0;
   }
 
+  unsigned get_language () const
+  {
+    return language;
+  }
+
   struct accelerator_t
   {
     accelerator_t () {}
@@ -549,6 +560,12 @@
     *glyph = gid;
     return true;
   }
+
+  unsigned get_language () const
+  {
+    return language;
+  }
+
   void collect_unicodes (hb_set_t *out) const
   {
     hb_codepoint_t start = startCharCode;
@@ -608,6 +625,11 @@
     return true;
   }
 
+  unsigned get_language () const
+  {
+    return language;
+  }
+
   void collect_unicodes (hb_set_t *out, unsigned int num_glyphs) const
   {
     for (unsigned int i = 0; i < this->groups.len; i++)
@@ -693,7 +715,7 @@
   {
     if (it.len () == 0) return;
     unsigned table_initpos = c->length ();
-    if (unlikely (!c->extend_min (*this))) return;
+    if (unlikely (!c->extend_min (this))) return;
 
     hb_codepoint_t startCharCode = 0xFFFF, endCharCode = 0xFFFF;
     hb_codepoint_t glyphID = 0;
@@ -1077,7 +1099,7 @@
     unsigned table_initpos = c->length ();
     const char* init_tail = c->tail;
 
-    if (unlikely (!c->extend_min (*this))) return;
+    if (unlikely (!c->extend_min (this))) return;
     this->format = 14;
 
     auto src_tbl = reinterpret_cast<const CmapSubtableFormat14*> (base);
@@ -1238,6 +1260,20 @@
     }
   }
 
+  unsigned get_language () const
+  {
+    switch (u.format) {
+    case  0: return u.format0 .get_language ();
+    case  4: return u.format4 .get_language ();
+    case  6: return u.format6 .get_language ();
+    case 10: return u.format10.get_language ();
+    case 12: return u.format12.get_language ();
+    case 13: return u.format13.get_language ();
+    case 14:
+    default: return 0;
+    }
+  }
+
   template<typename Iterator,
 	   hb_requires (hb_is_iterator (Iterator))>
   void serialize (hb_serialize_context_t *c,
@@ -1367,41 +1403,18 @@
     for (const EncodingRecord& _ : encodingrec_iter)
     {
       unsigned format = (base+_.subtable).u.format;
-      if (!plan->glyphs_requested->is_empty ())
-      {
-	hb_set_t unicodes_set;
-	hb_map_t cp_glyphid_map;
-	(base+_.subtable).collect_mapping (&unicodes_set, &cp_glyphid_map);
+      if (format != 4 && format != 12 && format != 14) continue;
 
-	auto table_iter =
-	+ hb_zip (unicodes_set.iter(), unicodes_set.iter() | hb_map(cp_glyphid_map))
-	| hb_filter (plan->_glyphset, hb_second)
-	| hb_filter ([plan] (const hb_pair_t<hb_codepoint_t, hb_codepoint_t>& p)
-		     {
-		       return plan->unicodes->has (p.first) ||
-			      plan->glyphs_requested->has (p.second);
-		     })
-	| hb_map ([plan] (const hb_pair_t<hb_codepoint_t, hb_codepoint_t>& p_org)
-		  {
-		    return hb_pair_t<hb_codepoint_t, hb_codepoint_t> (p_org.first, plan->glyph_map->get(p_org.second));
-		  })
-	;
+      hb_set_t unicodes_set;
+      (base+_.subtable).collect_unicodes (&unicodes_set);
 
-	if (format == 4) c->copy (_, table_iter, 4u, base, plan, &format4objidx);
-	else if (format == 12) c->copy (_, table_iter, 12u, base, plan, &format12objidx);
-	else if (format == 14) c->copy (_, table_iter, 14u, base, plan, &format14objidx);
-      }
-      /* when --gids option is not used, we iterate input unicodes instead of
-       * all codepoints in each subtable, which is more efficient */
-      else
+      if (format == 4) c->copy (_, + it | hb_filter (unicodes_set, hb_first), 4u, base, plan, &format4objidx);
+      else if (format == 12)
       {
-	hb_set_t unicodes_set;
-	(base+_.subtable).collect_unicodes (&unicodes_set);
-
-	if (format == 4) c->copy (_, + it | hb_filter (unicodes_set, hb_first), 4u, base, plan, &format4objidx);
-	else if (format == 12) c->copy (_, + it | hb_filter (unicodes_set, hb_first), 12u, base, plan, &format12objidx);
-	else if (format == 14) c->copy (_, it, 14u, base, plan, &format14objidx);
+        if (_can_drop (_, unicodes_set, base, + it | hb_map (hb_first), encodingrec_iter)) continue;
+        c->copy (_, + it | hb_filter (unicodes_set, hb_first), 12u, base, plan, &format12objidx);
       }
+      else if (format == 14) c->copy (_, it, 14u, base, plan, &format14objidx);
     }
 
     c->check_assign(this->encodingRecord.len,
@@ -1409,6 +1422,60 @@
                     HB_SERIALIZE_ERROR_INT_OVERFLOW);
   }
 
+  template<typename Iterator, typename EncodingRecordIterator,
+      hb_requires (hb_is_iterator (Iterator)),
+      hb_requires (hb_is_iterator (EncodingRecordIterator))>
+  bool _can_drop (const EncodingRecord& cmap12,
+                  const hb_set_t& cmap12_unicodes,
+                  const void* base,
+                  Iterator subset_unicodes,
+                  EncodingRecordIterator encoding_records)
+  {
+    for (auto cp : + subset_unicodes | hb_filter (cmap12_unicodes))
+    {
+      if (cp >= 0x10000) return false;
+    }
+
+    unsigned target_platform;
+    unsigned target_encoding;
+    unsigned target_language = (base+cmap12.subtable).get_language ();
+
+    if (cmap12.platformID == 0 && cmap12.encodingID == 4)
+    {
+      target_platform = 0;
+      target_encoding = 3;
+    } else if (cmap12.platformID == 3 && cmap12.encodingID == 10) {
+      target_platform = 3;
+      target_encoding = 1;
+    } else {
+      return false;
+    }
+
+    for (const auto& _ : encoding_records)
+    {
+      if (_.platformID != target_platform
+          || _.encodingID != target_encoding
+          || (base+_.subtable).get_language() != target_language)
+        continue;
+
+      hb_set_t sibling_unicodes;
+      (base+_.subtable).collect_unicodes (&sibling_unicodes);
+
+      auto cmap12 = + subset_unicodes | hb_filter (cmap12_unicodes);
+      auto sibling = + subset_unicodes | hb_filter (sibling_unicodes);
+      for (; cmap12 && sibling; cmap12++, sibling++)
+      {
+        unsigned a = *cmap12;
+        unsigned b = *sibling;
+        if (a != b) return false;
+      }
+
+      return !cmap12 && !sibling;
+    }
+
+    return false;
+  }
+
   void closure_glyphs (const hb_set_t      *unicodes,
 		       hb_set_t            *glyphset) const
   {

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cbdt-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cbdt-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cbdt-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -738,7 +738,7 @@
 						 cbdt_prime->length,
 						 HB_MEMORY_MODE_WRITABLE,
 						 cbdt_prime->arrayZ,
-						 free);
+						 hb_free);
     cbdt_prime->init ();  // Leak arrayZ to the blob.
     bool ret = c->plan->add_table (HB_OT_TAG_CBDT, cbdt_prime_blob);
     hb_blob_destroy (cbdt_prime_blob);

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-colr-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-colr-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-colr-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -37,9 +37,79 @@
  */
 #define HB_OT_TAG_COLR HB_TAG('C','O','L','R')
 
+#ifndef COLRV1_MAX_NESTING_LEVEL
+#define COLRV1_MAX_NESTING_LEVEL	100
+#endif
 
+#ifndef COLRV1_ENABLE_SUBSETTING
+#define COLRV1_ENABLE_SUBSETTING 0
+#endif
+
 namespace OT {
 
+struct COLR;
+struct hb_colrv1_closure_context_t :
+       hb_dispatch_context_t<hb_colrv1_closure_context_t>
+{
+  template <typename T>
+  return_t dispatch (const T &obj)
+  {
+    if (unlikely (nesting_level_left == 0))
+      return hb_empty_t ();
+
+    if (paint_visited (&obj))
+      return hb_empty_t ();
+
+    nesting_level_left--;
+    obj.closurev1 (this);
+    nesting_level_left++;
+    return hb_empty_t ();
+  }
+  static return_t default_return_value () { return hb_empty_t (); }
+
+  bool paint_visited (const void *paint)
+  {
+    hb_codepoint_t delta = (hb_codepoint_t) ((uintptr_t) paint - (uintptr_t) base);
+     if (visited_paint.has (delta))
+      return true;
+
+    visited_paint.add (delta);
+    return false;
+  }
+
+  const COLR* get_colr_table () const
+  { return reinterpret_cast<const COLR *> (base); }
+
+  void add_glyph (unsigned glyph_id)
+  { glyphs->add (glyph_id); }
+
+  void add_layer_indices (unsigned first_layer_index, unsigned num_of_layers)
+  { layer_indices->add_range (first_layer_index, first_layer_index + num_of_layers - 1); }
+
+  void add_palette_index (unsigned palette_index)
+  { palette_indices->add (palette_index); }
+
+  public:
+  const void *base;
+  hb_set_t visited_paint;
+  hb_set_t *glyphs;
+  hb_set_t *layer_indices;
+  hb_set_t *palette_indices;
+  unsigned nesting_level_left;
+
+  hb_colrv1_closure_context_t (const void *base_,
+                               hb_set_t *glyphs_,
+                               hb_set_t *layer_indices_,
+                               hb_set_t *palette_indices_,
+                               unsigned nesting_level_left_ = COLRV1_MAX_NESTING_LEVEL) :
+                          base (base_),
+                          glyphs (glyphs_),
+                          layer_indices (layer_indices_),
+                          palette_indices (palette_indices_),
+                          nesting_level_left (nesting_level_left_)
+  {}
+};
+
 struct LayerRecord
 {
   operator hb_ot_color_layer_t () const { return {glyphId, colorIdx}; }
@@ -125,6 +195,15 @@
 template <template<typename> class Var>
 struct ColorIndex
 {
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    auto *out = c->serializer->embed (*this);
+    if (unlikely (!out)) return_trace (false);
+    return_trace (c->serializer->check_assign (out->paletteIndex, c->plan->colr_palettes->get (paletteIndex),
+                                               HB_SERIALIZE_ERROR_INT_OVERFLOW));
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -140,6 +219,13 @@
 template <template<typename> class Var>
 struct ColorStop
 {
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    if (unlikely (!c->serializer->embed (stopOffset))) return_trace (false);
+    return_trace (color.subset (c));
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -166,6 +252,23 @@
 template <template<typename> class Var>
 struct ColorLine
 {
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    auto *out = c->serializer->start_embed (this);
+    if (unlikely (!out)) return_trace (false);
+    if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
+
+    if (!c->serializer->check_assign (out->extend, extend, HB_SERIALIZE_ERROR_INT_OVERFLOW)) return_trace (false);
+    if (!c->serializer->check_assign (out->stops.len, stops.len, HB_SERIALIZE_ERROR_ARRAY_OVERFLOW)) return_trace (false);
+
+    for (const auto& stop : stops.iter ())
+    {
+      if (!stop.subset (c)) return_trace (false);
+    }
+    return_trace (true);
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -202,7 +305,7 @@
     COMPOSITE_DEST_ATOP      = 10,  // https://www.w3.org/TR/compositing-1/#porterduffcompositingoperators_dstatop
     COMPOSITE_XOR            = 11,  // https://www.w3.org/TR/compositing-1/#porterduffcompositingoperators_xor
     COMPOSITE_PLUS           = 12,  // https://www.w3.org/TR/compositing-1/#porterduffcompositingoperators_plus
-  
+
     // Blend modes
     // https://www.w3.org/TR/compositing-1/#blending
     COMPOSITE_SCREEN         = 13,  // https://www.w3.org/TR/compositing-1/#blendingscreen
@@ -216,7 +319,7 @@
     COMPOSITE_DIFFERENCE     = 21,  // https://www.w3.org/TR/compositing-1/#blendingdifference
     COMPOSITE_EXCLUSION      = 22,  // https://www.w3.org/TR/compositing-1/#blendingexclusion
     COMPOSITE_MULTIPLY       = 23,  // https://www.w3.org/TR/compositing-1/#blendingmultiply
-  
+
     // Modes that, uniquely, do not operate on components
     // https://www.w3.org/TR/compositing-1/#blendingnonseparable
     COMPOSITE_HSL_HUE        = 24,  // https://www.w3.org/TR/compositing-1/#blendinghue
@@ -249,6 +352,19 @@
 
 struct PaintColrLayers
 {
+  void closurev1 (hb_colrv1_closure_context_t* c) const;
+
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    auto *out = c->serializer->embed (this);
+    if (unlikely (!out)) return_trace (false);
+    return_trace (c->serializer->check_assign (out->firstLayerIndex, c->plan->colrv1_layers->get (firstLayerIndex),
+                                               HB_SERIALIZE_ERROR_INT_OVERFLOW));
+
+    return_trace (true);
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -265,6 +381,16 @@
 template <template<typename> class Var>
 struct PaintSolid
 {
+  void closurev1 (hb_colrv1_closure_context_t* c) const
+  { c->add_palette_index (color.paletteIndex); }
+
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    if (unlikely (!c->serializer->embed (format))) return_trace (false);
+    return_trace (color.subset (c));
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -280,6 +406,21 @@
 template <template<typename> class Var>
 struct PaintLinearGradient
 {
+  void closurev1 (hb_colrv1_closure_context_t* c) const
+  {
+    for (const auto &stop : (this+colorLine).stops.iter ())
+      c->add_palette_index (stop.color.paletteIndex);
+  }
+
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    auto *out = c->serializer->embed (this);
+    if (unlikely (!out)) return_trace (false);
+
+    return_trace (out->colorLine.serialize_subset (c, colorLine, this));
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -302,6 +443,21 @@
 template <template<typename> class Var>
 struct PaintRadialGradient
 {
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    auto *out = c->serializer->embed (this);
+    if (unlikely (!out)) return_trace (false);
+
+    return_trace (out->colorLine.serialize_subset (c, colorLine, this));
+  }
+
+  void closurev1 (hb_colrv1_closure_context_t* c) const
+  {
+    for (const auto &stop : (this+colorLine).stops.iter ())
+      c->add_palette_index (stop.color.paletteIndex);
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -324,6 +480,21 @@
 template <template<typename> class Var>
 struct PaintSweepGradient
 {
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    auto *out = c->serializer->embed (this);
+    if (unlikely (!out)) return_trace (false);
+
+    return_trace (out->colorLine.serialize_subset (c, colorLine, this));
+  }
+
+  void closurev1 (hb_colrv1_closure_context_t* c) const
+  {
+    for (const auto &stop : (this+colorLine).stops.iter ())
+      c->add_palette_index (stop.color.paletteIndex);
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -345,6 +516,21 @@
 // Paint a non-COLR glyph, filled as indicated by paint.
 struct PaintGlyph
 {
+  void closurev1 (hb_colrv1_closure_context_t* c) const;
+
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    auto *out = c->serializer->embed (this);
+    if (unlikely (!out)) return_trace (false);
+
+    if (! c->serializer->check_assign (out->gid, c->plan->glyph_map->get (gid),
+                                       HB_SERIALIZE_ERROR_INT_OVERFLOW))
+      return_trace (false);
+
+    return_trace (out->paint.serialize_subset (c, paint, this));
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -360,6 +546,18 @@
 
 struct PaintColrGlyph
 {
+  void closurev1 (hb_colrv1_closure_context_t* c) const;
+
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    auto *out = c->serializer->embed (this);
+    if (unlikely (!out)) return_trace (false);
+
+    return_trace (c->serializer->check_assign (out->gid, c->plan->glyph_map->get (gid),
+                                               HB_SERIALIZE_ERROR_INT_OVERFLOW));
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -375,6 +573,17 @@
 template <template<typename> class Var>
 struct PaintTransform
 {
+  HB_INTERNAL void closurev1 (hb_colrv1_closure_context_t* c) const;
+
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    auto *out = c->serializer->embed (this);
+    if (unlikely (!out)) return_trace (false);
+
+    return_trace (out->src.serialize_subset (c, src, this));
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -391,6 +600,17 @@
 template <template<typename> class Var>
 struct PaintTranslate
 {
+  HB_INTERNAL void closurev1 (hb_colrv1_closure_context_t* c) const;
+
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    auto *out = c->serializer->embed (this);
+    if (unlikely (!out)) return_trace (false);
+
+    return_trace (out->src.serialize_subset (c, src, this));
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -408,6 +628,17 @@
 template <template<typename> class Var>
 struct PaintRotate
 {
+  HB_INTERNAL void closurev1 (hb_colrv1_closure_context_t* c) const;
+
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    auto *out = c->serializer->embed (this);
+    if (unlikely (!out)) return_trace (false);
+
+    return_trace (out->src.serialize_subset (c, src, this));
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -426,6 +657,17 @@
 template <template<typename> class Var>
 struct PaintSkew
 {
+  HB_INTERNAL void closurev1 (hb_colrv1_closure_context_t* c) const;
+
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    auto *out = c->serializer->embed (this);
+    if (unlikely (!out)) return_trace (false);
+
+    return_trace (out->src.serialize_subset (c, src, this));
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -444,6 +686,18 @@
 
 struct PaintComposite
 {
+  void closurev1 (hb_colrv1_closure_context_t* c) const;
+
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    auto *out = c->serializer->embed (this);
+    if (unlikely (!out)) return_trace (false);
+
+    if (!out->src.serialize_subset (c, src, this)) return_trace (false);
+    return_trace (out->backdrop.serialize_subset (c, backdrop, this));
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -523,27 +777,83 @@
   int cmp (hb_codepoint_t g) const
   { return g < glyphId ? -1 : g > glyphId ? 1 : 0; }
 
-  bool sanitize (hb_sanitize_context_t *c) const
+  bool serialize (hb_serialize_context_t *s, const hb_map_t* glyph_map,
+                  const void* src_base, hb_subset_context_t *c) const
   {
+    TRACE_SERIALIZE (this);
+    auto *out = s->embed (this);
+    if (unlikely (!out)) return_trace (false);
+    if (!s->check_assign (out->glyphId, glyph_map->get (glyphId),
+                          HB_SERIALIZE_ERROR_INT_OVERFLOW))
+      return_trace (false);
+
+    return_trace (out->paint.serialize_subset (c, paint, src_base));
+  }
+
+  bool sanitize (hb_sanitize_context_t *c, const void *base) const
+  {
     TRACE_SANITIZE (this);
-    return_trace (likely (c->check_struct (this) && paint.sanitize (c, this)));
+    return_trace (likely (c->check_struct (this) && paint.sanitize (c, base)));
   }
 
   public:
   HBGlyphID		glyphId;    /* Glyph ID of reference glyph */
-  Offset32To<Paint>	paint;      /* Offset (from beginning of BaseGlyphV1Record) to Paint,
+  Offset32To<Paint>	paint;      /* Offset (from beginning of BaseGlyphV1Record array) to Paint,
                                      * Typically PaintColrLayers */
   public:
   DEFINE_SIZE_STATIC (6);
 };
 
-typedef SortedArray32Of<BaseGlyphV1Record> BaseGlyphV1List;
+struct BaseGlyphV1List : SortedArray32Of<BaseGlyphV1Record>
+{
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    auto *out = c->serializer->start_embed (this);
+    if (unlikely (!c->serializer->extend_min (out)))  return_trace (false);
+    const hb_set_t* glyphset = c->plan->_glyphset;
 
+    for (const auto& _ : as_array ())
+    {
+      unsigned gid = _.glyphId;
+      if (!glyphset->has (gid)) continue;
+
+      if (_.serialize (c->serializer, c->plan->glyph_map, this, c)) out->len++;
+      else return_trace (false);
+    }
+
+    return_trace (out->len != 0);
+  }
+
+  bool sanitize (hb_sanitize_context_t *c) const
+  {
+    TRACE_SANITIZE (this);
+    return_trace (SortedArray32Of<BaseGlyphV1Record>::sanitize (c, this));
+  }
+};
+
 struct LayerV1List : Array32OfOffset32To<Paint>
 {
   const Paint& get_paint (unsigned i) const
   { return this+(*this)[i]; }
 
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    auto *out = c->serializer->start_embed (this);
+    if (unlikely (!c->serializer->extend_min (out)))  return_trace (false);
+
+    for (const auto& _ : + hb_enumerate (*this)
+                         | hb_filter (c->plan->colrv1_layers, hb_first))
+
+    {
+      auto *o = out->serialize_append (c->serializer);
+      if (unlikely (!o) || !o->serialize_subset (c, _.second, this))
+        return_trace (false);
+    }
+    return_trace (true);
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -592,6 +902,15 @@
 			 hb_set_t *related_ids /* OUT */) const
     { colr->closure_glyphs (glyph, related_ids); }
 
+    void closure_V0palette_indices (const hb_set_t *glyphs,
+				    hb_set_t *palettes /* OUT */) const
+    { colr->closure_V0palette_indices (glyphs, palettes); }
+
+    void closure_forV1 (hb_set_t *glyphset,
+                        hb_set_t *layer_indices,
+                        hb_set_t *palette_indices) const
+    { colr->closure_forV1 (glyphset, layer_indices, palette_indices); }
+
     private:
     hb_blob_ptr_t<COLR> colr;
   };
@@ -608,6 +927,50 @@
     related_ids->add_array (&glyph_layers[0].glyphId, glyph_layers.length, LayerRecord::min_size);
   }
 
+  void closure_V0palette_indices (const hb_set_t *glyphs,
+				  hb_set_t *palettes /* OUT */) const
+  {
+    if (!numBaseGlyphs || !numLayers) return;
+    hb_array_t<const BaseGlyphRecord> baseGlyphs = (this+baseGlyphsZ).as_array (numBaseGlyphs);
+    hb_array_t<const LayerRecord> all_layers = (this+layersZ).as_array (numLayers);
+
+    for (const BaseGlyphRecord record : baseGlyphs)
+    {
+      if (!glyphs->has (record.glyphId)) continue;
+      hb_array_t<const LayerRecord> glyph_layers = all_layers.sub_array (record.firstLayerIdx,
+                                                                   record.numLayers);
+      for (const LayerRecord layer : glyph_layers)
+        palettes->add (layer.colorIdx);
+    }
+  }
+
+  void closure_forV1 (hb_set_t *glyphset,
+                      hb_set_t *layer_indices,
+                      hb_set_t *palette_indices) const
+  {
+    if (version != 1) return;
+    hb_set_t visited_glyphs;
+
+    hb_colrv1_closure_context_t c (this, &visited_glyphs, layer_indices, palette_indices);
+    const BaseGlyphV1List &baseglyphV1_records = this+baseGlyphsV1List;
+
+    for (const BaseGlyphV1Record &baseglyphV1record: baseglyphV1_records.iter ())
+    {
+      unsigned gid = baseglyphV1record.glyphId;
+      if (!glyphset->has (gid)) continue;
+
+      const Paint &paint = &baseglyphV1_records+baseglyphV1record.paint;
+      paint.dispatch (&c);
+    }
+    hb_set_union (glyphset, &visited_glyphs);
+  }
+
+  const LayerV1List& get_layerV1List () const
+  { return (this+layersV1); }
+
+  const BaseGlyphV1List& get_baseglyphV1List () const
+  { return (this+baseGlyphsV1List); }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
@@ -614,19 +977,20 @@
     return_trace (c->check_struct (this) &&
                   (this+baseGlyphsZ).sanitize (c, numBaseGlyphs) &&
                   (this+layersZ).sanitize (c, numLayers) &&
-                  (version == 0 || (version == 1 &&
-                                    baseGlyphsV1List.sanitize (c, this) &&
-                                    layersV1.sanitize (c, this) &&
-                                    varStore.sanitize (c, this))));
+                  (version == 0 ||
+		   (COLRV1_ENABLE_SUBSETTING && version == 1 &&
+		    baseGlyphsV1List.sanitize (c, this) &&
+		    layersV1.sanitize (c, this) &&
+		    varStore.sanitize (c, this))));
   }
 
   template<typename BaseIterator, typename LayerIterator,
 	   hb_requires (hb_is_iterator (BaseIterator)),
 	   hb_requires (hb_is_iterator (LayerIterator))>
-  bool serialize (hb_serialize_context_t *c,
-		  unsigned version,
-		  BaseIterator base_it,
-		  LayerIterator layer_it)
+  bool serialize_V0 (hb_serialize_context_t *c,
+		     unsigned version,
+		     BaseIterator base_it,
+		     LayerIterator layer_it)
   {
     TRACE_SERIALIZE (this);
     if (unlikely (base_it.len () != layer_it.len ()))
@@ -636,6 +1000,12 @@
     this->version = version;
     numLayers = 0;
     numBaseGlyphs = base_it.len ();
+    if (base_it.len () == 0)
+    {
+      baseGlyphsZ = 0;
+      layersZ = 0;
+      return_trace (true);
+    }
     baseGlyphsZ = COLR::min_size;
     layersZ = COLR::min_size + numBaseGlyphs * BaseGlyphRecord::min_size;
 
@@ -663,6 +1033,14 @@
     return record;
   }
 
+  const BaseGlyphV1Record* get_base_glyphV1_record (hb_codepoint_t gid) const
+  {
+    const BaseGlyphV1Record* record = &(this+baseGlyphsV1List).bsearch ((unsigned) gid);
+    if ((record && (hb_codepoint_t) record->glyphId != gid))
+      record = nullptr;
+    return record;
+  }
+
   bool subset (hb_subset_context_t *c) const
   {
     TRACE_SUBSET (this);
@@ -710,6 +1088,7 @@
 				  if (unlikely (!c->plan->new_gid_for_old_gid (out_layers[i].glyphId, &new_gid)))
 				    return hb_pair_t<bool, hb_vector_t<LayerRecord>> (false, out_layers);
 				  out_layers[i].glyphId = new_gid;
+				  out_layers[i].colorIdx = c->plan->colr_palettes->get (layers[i].colorIdx);
 				}
 
 				return hb_pair_t<bool, hb_vector_t<LayerRecord>> (true, out_layers);
@@ -718,11 +1097,29 @@
     | hb_map_retains_sorting (hb_second)
     ;
 
-    if (unlikely (!base_it || !layer_it || base_it.len () != layer_it.len ()))
+    if (version == 0 && (!base_it || !layer_it))
       return_trace (false);
 
     COLR *colr_prime = c->serializer->start_embed<COLR> ();
-    return_trace (colr_prime->serialize (c->serializer, version, base_it, layer_it));
+    bool ret = colr_prime->serialize_V0 (c->serializer, version, base_it, layer_it);
+
+    if (version == 0) return_trace (ret);
+    auto snap = c->serializer->snapshot ();
+    if (!c->serializer->allocate_size<void> (3 * HBUINT32::static_size)) return_trace (false);
+    if (!colr_prime->baseGlyphsV1List.serialize_subset (c, baseGlyphsV1List, this))
+    {
+      if (c->serializer->in_error ()) return_trace (false);
+      //no more COLRv1 glyphs: downgrade to version 0
+      c->serializer->revert (snap);
+      colr_prime->version = 0;
+      return_trace (true);
+    }
+
+    if (!colr_prime->layersV1.serialize_subset (c, layersV1, this)) return_trace (false);
+
+    colr_prime->varStore = 0;
+    //TODO: subset varStore once it's implemented in fonttools
+    return_trace (true);
   }
 
   protected:

Added: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-colrv1-closure.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-colrv1-closure.hh	                        (rev 0)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-colrv1-closure.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -0,0 +1,101 @@
+/*
+ * Copyright © 2018  Ebrahim Byagowi
+ * Copyright © 2020  Google, Inc.
+ *
+ *  This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ */
+
+#ifndef HB_OT_COLR_COLRV1_CLOSURE_HH
+#define HB_OT_COLR_COLRV1_CLOSURE_HH
+
+#include "hb-open-type.hh"
+#include "hb-ot-layout-common.hh"
+#include "hb-ot-color-colr-table.hh"
+
+/*
+ * COLR -- Color
+ * https://docs.microsoft.com/en-us/typography/opentype/spec/colr
+ */
+namespace OT {
+
+HB_INTERNAL void PaintColrLayers::closurev1 (hb_colrv1_closure_context_t* c) const
+{
+  c->add_layer_indices (firstLayerIndex, numLayers);
+  const LayerV1List &paint_offset_lists = c->get_colr_table ()->get_layerV1List ();
+  for (unsigned i = firstLayerIndex; i < firstLayerIndex + numLayers; i++)
+  {
+    const Paint &paint = hb_addressof (paint_offset_lists) + paint_offset_lists[i];
+    paint.dispatch (c);
+  }
+}
+
+HB_INTERNAL void PaintGlyph::closurev1 (hb_colrv1_closure_context_t* c) const
+{
+  c->add_glyph (gid);
+  (this+paint).dispatch (c);
+}
+
+HB_INTERNAL void PaintColrGlyph::closurev1 (hb_colrv1_closure_context_t* c) const
+{
+  const COLR *colr_table = c->get_colr_table ();
+  const BaseGlyphV1Record* baseglyphV1_record = colr_table->get_base_glyphV1_record (gid);
+  if (!baseglyphV1_record) return;
+  c->add_glyph (gid);
+
+  const BaseGlyphV1List &baseglyphV1_list = colr_table->get_baseglyphV1List ();
+  (&baseglyphV1_list+baseglyphV1_record->paint).dispatch (c);
+}
+
+template <template<typename> class Var>
+HB_INTERNAL void PaintTransform<Var>::closurev1 (hb_colrv1_closure_context_t* c) const
+{
+  (this+src).dispatch (c);
+}
+
+template <template<typename> class Var>
+HB_INTERNAL void PaintTranslate<Var>::closurev1 (hb_colrv1_closure_context_t* c) const
+{
+  (this+src).dispatch (c);
+}
+
+template <template<typename> class Var>
+HB_INTERNAL void PaintRotate<Var>::closurev1 (hb_colrv1_closure_context_t* c) const
+{
+  (this+src).dispatch (c);
+}
+
+template <template<typename> class Var>
+HB_INTERNAL void PaintSkew<Var>::closurev1 (hb_colrv1_closure_context_t* c) const
+{
+  (this+src).dispatch (c);
+}
+
+HB_INTERNAL void PaintComposite::closurev1 (hb_colrv1_closure_context_t* c) const
+{
+  (this+src).dispatch (c);
+  (this+backdrop).dispatch (c);
+}
+
+} /* namespace OT */
+
+
+#endif /* HB_OT_COLR_COLRV1_CLOSURE_HH */

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cpal-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cpal-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cpal-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -39,7 +39,6 @@
  */
 #define HB_OT_TAG_CPAL HB_TAG('C','P','A','L')
 
-
 namespace OT {
 
 
@@ -74,6 +73,39 @@
   }
 
   public:
+  bool serialize (hb_serialize_context_t *c,
+                  unsigned palette_count,
+                  unsigned color_count,
+                  const void *base,
+                  const hb_map_t *color_index_map) const
+  {
+    TRACE_SERIALIZE (this);
+    auto *out = c->allocate_size<CPALV1Tail> (static_size);
+    if (unlikely (!out)) return_trace (false);
+
+    out->paletteFlagsZ.serialize_copy (c, paletteFlagsZ, base, 0, hb_serialize_context_t::Head, palette_count);
+    out->paletteLabelsZ.serialize_copy (c, paletteLabelsZ, base, 0, hb_serialize_context_t::Head, palette_count);
+
+    const hb_array_t<const NameID> colorLabels = (base+colorLabelsZ).as_array (color_count);
+    if (colorLabelsZ)
+    {
+      c->push ();
+      for (const auto _ : colorLabels)
+      {
+        if (!color_index_map->has (_)) continue;
+        NameID new_color_idx;
+        new_color_idx = color_index_map->get (_);
+        if (!c->copy<NameID> (new_color_idx))
+        {
+          c->pop_discard ();
+          return_trace (false);
+        }
+      }
+      c->add_link (out->colorLabelsZ, c->pop_pack ());
+    }
+    return_trace (true);
+  }
+
   bool sanitize (hb_sanitize_context_t *c,
 		 const void *base,
 		 unsigned int palette_count,
@@ -157,6 +189,84 @@
   }
 
   public:
+  bool serialize (hb_serialize_context_t *c,
+                  const hb_array_t<const BGRAColor> &color_records,
+                  const hb_array_t<const HBUINT16> &color_record_indices,
+                  const hb_map_t &color_record_index_map,
+                  const hb_set_t &retained_color_record_indices) const
+  {
+    TRACE_SERIALIZE (this);
+
+    for (const auto idx : color_record_indices)
+    {
+      HBUINT16 new_idx;
+      if (idx == 0) new_idx = 0;
+      else new_idx = color_record_index_map.get (idx);
+      if (!c->copy<HBUINT16> (new_idx)) return_trace (false);
+    }
+
+    c->push ();
+    for (const auto _ : retained_color_record_indices.iter ())
+    {
+      if (!c->copy<BGRAColor> (color_records[_]))
+      {
+        c->pop_discard ();
+        return_trace (false);
+      }
+    }
+    c->add_link (colorRecordsZ, c->pop_pack ());
+    return_trace (true);
+  }
+
+  bool subset (hb_subset_context_t *c) const
+  {
+    TRACE_SUBSET (this);
+    const hb_map_t *color_index_map = c->plan->colr_palettes;
+    if (color_index_map->is_empty ()) return_trace (false);
+
+    hb_set_t retained_color_indices;
+    for (const auto _ : color_index_map->keys ())
+    {
+      if (_ == 0xFFFF) continue;
+      retained_color_indices.add (_);
+    }
+    if (retained_color_indices.is_empty ()) return_trace (false);
+
+    auto *out = c->serializer->start_embed (*this);
+    if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
+    
+    out->version = version;
+    out->numColors = retained_color_indices.get_population ();
+    out->numPalettes = numPalettes;
+
+    const hb_array_t<const HBUINT16> colorRecordIndices = colorRecordIndicesZ.as_array (numPalettes);
+    hb_map_t color_record_index_map;
+    hb_set_t retained_color_record_indices;
+
+    unsigned record_count = 0;
+    for (const auto first_color_record_idx : colorRecordIndices)
+    {
+      for (unsigned retained_color_idx : retained_color_indices.iter ())
+      {
+        unsigned color_record_idx = first_color_record_idx + retained_color_idx;
+        if (color_record_index_map.has (color_record_idx)) continue;
+        color_record_index_map.set (color_record_idx, record_count);
+        retained_color_record_indices.add (color_record_idx);
+        record_count++;
+      }
+    }
+
+    out->numColorRecords = record_count;
+    const hb_array_t<const BGRAColor> color_records = (this+colorRecordsZ).as_array (numColorRecords);
+    if (!out->serialize (c->serializer, color_records, colorRecordIndices, color_record_index_map, retained_color_record_indices))
+      return_trace (false);
+
+    if (version == 1)
+      return_trace (v1 ().serialize (c->serializer, numPalettes, numColors, this, color_index_map));
+
+    return_trace (true);
+  }
+
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-sbix-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-sbix-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-sbix-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -145,7 +145,7 @@
     auto* out = c->serializer->start_embed<SBIXStrike> ();
     if (unlikely (!out)) return_trace (false);
     auto snap = c->serializer->snapshot ();
-    if (unlikely (!c->serializer->extend (*out, num_output_glyphs + 1))) return_trace (false);
+    if (unlikely (!c->serializer->extend (out, num_output_glyphs + 1))) return_trace (false);
     out->ppem = ppem;
     out->resolution = resolution;
     HBUINT32 head;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-face-table-list.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-face-table-list.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-face-table-list.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -40,7 +40,7 @@
 
 /* This lists font tables that the hb_face_t will contain and lazily
  * load.  Don't add a table unless it's used though.  This is not
- * exactly free. */
+ * exactly zero-cost. */
 
 /* v--- Add new tables in the right place here. */
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -45,7 +45,11 @@
  */
 #define HB_OT_TAG_loca HB_TAG('l','o','c','a')
 
+#ifndef HB_MAX_COMPOSITE_OPERATIONS
+#define HB_MAX_COMPOSITE_OPERATIONS 100000
+#endif
 
+
 struct loca
 {
   friend struct glyf;
@@ -98,7 +102,7 @@
     unsigned num_offsets = padded_offsets.len () + 1;
     bool use_short_loca = max_offset < 0x1FFFF;
     unsigned entry_size = use_short_loca ? 2 : 4;
-    char *loca_prime_data = (char *) calloc (entry_size, num_offsets);
+    char *loca_prime_data = (char *) hb_calloc (entry_size, num_offsets);
 
     if (unlikely (!loca_prime_data)) return false;
 
@@ -115,7 +119,7 @@
 					   entry_size * num_offsets,
 					   HB_MEMORY_MODE_WRITABLE,
 					   loca_prime_data,
-					   free);
+					   hb_free);
 
     bool result = plan->add_table (HB_OT_TAG_loca, loca_blob)
 	       && _add_head_and_set_loca_version (plan, use_short_loca);
@@ -209,10 +213,15 @@
 		if (!plan->old_gid_for_new_gid (new_gid, &subset_glyph.old_gid))
 		  return subset_glyph;
 
-		subset_glyph.source_glyph = glyf.glyph_for_gid (subset_glyph.old_gid, true);
-		if (plan->drop_hints) subset_glyph.drop_hints_bytes ();
-		else subset_glyph.dest_start = subset_glyph.source_glyph.get_bytes ();
-
+		if (new_gid == 0 &&
+                    !(plan->flags & HB_SUBSET_FLAGS_NOTDEF_OUTLINE))
+		  subset_glyph.source_glyph = Glyph ();
+		else
+		  subset_glyph.source_glyph = glyf.glyph_for_gid (subset_glyph.old_gid, true);
+		if (plan->flags & HB_SUBSET_FLAGS_NO_HINTING)
+                  subset_glyph.drop_hints_bytes ();
+		else
+                  subset_glyph.dest_start = subset_glyph.source_glyph.get_bytes ();
 		return subset_glyph;
 	      })
     | hb_sink (glyphs)
@@ -281,6 +290,11 @@
     hb_codepoint_t get_glyph_index ()       const { return glyphIndex; }
 
     void drop_instructions_flag ()  { flags = (uint16_t) flags & ~WE_HAVE_INSTRUCTIONS; }
+    void set_overlaps_flag ()
+    {
+      flags = (uint16_t) flags | OVERLAP_COMPOUND;
+    }
+
     bool has_instructions ()  const { return   flags & WE_HAVE_INSTRUCTIONS; }
 
     bool has_more ()          const { return   flags & MORE_COMPONENTS; }
@@ -383,10 +397,13 @@
   {
     typedef const CompositeGlyphChain *__item_t__;
     composite_iter_t (hb_bytes_t glyph_, __item_t__ current_) :
-      glyph (glyph_), current (current_)
-    { if (!check_range (current)) current = nullptr; }
-    composite_iter_t () : glyph (hb_bytes_t ()), current (nullptr) {}
+        glyph (glyph_), current (nullptr), current_size (0)
+    {
+      set_next (current_);
+    }
 
+    composite_iter_t () : glyph (hb_bytes_t ()), current (nullptr), current_size (0) {}
+
     const CompositeGlyphChain &__item__ () const { return *current; }
     bool __more__ () const { return current; }
     void __next__ ()
@@ -393,23 +410,36 @@
     {
       if (!current->has_more ()) { current = nullptr; return; }
 
-      const CompositeGlyphChain *possible = &StructAfter<CompositeGlyphChain,
-							 CompositeGlyphChain> (*current);
-      if (!check_range (possible)) { current = nullptr; return; }
-      current = possible;
+      set_next (&StructAtOffset<CompositeGlyphChain> (current, current_size));
     }
     bool operator != (const composite_iter_t& o) const
     { return glyph != o.glyph || current != o.current; }
 
-    bool check_range (const CompositeGlyphChain *composite) const
+
+    void set_next (const CompositeGlyphChain *composite)
     {
-      return glyph.check_range (composite, CompositeGlyphChain::min_size)
-	  && glyph.check_range (composite, composite->get_size ());
+      if (!glyph.check_range (composite, CompositeGlyphChain::min_size))
+      {
+        current = nullptr;
+        current_size = 0;
+        return;
+      }
+      unsigned size = composite->get_size ();
+      if (!glyph.check_range (composite, size))
+      {
+        current = nullptr;
+        current_size = 0;
+        return;
+      }
+
+      current = composite;
+      current_size = size;
     }
 
     private:
     hb_bytes_t glyph;
     __item_t__ current;
+    unsigned current_size;
   };
 
   enum phantom_point_index_t
@@ -427,14 +457,14 @@
   {
     enum simple_glyph_flag_t
     {
-      FLAG_ON_CURVE  = 0x01,
-      FLAG_X_SHORT   = 0x02,
-      FLAG_Y_SHORT   = 0x04,
-      FLAG_REPEAT    = 0x08,
-      FLAG_X_SAME    = 0x10,
-      FLAG_Y_SAME    = 0x20,
-      FLAG_RESERVED1 = 0x40,
-      FLAG_RESERVED2 = 0x80
+      FLAG_ON_CURVE       = 0x01,
+      FLAG_X_SHORT        = 0x02,
+      FLAG_Y_SHORT        = 0x04,
+      FLAG_REPEAT         = 0x08,
+      FLAG_X_SAME         = 0x10,
+      FLAG_Y_SAME         = 0x20,
+      FLAG_OVERLAP_SIMPLE = 0x40,
+      FLAG_RESERVED2      = 0x80
     };
 
     private:
@@ -495,8 +525,8 @@
       const Glyph trim_padding () const
       {
 	/* based on FontTools _g_l_y_f.py::trim */
-	const char *glyph = bytes.arrayZ;
-	const char *glyph_end = glyph + bytes.length;
+	const uint8_t *glyph = (uint8_t*) bytes.arrayZ;
+	const uint8_t *glyph_end = glyph + bytes.length;
 	/* simple glyph w/contours, possibly trimmable */
 	glyph += instruction_len_offset ();
 
@@ -553,6 +583,17 @@
 	dest_end = bytes.sub_array (glyph_length, bytes.length - glyph_length);
       }
 
+      void set_overlaps_flag ()
+      {
+        if (unlikely (!header.numberOfContours)) return;
+
+        unsigned flags_offset = length (instructions_length ());
+        if (unlikely (length (flags_offset + 1) > bytes.length)) return;
+
+	HBUINT8 &first_flag = (HBUINT8 &) StructAtOffset<HBUINT16> (&bytes, flags_offset);
+        first_flag = (uint8_t) first_flag | FLAG_OVERLAP_SIMPLE;
+      }
+
       static bool read_points (const HBUINT8 *&p /* IN/OUT */,
 			       contour_point_vector_t &points_ /* IN/OUT */,
 			       const hb_bytes_t &bytes,
@@ -666,6 +707,12 @@
       /* Chop instructions off the end */
       void drop_hints_bytes (hb_bytes_t &dest_start) const
       { dest_start = bytes.sub_array (0, bytes.length - instructions_length (bytes)); }
+
+      void set_overlaps_flag ()
+      {
+        const_cast<CompositeGlyphChain &> (StructAfter<CompositeGlyphChain, GlyphHeader> (header))
+                .set_overlaps_flag ();
+      }
     };
 
     enum glyph_type_t { EMPTY, SIMPLE, COMPOSITE };
@@ -695,6 +742,15 @@
       }
     }
 
+    void set_overlaps_flag ()
+    {
+      switch (type) {
+      case COMPOSITE: CompositeGlyph (*header, bytes).set_overlaps_flag (); return;
+      case SIMPLE:    SimpleGlyph (*header, bytes).set_overlaps_flag (); return;
+      default:        return;
+      }
+    }
+
     void drop_hints_bytes (hb_bytes_t &dest_start, hb_bytes_t &dest_end) const
     {
       switch (type) {
@@ -886,7 +942,7 @@
     {
       if (gid >= num_glyphs) return false;
 
-      /* Making this alloc free is not that easy
+      /* Making this allocfree is not that easy
 	 https://github.com/harfbuzz/harfbuzz/issues/2095
 	 mostly because of gvar handling in VF fonts,
 	 perhaps a separate path for non-VF fonts can be considered */
@@ -1045,18 +1101,28 @@
       return needs_padding_removal ? glyph.trim_padding () : glyph;
     }
 
-    void
-    add_gid_and_children (hb_codepoint_t gid, hb_set_t *gids_to_retain,
-			  unsigned int depth = 0) const
+    unsigned
+    add_gid_and_children (hb_codepoint_t gid,
+			  hb_set_t *gids_to_retain,
+			  unsigned depth = 0,
+			  unsigned operation_count = 0) const
     {
-      if (unlikely (depth++ > HB_MAX_NESTING_LEVEL)) return;
+      if (unlikely (depth++ > HB_MAX_NESTING_LEVEL)) return operation_count;
+      if (unlikely (operation_count++ > HB_MAX_COMPOSITE_OPERATIONS)) return operation_count;
       /* Check if is already visited */
-      if (gids_to_retain->has (gid)) return;
+      if (gids_to_retain->has (gid)) return operation_count;
 
       gids_to_retain->add (gid);
 
-      for (auto &item : glyph_for_gid (gid).get_composite_iterator ())
-	add_gid_and_children (item.get_glyph_index (), gids_to_retain, depth);
+      auto it = glyph_for_gid (gid).get_composite_iterator ();
+      while (it)
+      {
+        auto item = *(it++);
+        operation_count +=
+            add_gid_and_children (item.get_glyph_index (), gids_to_retain, depth, operation_count);
+      }
+
+      return operation_count;
     }
 
 #ifdef HB_EXPERIMENTAL_API
@@ -1230,8 +1296,12 @@
 	  const_cast<CompositeGlyphChain &> (_).set_glyph_index (new_gid);
       }
 
-      if (plan->drop_hints) Glyph (dest_glyph).drop_hints ();
+      if (plan->flags & HB_SUBSET_FLAGS_NO_HINTING)
+        Glyph (dest_glyph).drop_hints ();
 
+      if (plan->flags & HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG)
+        Glyph (dest_glyph).set_overlaps_flag ();
+
       return_trace (true);
     }
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hdmx-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hdmx-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hdmx-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -52,7 +52,7 @@
 
     unsigned length = it.len ();
 
-    if (unlikely (!c->extend (*this, length)))  return_trace (false);
+    if (unlikely (!c->extend (this, length)))  return_trace (false);
 
     this->pixelSize = pixelSize;
     this->maxWidth =

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -415,7 +415,7 @@
   }
   bool find_index (hb_tag_t tag, unsigned int *index) const
   {
-    return this->bfind (tag, index, HB_BFIND_NOT_FOUND_STORE, Index::NOT_FOUND_INDEX);
+    return this->bfind (tag, index, HB_NOT_FOUND_STORE, Index::NOT_FOUND_INDEX);
   }
 };
 
@@ -1262,13 +1262,13 @@
 		  unsigned int num_subtables)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
     lookupType = lookup_type;
     lookupFlag = lookup_props & 0xFFFFu;
     if (unlikely (!subTable.serialize (c, num_subtables))) return_trace (false);
     if (lookupFlag & LookupFlag::UseMarkFilteringSet)
     {
-      if (unlikely (!c->extend (*this))) return_trace (false);
+      if (unlikely (!c->extend (this))) return_trace (false);
       HBUINT16 &markFilteringSet = StructAfter<HBUINT16> (subTable);
       markFilteringSet = lookup_props >> 16;
     }
@@ -1393,7 +1393,7 @@
   unsigned int get_coverage (hb_codepoint_t glyph_id) const
   {
     unsigned int i;
-    glyphArray.bfind (glyph_id, &i, HB_BFIND_NOT_FOUND_STORE, NOT_COVERED);
+    glyphArray.bfind (glyph_id, &i, HB_NOT_FOUND_STORE, NOT_COVERED);
     return i;
   }
 
@@ -1478,7 +1478,7 @@
   bool serialize (hb_serialize_context_t *c, Iterator glyphs)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
 
     if (unlikely (!glyphs))
     {
@@ -1657,7 +1657,7 @@
   bool serialize (hb_serialize_context_t *c, Iterator glyphs)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
 
     unsigned count = 0;
     unsigned num_ranges = 0;
@@ -1890,7 +1890,7 @@
 		  Iterator it)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
 
     if (unlikely (!it))
     {
@@ -2069,7 +2069,7 @@
 		  Iterator it)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
 
     if (unlikely (!it))
     {
@@ -2311,7 +2311,7 @@
   bool serialize (hb_serialize_context_t *c, Iterator it_with_class_zero)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
 
     auto it = + it_with_class_zero | hb_filter (hb_second);
 
@@ -2516,19 +2516,19 @@
   bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
-    return_trace (c->check_struct (this) &&
-		  axesZ.sanitize (c, (unsigned int) axisCount * (unsigned int) regionCount));
+    return_trace (c->check_struct (this) && axesZ.sanitize (c, axisCount * regionCount));
   }
 
   bool serialize (hb_serialize_context_t *c, const VarRegionList *src, const hb_bimap_t &region_map)
   {
     TRACE_SERIALIZE (this);
-    VarRegionList *out = c->allocate_min<VarRegionList> ();
-    if (unlikely (!out)) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
     axisCount = src->axisCount;
     regionCount = region_map.get_population ();
-    if (unlikely (!c->allocate_size<VarRegionList> (get_size () - min_size))) return_trace (false);
-    unsigned int region_count = src->get_region_count ();
+    if (unlikely (hb_unsigned_mul_overflows (axisCount * regionCount,
+					     VarRegionAxis::static_size))) return_trace (false);
+    if (unlikely (!c->extend (this))) return_trace (false);
+    unsigned int region_count = src->regionCount;
     for (unsigned int r = 0; r < regionCount; r++)
     {
       unsigned int backward = region_map.backward (r);
@@ -2540,11 +2540,11 @@
   }
 
   unsigned int get_size () const { return min_size + VarRegionAxis::static_size * axisCount * regionCount; }
-  unsigned int get_region_count () const { return regionCount; }
 
-  protected:
+  public:
   HBUINT16	axisCount;
   HBUINT16	regionCount;
+  protected:
   UnsizedArrayOf<VarRegionAxis>
 		axesZ;
   public:
@@ -2560,7 +2560,10 @@
   { return shortCount + regionIndices.len; }
 
   unsigned int get_size () const
-  { return itemCount * get_row_size (); }
+  { return min_size
+	 - regionIndices.min_size + regionIndices.get_size ()
+	 + itemCount * get_row_size ();
+  }
 
   float get_delta (unsigned int inner,
 		   const int *coords, unsigned int coord_count,
@@ -2594,10 +2597,10 @@
    return delta;
   }
 
-  void get_scalars (const int *coords, unsigned int coord_count,
-		    const VarRegionList &regions,
-		    float *scalars /*OUT */,
-		    unsigned int num_scalars) const
+  void get_region_scalars (const int *coords, unsigned int coord_count,
+			   const VarRegionList &regions,
+			   float *scalars /*OUT */,
+			   unsigned int num_scalars) const
   {
     unsigned count = hb_min (num_scalars, regionIndices.len);
     for (unsigned int i = 0; i < count; i++)
@@ -2623,7 +2626,7 @@
 		  const hb_bimap_t &region_map)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
     itemCount = inner_map.get_next_value ();
 
     /* Optimize short count */
@@ -2665,9 +2668,7 @@
     shortCount = new_short_count;
     regionIndices.len = new_ri_count;
 
-    unsigned int size = regionIndices.get_size () - HBUINT16::static_size/*regionIndices.len*/ + (get_row_size () * itemCount);
-    if (unlikely (!c->allocate_size<HBUINT8> (size)))
-      return_trace (false);
+    if (unlikely (!c->extend (this))) return_trace (false);
 
     for (r = 0; r < ri_count; r++)
       if (delta_sz[r]) regionIndices[ri_map[r]] = region_map[src->regionIndices[r]];
@@ -2682,16 +2683,16 @@
     return_trace (true);
   }
 
-  void collect_region_refs (hb_inc_bimap_t &region_map, const hb_inc_bimap_t &inner_map) const
+  void collect_region_refs (hb_set_t &region_indices, const hb_inc_bimap_t &inner_map) const
   {
     for (unsigned int r = 0; r < regionIndices.len; r++)
     {
       unsigned int region = regionIndices[r];
-      if (region_map.has (region)) continue;
+      if (region_indices.has (region)) continue;
       for (unsigned int i = 0; i < inner_map.get_next_value (); i++)
 	if (get_item_delta (inner_map.backward (i), r) != 0)
 	{
-	  region_map.add (region);
+	  region_indices.add (region);
 	  break;
 	}
     }
@@ -2777,32 +2778,48 @@
 		  const hb_array_t <hb_inc_bimap_t> &inner_maps)
   {
     TRACE_SERIALIZE (this);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
+
     unsigned int set_count = 0;
     for (unsigned int i = 0; i < inner_maps.length; i++)
-      if (inner_maps[i].get_population () > 0) set_count++;
+      if (inner_maps[i].get_population ())
+	set_count++;
 
-    unsigned int size = min_size + HBUINT32::static_size * set_count;
-    if (unlikely (!c->allocate_size<HBUINT32> (size))) return_trace (false);
     format = 1;
 
-    hb_inc_bimap_t region_map;
+    const auto &src_regions = src+src->regions;
+
+    hb_set_t region_indices;
     for (unsigned int i = 0; i < inner_maps.length; i++)
-      (src+src->dataSets[i]).collect_region_refs (region_map, inner_maps[i]);
-    region_map.sort ();
+      (src+src->dataSets[i]).collect_region_refs (region_indices, inner_maps[i]);
 
-    if (unlikely (!regions.serialize (c, this)
-		  .serialize (c, &(src+src->regions), region_map))) return_trace (false);
+    if (region_indices.in_error ())
+      return_trace (false);
 
+    region_indices.del_range ((src_regions).regionCount, hb_set_t::INVALID);
+
+    /* TODO use constructor when our data-structures support that. */
+    hb_inc_bimap_t region_map;
+    + hb_iter (region_indices)
+    | hb_apply ([&region_map] (unsigned _) { region_map.add(_); })
+    ;
+    if (region_map.in_error())
+      return_trace (false);
+
+    if (unlikely (!regions.serialize_serialize (c, &src_regions, region_map)))
+      return_trace (false);
+
+    dataSets.len = set_count;
+    if (unlikely (!c->extend (dataSets))) return_trace (false);
+
     /* TODO: The following code could be simplified when
-     * List16OfOffset16To::subset () can take a custom param to be passed to VarData::serialize ()
-     */
-    dataSets.len = set_count;
+     * List16OfOffset16To::subset () can take a custom param to be passed to VarData::serialize () */
     unsigned int set_index = 0;
     for (unsigned int i = 0; i < inner_maps.length; i++)
     {
-      if (inner_maps[i].get_population () == 0) continue;
-      if (unlikely (!dataSets[set_index++].serialize (c, this)
-		      .serialize (c, &(src+src->dataSets[i]), inner_maps[i], region_map)))
+      if (!inner_maps[i].get_population ()) continue;
+      if (unlikely (!dataSets[set_index++]
+		     .serialize_serialize (c, &(src+src->dataSets[i]), inner_maps[i], region_map)))
 	return_trace (false);
     }
 
@@ -2847,13 +2864,13 @@
         && varstore_prime->dataSets);
   }
 
-  unsigned int get_region_index_count (unsigned int ivs) const
-  { return (this+dataSets[ivs]).get_region_index_count (); }
+  unsigned int get_region_index_count (unsigned int major) const
+  { return (this+dataSets[major]).get_region_index_count (); }
 
-  void get_scalars (unsigned int ivs,
-		    const int *coords, unsigned int coord_count,
-		    float *scalars /*OUT*/,
-		    unsigned int num_scalars) const
+  void get_region_scalars (unsigned int major,
+			   const int *coords, unsigned int coord_count,
+			   float *scalars /*OUT*/,
+			   unsigned int num_scalars) const
   {
 #ifdef HB_NO_VAR
     for (unsigned i = 0; i < num_scalars; i++)
@@ -2861,8 +2878,9 @@
     return;
 #endif
 
-    (this+dataSets[ivs]).get_scalars (coords, coord_count, this+regions,
-				      &scalars[0], num_scalars);
+    (this+dataSets[major]).get_region_scalars (coords, coord_count,
+					       this+regions,
+					       &scalars[0], num_scalars);
   }
 
   unsigned int get_sub_table_count () const { return dataSets.len; }
@@ -2872,7 +2890,7 @@
   Offset32To<VarRegionList>		regions;
   Array16OfOffset32To<VarData>		dataSets;
   public:
-  DEFINE_SIZE_ARRAY (8, dataSets);
+  DEFINE_SIZE_ARRAY_SIZED (8, dataSets);
 };
 
 /*

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -98,8 +98,7 @@
     | hb_map (glyph_map)
     | hb_sink (new_coverage)
     ;
-    out->coverage.serialize (c->serializer, out)
-		 .serialize (c->serializer, new_coverage.iter ());
+    out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
     return_trace (bool (new_coverage));
   }
 
@@ -386,8 +385,7 @@
     | hb_map (glyph_map)
     | hb_sink (new_coverage)
     ;
-    out->coverage.serialize (c->serializer, out)
-		 .serialize (c->serializer, new_coverage.iter ());
+    out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
     return_trace (bool (new_coverage));
   }
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -538,7 +538,7 @@
     switch (u.format) {
     case 1: return_trace (bool (reinterpret_cast<Anchor *> (u.format1.copy (c->serializer))));
     case 2:
-      if (c->plan->drop_hints)
+      if (c->plan->flags & HB_SUBSET_FLAGS_NO_HINTING)
       {
         // AnchorFormat 2 just containins extra hinting information, so
         // if hints are being dropped convert to format 1.
@@ -805,7 +805,7 @@
 		  ValueFormat newFormat,
 		  const hb_map_t *layout_variation_idx_map)
   {
-    if (unlikely (!c->extend_min (*this))) return;
+    if (unlikely (!c->extend_min (this))) return;
     if (unlikely (!c->check_assign (valueFormat,
                                     newFormat,
                                     HB_SERIALIZE_ERROR_INT_OVERFLOW))) return;
@@ -823,8 +823,7 @@
     | hb_map_retains_sorting (hb_first)
     ;
 
-    // TODO(garretrieger): serialize_subset this.
-    coverage.serialize (c, this).serialize (c, glyphs);
+    coverage.serialize_serialize (c, glyphs);
   }
 
   bool subset (hb_subset_context_t *c) const
@@ -926,7 +925,7 @@
 		  ValueFormat newFormat,
 		  const hb_map_t *layout_variation_idx_map)
   {
-    auto out = c->extend_min (*this);
+    auto out = c->extend_min (this);
     if (unlikely (!out)) return;
     if (unlikely (!c->check_assign (valueFormat, newFormat, HB_SERIALIZE_ERROR_INT_OVERFLOW))) return;
     if (unlikely (!c->check_assign (valueCount, it.len (), HB_SERIALIZE_ERROR_ARRAY_OVERFLOW))) return;
@@ -942,7 +941,7 @@
     | hb_map_retains_sorting (hb_first)
     ;
 
-    coverage.serialize (c, this).serialize (c, glyphs);
+    coverage.serialize_serialize (c, glyphs);
   }
 
   bool subset (hb_subset_context_t *c) const
@@ -1374,7 +1373,7 @@
     out->format = format;
     out->valueFormat[0] = valueFormat[0];
     out->valueFormat[1] = valueFormat[1];
-    if (c->plan->drop_hints)
+    if (c->plan->flags & HB_SUBSET_FLAGS_NO_HINTING)
     {
       hb_pair_t<unsigned, unsigned> newFormats = compute_effective_value_formats (glyphset);
       out->valueFormat[0] = newFormats.first;
@@ -1404,8 +1403,7 @@
     | hb_sink (new_coverage)
     ;
 
-    out->coverage.serialize (c->serializer, out)
-		 .serialize (c->serializer, new_coverage.iter ());
+    out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
 
     return_trace (bool (new_coverage));
   }
@@ -1593,7 +1591,7 @@
     unsigned len2 = valueFormat2.get_len ();
 
     hb_pair_t<unsigned, unsigned> newFormats = hb_pair (valueFormat1, valueFormat2);
-    if (c->plan->drop_hints)
+    if (c->plan->flags & HB_SUBSET_FLAGS_NO_HINTING)
       newFormats = compute_effective_value_formats (klass1_map, klass2_map);
 
     out->valueFormat1 = newFormats.first;
@@ -1618,7 +1616,7 @@
     | hb_map_retains_sorting (glyph_map)
     ;
 
-    out->coverage.serialize (c->serializer, out).serialize (c->serializer, it);
+    out->coverage.serialize_serialize (c->serializer, it);
     return_trace (out->class1Count && out->class2Count && bool (it));
   }
 
@@ -1882,7 +1880,7 @@
     else
       pos[child].x_offset = x_offset;
 
-    /* If parent was attached to child, break them free.
+    /* If parent was attached to child, separate them.
      * https://github.com/harfbuzz/harfbuzz/issues/2469
      */
     if (unlikely (pos[parent].attach_chain() == -pos[child].attach_chain()))
@@ -1911,7 +1909,7 @@
     | hb_map_retains_sorting (hb_first)
     ;
 
-    coverage.serialize (c->serializer, this).serialize (c->serializer, glyphs);
+    coverage.serialize_serialize (c->serializer, glyphs);
   }
 
   bool subset (hb_subset_context_t *c) const
@@ -2118,8 +2116,7 @@
     | hb_sink (new_coverage)
     ;
 
-    if (!out->markCoverage.serialize (c->serializer, out)
-			  .serialize (c->serializer, new_coverage.iter ()))
+    if (!out->markCoverage.serialize_serialize (c->serializer, new_coverage.iter ()))
       return_trace (false);
 
     out->markArray.serialize_subset (c, markArray, this,
@@ -2139,8 +2136,7 @@
     | hb_sink (new_coverage)
     ;
 
-    if (!out->baseCoverage.serialize (c->serializer, out)
-			  .serialize (c->serializer, new_coverage.iter ()))
+    if (!out->baseCoverage.serialize_serialize (c->serializer, new_coverage.iter ()))
       return_trace (false);
 
     hb_sorted_vector_t<unsigned> base_indexes;
@@ -2377,8 +2373,7 @@
     | hb_map_retains_sorting (glyph_map)
     ;
 
-    if (!out->markCoverage.serialize (c->serializer, out)
-			  .serialize (c->serializer, new_mark_coverage))
+    if (!out->markCoverage.serialize_serialize (c->serializer, new_mark_coverage))
       return_trace (false);
 
     out->markArray.serialize_subset (c, markArray, this,
@@ -2391,8 +2386,7 @@
     | hb_map_retains_sorting (glyph_map)
     ;
 
-    if (!out->ligatureCoverage.serialize (c->serializer, out)
-			      .serialize (c->serializer, new_ligature_coverage))
+    if (!out->ligatureCoverage.serialize_serialize (c->serializer, new_ligature_coverage))
       return_trace (false);
 
     out->ligatureArray.serialize_subset (c, ligatureArray, this,
@@ -2581,8 +2575,7 @@
     | hb_sink (new_coverage)
     ;
 
-    if (!out->mark1Coverage.serialize (c->serializer, out)
-			   .serialize (c->serializer, new_coverage.iter ()))
+    if (!out->mark1Coverage.serialize_serialize (c->serializer, new_coverage.iter ()))
       return_trace (false);
 
     out->mark1Array.serialize_subset (c, mark1Array, this,
@@ -2602,8 +2595,7 @@
     | hb_sink (new_coverage)
     ;
 
-    if (!out->mark2Coverage.serialize (c->serializer, out)
-			   .serialize (c->serializer, new_coverage.iter ()))
+    if (!out->mark2Coverage.serialize_serialize (c->serializer, new_coverage.iter ()))
       return_trace (false);
 
     hb_sorted_vector_t<unsigned> mark2_indexes;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -100,8 +100,8 @@
 		  unsigned delta)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
-    if (unlikely (!coverage.serialize (c, this).serialize (c, glyphs))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
+    if (unlikely (!coverage.serialize_serialize (c, glyphs))) return_trace (false);
     c->check_assign (deltaGlyphID, delta, HB_SERIALIZE_ERROR_INT_OVERFLOW);
     return_trace (true);
   }
@@ -209,9 +209,9 @@
       + it
       | hb_map_retains_sorting (hb_first)
       ;
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
     if (unlikely (!substitute.serialize (c, substitutes))) return_trace (false);
-    if (unlikely (!coverage.serialize (c, this).serialize (c, glyphs))) return_trace (false);
+    if (unlikely (!coverage.serialize_serialize (c, glyphs))) return_trace (false);
     return_trace (true);
   }
 
@@ -343,9 +343,14 @@
 
     unsigned int klass = _hb_glyph_info_is_ligature (&c->buffer->cur()) ?
 			 HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH : 0;
+    unsigned lig_id = _hb_glyph_info_get_lig_id (&c->buffer->cur());
 
-    for (unsigned int i = 0; i < count; i++) {
-      _hb_glyph_info_set_lig_props_for_component (&c->buffer->cur(), i);
+    for (unsigned int i = 0; i < count; i++)
+    {
+      /* If is attached to a ligature, don't disturb that.
+       * https://github.com/harfbuzz/harfbuzz/issues/3069 */
+      if (!lig_id)
+	_hb_glyph_info_set_lig_props_for_component (&c->buffer->cur(), i);
       c->output_glyph_for_component (substitute.arrayZ[i], klass);
     }
     c->buffer->skip_glyph ();
@@ -408,7 +413,6 @@
     | hb_map (hb_add (this))
     | hb_apply ([c] (const Sequence &_) { _.closure (c); })
     ;
-
   }
 
   void closure_lookups (hb_closure_lookups_context_t *c) const {}
@@ -444,17 +448,17 @@
 		  hb_array_t<const HBGlyphID> substitute_glyphs_list)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
     if (unlikely (!sequence.serialize (c, glyphs.length))) return_trace (false);
     for (unsigned int i = 0; i < glyphs.length; i++)
     {
       unsigned int substitute_len = substitute_len_list[i];
-      if (unlikely (!sequence[i].serialize (c, this)
-				.serialize (c, substitute_glyphs_list.sub_array (0, substitute_len))))
+      if (unlikely (!sequence[i]
+                        .serialize_serialize (c, substitute_glyphs_list.sub_array (0, substitute_len))))
 	return_trace (false);
       substitute_glyphs_list += substitute_len;
     }
-    return_trace (coverage.serialize (c, this).serialize (c, glyphs));
+    return_trace (coverage.serialize_serialize (c, glyphs));
   }
 
   bool subset (hb_subset_context_t *c) const
@@ -475,8 +479,7 @@
     | hb_map (glyph_map)
     | hb_sink (new_coverage)
     ;
-    out->coverage.serialize (c->serializer, out)
-		 .serialize (c->serializer, new_coverage.iter ());
+    out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
     return_trace (bool (new_coverage));
   }
 
@@ -560,7 +563,12 @@
 
     /* If alt_index is MAX_VALUE, randomize feature if it is the rand feature. */
     if (alt_index == HB_OT_MAP_MAX_VALUE && c->random)
+    {
+      /* Maybe we can do better than unsafe-to-break all; but since we are
+       * changing random state, it would be hard to track that.  Good 'nough. */
+      c->buffer->unsafe_to_break_all ();
       alt_index = c->random_number () % count + 1;
+    }
 
     if (unlikely (alt_index > count || alt_index == 0)) return_trace (false);
 
@@ -683,17 +691,17 @@
 		  hb_array_t<const HBGlyphID> alternate_glyphs_list)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
     if (unlikely (!alternateSet.serialize (c, glyphs.length))) return_trace (false);
     for (unsigned int i = 0; i < glyphs.length; i++)
     {
       unsigned int alternate_len = alternate_len_list[i];
-      if (unlikely (!alternateSet[i].serialize (c, this)
-				    .serialize (c, alternate_glyphs_list.sub_array (0, alternate_len))))
+      if (unlikely (!alternateSet[i]
+                        .serialize_serialize (c, alternate_glyphs_list.sub_array (0, alternate_len))))
 	return_trace (false);
       alternate_glyphs_list += alternate_len;
     }
-    return_trace (coverage.serialize (c, this).serialize (c, glyphs));
+    return_trace (coverage.serialize_serialize (c, glyphs));
   }
 
   bool subset (hb_subset_context_t *c) const
@@ -714,8 +722,7 @@
     | hb_map (glyph_map)
     | hb_sink (new_coverage)
     ;
-    out->coverage.serialize (c->serializer, out)
-		 .serialize (c->serializer, new_coverage.iter ());
+    out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
     return_trace (bool (new_coverage));
   }
 
@@ -848,7 +855,7 @@
 		  Iterator components /* Starting from second */)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
     ligGlyph = ligature;
     if (unlikely (!component.serialize (c, components))) return_trace (false);
     return_trace (true);
@@ -947,15 +954,14 @@
 		  hb_array_t<const HBGlyphID> &component_list /* Starting from second for each ligature */)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
     if (unlikely (!ligature.serialize (c, ligatures.length))) return_trace (false);
     for (unsigned int i = 0; i < ligatures.length; i++)
     {
       unsigned int component_count = (unsigned) hb_max ((int) component_count_list[i] - 1, 0);
-      if (unlikely (!ligature[i].serialize (c, this)
-				.serialize (c,
-					    ligatures[i],
-					    component_list.sub_array (0, component_count))))
+      if (unlikely (!ligature[i].serialize_serialize (c,
+                                                      ligatures[i],
+                                                      component_list.sub_array (0, component_count))))
 	return_trace (false);
       component_list += component_count;
     }
@@ -1060,20 +1066,20 @@
 		  hb_array_t<const HBGlyphID> component_list /* Starting from second for each ligature */)
   {
     TRACE_SERIALIZE (this);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
     if (unlikely (!ligatureSet.serialize (c, first_glyphs.length))) return_trace (false);
     for (unsigned int i = 0; i < first_glyphs.length; i++)
     {
       unsigned int ligature_count = ligature_per_first_glyph_count_list[i];
-      if (unlikely (!ligatureSet[i].serialize (c, this)
-				   .serialize (c,
-					       ligatures_list.sub_array (0, ligature_count),
-					       component_count_list.sub_array (0, ligature_count),
-					       component_list))) return_trace (false);
+      if (unlikely (!ligatureSet[i]
+                        .serialize_serialize (c,
+                                              ligatures_list.sub_array (0, ligature_count),
+                                              component_count_list.sub_array (0, ligature_count),
+                                              component_list))) return_trace (false);
       ligatures_list += ligature_count;
       component_count_list += ligature_count;
     }
-    return_trace (coverage.serialize (c, this).serialize (c, first_glyphs));
+    return_trace (coverage.serialize_serialize (c, first_glyphs));
   }
 
   bool subset (hb_subset_context_t *c) const
@@ -1094,8 +1100,7 @@
     | hb_map (glyph_map)
     | hb_sink (new_coverage)
     ;
-    out->coverage.serialize (c->serializer, out)
-		 .serialize (c->serializer, new_coverage.iter ());
+    out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
     return_trace (bool (new_coverage));
   }
 
@@ -1325,7 +1330,7 @@
     if (unlikely (! c->serializer->check_success (substitute_out->serialize (c->serializer, substitutes))))
         return_trace (false);
 
-    if (unlikely (!out->coverage.serialize (c->serializer, out).serialize (c->serializer, glyphs)))
+    if (unlikely (!out->coverage.serialize_serialize (c->serializer, glyphs)))
       return_trace (false);
     return_trace (true);
   }
@@ -1554,10 +1559,6 @@
 
   static inline bool apply_recurse_func (hb_ot_apply_context_t *c, unsigned int lookup_index);
 
-  SubTable& serialize_subtable (hb_serialize_context_t *c,
-				unsigned int i)
-  { return get_subtables<SubTable> ()[i].serialize (c, this); }
-
   bool serialize_single (hb_serialize_context_t *c,
 			 uint32_t lookup_props,
 			 hb_sorted_array_t<const HBGlyphID> glyphs,
@@ -1565,8 +1566,13 @@
   {
     TRACE_SERIALIZE (this);
     if (unlikely (!Lookup::serialize (c, SubTable::Single, lookup_props, 1))) return_trace (false);
-    return_trace (serialize_subtable (c, 0).u.single.
-		  serialize (c, hb_zip (glyphs, substitutes)));
+    if (c->push<SubTable> ()->u.single.serialize (c, hb_zip (glyphs, substitutes)))
+    {
+      c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
+      return_trace (true);
+    }
+    c->pop_discard ();
+    return_trace (false);
   }
 
   bool serialize_multiple (hb_serialize_context_t *c,
@@ -1577,11 +1583,17 @@
   {
     TRACE_SERIALIZE (this);
     if (unlikely (!Lookup::serialize (c, SubTable::Multiple, lookup_props, 1))) return_trace (false);
-    return_trace (serialize_subtable (c, 0).u.multiple.
-		  serialize (c,
-			     glyphs,
-			     substitute_len_list,
-			     substitute_glyphs_list));
+    if (c->push<SubTable> ()->u.multiple.
+        serialize (c,
+                   glyphs,
+                   substitute_len_list,
+                   substitute_glyphs_list))
+    {
+      c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
+      return_trace (true);
+    }
+    c->pop_discard ();
+    return_trace (false);
   }
 
   bool serialize_alternate (hb_serialize_context_t *c,
@@ -1592,11 +1604,18 @@
   {
     TRACE_SERIALIZE (this);
     if (unlikely (!Lookup::serialize (c, SubTable::Alternate, lookup_props, 1))) return_trace (false);
-    return_trace (serialize_subtable (c, 0).u.alternate.
-		  serialize (c,
-			     glyphs,
-			     alternate_len_list,
-			     alternate_glyphs_list));
+
+    if (c->push<SubTable> ()->u.alternate.
+        serialize (c,
+                   glyphs,
+                   alternate_len_list,
+                   alternate_glyphs_list))
+    {
+      c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
+      return_trace (true);
+    }
+    c->pop_discard ();
+    return_trace (false);
   }
 
   bool serialize_ligature (hb_serialize_context_t *c,
@@ -1609,13 +1628,19 @@
   {
     TRACE_SERIALIZE (this);
     if (unlikely (!Lookup::serialize (c, SubTable::Ligature, lookup_props, 1))) return_trace (false);
-    return_trace (serialize_subtable (c, 0).u.ligature.
-		  serialize (c,
-			     first_glyphs,
-			     ligature_per_first_glyph_count_list,
-			     ligatures_list,
-			     component_count_list,
-			     component_list));
+    if (c->push<SubTable> ()->u.ligature.
+        serialize (c,
+                   first_glyphs,
+                   ligature_per_first_glyph_count_list,
+                   ligatures_list,
+                   component_count_list,
+                   component_list))
+    {
+      c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
+      return_trace (true);
+    }
+    c->pop_discard ();
+    return_trace (false);
   }
 
   template <typename context_t>

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -122,7 +122,7 @@
     hb_set_t *covered_glyph_set = done_lookups_glyph_set->get (lookup_index);
     if (unlikely (covered_glyph_set->in_error ()))
       return true;
-    if (parent_active_glyphs ()->is_subset (covered_glyph_set))
+    if (parent_active_glyphs ()->is_subset (*covered_glyph_set))
       return true;
 
     hb_set_union (covered_glyph_set, parent_active_glyphs ());
@@ -183,7 +183,7 @@
 
   void flush ()
   {
-    hb_set_del_range (output, face->get_num_glyphs (), hb_set_get_max (output));	/* Remove invalid glyphs. */
+    hb_set_del_range (output, face->get_num_glyphs (), HB_SET_VALUE_INVALID);	/* Remove invalid glyphs. */
     hb_set_union (glyphs, output);
     hb_set_clear (output);
     active_glyphs_stack.pop ();
@@ -1898,8 +1898,7 @@
     | hb_sink (new_coverage)
     ;
 
-    out->coverage.serialize (c->serializer, out)
-		 .serialize (c->serializer, new_coverage.iter ());
+    out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
     return_trace (bool (new_coverage));
   }
 
@@ -2866,8 +2865,7 @@
     | hb_sink (new_coverage)
     ;
 
-    out->coverage.serialize (c->serializer, out)
-		 .serialize (c->serializer, new_coverage.iter ());
+    out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
     return_trace (bool (new_coverage));
   }
 
@@ -3788,7 +3786,7 @@
 
       this->lookup_count = table->get_lookup_count ();
 
-      this->accels = (hb_ot_layout_lookup_accelerator_t *) calloc (this->lookup_count, sizeof (hb_ot_layout_lookup_accelerator_t));
+      this->accels = (hb_ot_layout_lookup_accelerator_t *) hb_calloc (this->lookup_count, sizeof (hb_ot_layout_lookup_accelerator_t));
       if (unlikely (!this->accels))
       {
 	this->lookup_count = 0;
@@ -3804,7 +3802,7 @@
     {
       for (unsigned int i = 0; i < this->lookup_count; i++)
 	this->accels[i].fini ();
-      free (this->accels);
+      hb_free (this->accels);
       this->table.destroy ();
     }
 

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	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -131,7 +131,9 @@
 
   AAT::hb_aat_apply_context_t c (plan, font, buffer, blob);
 
+  if (!buffer->message (font, "start table kern")) return;
   kern.apply (&c);
+  (void) buffer->message (font, "end table kern");
 }
 #endif
 
@@ -144,7 +146,7 @@
 OT::GDEF::is_blocklisted (hb_blob_t *blob,
 			  hb_face_t *face) const
 {
-#ifdef HB_NO_OT_LAYOUT_BLACKLIST
+#ifdef HB_NO_OT_LAYOUT_BLOCKLIST
   return false;
 #endif
   /* The ugly business of blocklisting individual fonts' tables happen here!
@@ -383,7 +385,7 @@
 OT::GSUB::is_blocklisted (hb_blob_t *blob HB_UNUSED,
 			  hb_face_t *face) const
 {
-#ifdef HB_NO_OT_LAYOUT_BLACKLIST
+#ifdef HB_NO_OT_LAYOUT_BLOCKLIST
   return false;
 #endif
   return false;
@@ -393,7 +395,7 @@
 OT::GPOS::is_blocklisted (hb_blob_t *blob HB_UNUSED,
 			  hb_face_t *face HB_UNUSED) const
 {
-#ifdef HB_NO_OT_LAYOUT_BLACKLIST
+#ifdef HB_NO_OT_LAYOUT_BLOCKLIST
   return false;
 #endif
   return false;
@@ -991,11 +993,47 @@
 {
   hb_collect_features_context_t (hb_face_t *face,
 				 hb_tag_t   table_tag,
-				 hb_set_t  *feature_indexes_)
+				 hb_set_t  *feature_indices_,
+                                 const hb_tag_t *features)
+
     : g (get_gsubgpos_table (face, table_tag)),
-      feature_indexes (feature_indexes_),
-      script_count (0),langsys_count (0), feature_index_count (0) {}
+      feature_indices (feature_indices_),
+      has_feature_filter (false),
+      script_count (0),langsys_count (0), feature_index_count (0)
+  {
+    compute_feature_filter (features);
+  }
 
+  void compute_feature_filter (const hb_tag_t *features)
+  {
+    if (features == nullptr)
+    {
+      has_feature_filter = false;
+      return;
+    }
+
+    has_feature_filter = true;
+    for (; *features; features++)
+    {
+      hb_tag_t tag = *features;
+      unsigned index;
+      g.find_feature_index (tag, &index);
+      if (index == OT::Index::NOT_FOUND_INDEX) continue;
+
+      feature_indices_filter.add(index);
+      for (int i = (int) index - 1; i >= 0; i--)
+      {
+        if (g.get_feature_tag (i) != tag) break;
+        feature_indices_filter.add(i);
+      }
+      for (unsigned i = index + 1; i < g.get_feature_count (); i++)
+      {
+        if (g.get_feature_tag (i) != tag) break;
+        feature_indices_filter.add(i);
+      }
+    }
+  }
+
   bool visited (const OT::Script &s)
   {
     /* We might have Null() object here.  Don't want to involve
@@ -1043,7 +1081,9 @@
 
   public:
   const OT::GSUBGPOS &g;
-  hb_set_t           *feature_indexes;
+  hb_set_t *feature_indices;
+  hb_set_t  feature_indices_filter;
+  bool has_feature_filter;
 
   private:
   hb_set_t visited_script;
@@ -1055,37 +1095,31 @@
 
 static void
 langsys_collect_features (hb_collect_features_context_t *c,
-			  const OT::LangSys  &l,
-			  const hb_tag_t     *features)
+			  const OT::LangSys  &l)
 {
   if (c->visited (l)) return;
 
-  if (!features)
+  if (!c->has_feature_filter)
   {
     /* All features. */
     if (l.has_required_feature () && !c->visited_feature_indices (1))
-      c->feature_indexes->add (l.get_required_feature_index ());
+      c->feature_indices->add (l.get_required_feature_index ());
 
+    // TODO(garretrieger): filter out indices >= feature count?
     if (!c->visited_feature_indices (l.featureIndex.len))
-      l.add_feature_indexes_to (c->feature_indexes);
+      l.add_feature_indexes_to (c->feature_indices);
   }
   else
   {
-    /* Ugh. Any faster way? */
-    for (; *features; features++)
+    if (c->feature_indices_filter.is_empty()) return;
+    unsigned int num_features = l.get_feature_count ();
+    for (unsigned int i = 0; i < num_features; i++)
     {
-      hb_tag_t feature_tag = *features;
-      unsigned int num_features = l.get_feature_count ();
-      for (unsigned int i = 0; i < num_features; i++)
-      {
-	unsigned int feature_index = l.get_feature_index (i);
+      unsigned int feature_index = l.get_feature_index (i);
+      if (!c->feature_indices_filter.has (feature_index)) continue;
 
-	if (feature_tag == c->g.get_feature_tag (feature_index))
-	{
-	  c->feature_indexes->add (feature_index);
-	  break;
-	}
-      }
+      c->feature_indices->add (feature_index);
+      c->feature_indices_filter.del (feature_index);
     }
   }
 }
@@ -1093,8 +1127,7 @@
 static void
 script_collect_features (hb_collect_features_context_t *c,
 			 const OT::Script   &s,
-			 const hb_tag_t *languages,
-			 const hb_tag_t *features)
+			 const hb_tag_t *languages)
 {
   if (c->visited (s)) return;
 
@@ -1103,14 +1136,13 @@
     /* All languages. */
     if (s.has_default_lang_sys ())
       langsys_collect_features (c,
-				s.get_default_lang_sys (),
-				features);
+				s.get_default_lang_sys ());
 
+
     unsigned int count = s.get_lang_sys_count ();
     for (unsigned int language_index = 0; language_index < count; language_index++)
       langsys_collect_features (c,
-				s.get_lang_sys (language_index),
-				features);
+				s.get_lang_sys (language_index));
   }
   else
   {
@@ -1119,8 +1151,8 @@
       unsigned int language_index;
       if (s.find_lang_sys_index (*languages, &language_index))
 	langsys_collect_features (c,
-				  s.get_lang_sys (language_index),
-				  features);
+				  s.get_lang_sys (language_index));
+
     }
   }
 }
@@ -1151,7 +1183,7 @@
 			       const hb_tag_t *features,
 			       hb_set_t       *feature_indexes /* OUT */)
 {
-  hb_collect_features_context_t c (face, table_tag, feature_indexes);
+  hb_collect_features_context_t c (face, table_tag, feature_indexes, features);
   if (!scripts)
   {
     /* All scripts. */
@@ -1159,8 +1191,7 @@
     for (unsigned int script_index = 0; script_index < count; script_index++)
       script_collect_features (&c,
 			       c.g.get_script (script_index),
-			       languages,
-			       features);
+			       languages);
   }
   else
   {
@@ -1170,8 +1201,7 @@
       if (c.g.find_script_index (*scripts, &script_index))
 	script_collect_features (&c,
 				 c.g.get_script (script_index),
-				 languages,
-				 features);
+				 languages);
     }
   }
 }
@@ -1358,7 +1388,8 @@
  * @lookup_index: The index of the lookup to query
  * @glyphs: The sequence of glyphs to query for substitution
  * @glyphs_length: The length of the glyph sequence
- * @zero_context: #hb_bool_t indicating whether substitutions should be context-free
+ * @zero_context: #hb_bool_t indicating whether pre-/post-context are disallowed
+ * in substitutions
  *
  * Tests whether a specified lookup in the specified face would
  * trigger a substitution on the given glyph sequence.
@@ -1855,27 +1886,20 @@
   if (likely (!lookup.is_reverse ()))
   {
     /* in/out forward substitution/positioning */
-    if (Proxy::table_index == 0u)
+    if (!Proxy::inplace)
       buffer->clear_output ();
+
     buffer->idx = 0;
+    apply_forward (c, accel);
 
-    bool ret;
-    ret = apply_forward (c, accel);
-    if (ret)
-    {
-      if (!Proxy::inplace)
-	buffer->swap_buffers ();
-      else
-	assert (!buffer->has_separate_output ());
-    }
+    if (!Proxy::inplace)
+      buffer->swap_buffers ();
   }
   else
   {
     /* in-place backward substitution/positioning */
-    if (Proxy::table_index == 0u)
-      buffer->remove_output ();
+    assert (!buffer->have_output);
     buffer->idx = buffer->len - 1;
-
     apply_backward (c, accel);
   }
 }
@@ -1891,7 +1915,8 @@
   OT::hb_ot_apply_context_t c (table_index, font, buffer);
   c.set_recurse_func (Proxy::Lookup::apply_recurse_func);
 
-  for (unsigned int stage_index = 0; stage_index < stages[table_index].length; stage_index++) {
+  for (unsigned int stage_index = 0; stage_index < stages[table_index].length; stage_index++)
+  {
     const stage_map_t *stage = &stages[table_index][stage_index];
     for (; i < stage->last_lookup; i++)
     {
@@ -1901,11 +1926,8 @@
       c.set_lookup_mask (lookups[table_index][i].mask);
       c.set_auto_zwj (lookups[table_index][i].auto_zwj);
       c.set_auto_zwnj (lookups[table_index][i].auto_zwnj);
-      if (lookups[table_index][i].random)
-      {
-	c.set_random (true);
-	buffer->unsafe_to_break_all ();
-      }
+      c.set_random (lookups[table_index][i].random);
+
       apply_string<Proxy> (&c,
 			   proxy.table.get_lookup (lookup_index),
 			   proxy.accels[lookup_index]);
@@ -1913,10 +1935,7 @@
     }
 
     if (stage->pause_func)
-    {
-      buffer->clear_output ();
       stage->pause_func (plan, font, buffer);
-    }
   }
 }
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-map.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-map.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-map.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -150,9 +150,8 @@
 hb_ot_map_builder_t::compile (hb_ot_map_t                  &m,
 			      const hb_ot_shape_plan_key_t &key)
 {
-  static_assert ((!(HB_GLYPH_FLAG_DEFINED & (HB_GLYPH_FLAG_DEFINED + 1))), "");
-  unsigned int global_bit_mask = HB_GLYPH_FLAG_DEFINED + 1;
-  unsigned int global_bit_shift = hb_popcount (HB_GLYPH_FLAG_DEFINED);
+  unsigned int global_bit_shift = 8 * sizeof (hb_mask_t) - 1;
+  unsigned int global_bit_mask = 1u << global_bit_shift;
 
   m.global_mask = global_bit_mask;
 
@@ -205,7 +204,8 @@
 
 
   /* Allocate bits now */
-  unsigned int next_bit = global_bit_shift + 1;
+  static_assert ((!(HB_GLYPH_FLAG_DEFINED & (HB_GLYPH_FLAG_DEFINED + 1))), "");
+  unsigned int next_bit = hb_popcount (HB_GLYPH_FLAG_DEFINED) + 1;
 
   for (unsigned int i = 0; i < feature_infos.length; i++)
   {
@@ -220,7 +220,7 @@
       /* Limit bits per feature. */
       bits_needed = hb_min (HB_OT_MAP_MAX_BITS, hb_bit_storage (info->max_value));
 
-    if (!info->max_value || next_bit + bits_needed > 8 * sizeof (hb_mask_t))
+    if (!info->max_value || next_bit + bits_needed >= global_bit_shift)
       continue; /* Feature disabled, or not enough bits. */
 
 
@@ -274,7 +274,6 @@
     }
     map->_1_mask = (1u << map->shift) & map->mask;
     map->needs_fallback = !found;
-
   }
   feature_infos.shrink (0); /* Done with these */
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-maxp-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-maxp-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-maxp-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -107,7 +107,7 @@
       maxpV1Tail *dest_v1 = c->serializer->embed<maxpV1Tail> (src_v1);
       if (unlikely (!dest_v1)) return_trace (false);
 
-      if (c->plan->drop_hints)
+      if (c->plan->flags & HB_SUBSET_FLAGS_NO_HINTING)
 	drop_hint_fields (dest_v1);
     }
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -214,7 +214,7 @@
     this->format = 0;
     this->count = it.len ();
 
-    NameRecord *name_records = (NameRecord *) calloc (it.len (), NameRecord::static_size);
+    NameRecord *name_records = (NameRecord *) hb_calloc (it.len (), NameRecord::static_size);
     if (unlikely (!name_records)) return_trace (false);
 
     hb_array_t<NameRecord> records (name_records, it.len ());
@@ -228,7 +228,7 @@
     records.qsort ();
 
     c->copy_all (records, src_string_pool);
-    free (records.arrayZ);
+    hb_free (records.arrayZ);
 
 
     if (unlikely (c->ran_out_of_room ())) return_trace (false);
@@ -249,7 +249,11 @@
     + nameRecordZ.as_array (count)
     | hb_filter (c->plan->name_ids, &NameRecord::nameID)
     | hb_filter (c->plan->name_languages, &NameRecord::languageID)
-    | hb_filter ([&] (const NameRecord& namerecord) { return c->plan->name_legacy || namerecord.isUnicode (); })
+    | hb_filter ([&] (const NameRecord& namerecord) {
+      return
+          (c->plan->flags & HB_SUBSET_FLAGS_NAME_LEGACY)
+          || namerecord.isUnicode ();
+    })
     ;
 
     name_prime->serialize (c->serializer, it, hb_addressof (this + stringOffset));

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -30,7 +30,6 @@
 
 #include "hb-open-type.hh"
 #include "hb-ot-os2-unicode-ranges.hh"
-#include "hb-ot-cmap-table.hh"
 
 #include "hb-set.hh"
 
@@ -172,33 +171,17 @@
     TRACE_SUBSET (this);
     OS2 *os2_prime = c->serializer->embed (this);
     if (unlikely (!os2_prime)) return_trace (false);
+    if (c->plan->flags & HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES)
+      return_trace (true);
 
-    hb_set_t unicodes;
-    if (!c->plan->glyphs_requested->is_empty ())
-    {
-      hb_map_t unicode_glyphid_map;
-
-      OT::cmap::accelerator_t cmap;
-      cmap.init (c->plan->source);
-      cmap.collect_mapping (&unicodes, &unicode_glyphid_map);
-      cmap.fini ();
-
-      hb_set_set (&unicodes, c->plan->unicodes);
-
-      + unicode_glyphid_map.iter ()
-      | hb_filter (c->plan->glyphs_requested, hb_second)
-      | hb_map (hb_first)
-      | hb_sink (unicodes)
-      ;
-    }
     /* when --gids option is not used, no need to do collect_mapping that is
        * iterating all codepoints in each subtable, which is not efficient */
     uint16_t min_cp, max_cp;
-    find_min_and_max_codepoint (unicodes.is_empty () ? c->plan->unicodes : &unicodes, &min_cp, &max_cp);
+    find_min_and_max_codepoint (c->plan->unicodes, &min_cp, &max_cp);
     os2_prime->usFirstCharIndex = min_cp;
     os2_prime->usLastCharIndex = max_cp;
 
-    _update_unicode_ranges (unicodes.is_empty () ? c->plan->unicodes : &unicodes, os2_prime->ulUnicodeRange);
+    _update_unicode_ranges (c->plan->unicodes, os2_prime->ulUnicodeRange);
 
     return_trace (true);
   }

Added: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table-v2subset.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table-v2subset.hh	                        (rev 0)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table-v2subset.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -0,0 +1,114 @@
+/*
+ * Copyright © 2021  Google, Inc.
+ *
+ *  This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ */
+
+#ifndef HB_OT_POST_TABLE_V2SUBSET_HH
+#define HB_OT_POST_TABLE_V2SUBSET_HH
+
+#include "hb-open-type.hh"
+#include "hb-ot-post-table.hh"
+
+/*
+ * post -- PostScript
+ * https://docs.microsoft.com/en-us/typography/opentype/spec/post
+ */
+
+namespace OT {
+template<typename Iterator>
+HB_INTERNAL bool postV2Tail::serialize (hb_serialize_context_t *c,
+                                        Iterator it,
+                                        const void* _post) const
+{
+  TRACE_SERIALIZE (this);
+  auto *out = c->start_embed (this);
+  if (unlikely (!c->check_success (out))) return_trace (false);
+  if (!out->glyphNameIndex.serialize (c, + it
+                                         | hb_map (hb_second)))
+      return_trace (false);
+
+  hb_set_t copied_indices;
+  for (const auto& _ : + it )
+  {
+    unsigned glyph_id = _.first;
+    unsigned new_index = _.second;
+    
+    if (new_index < 258) continue;
+    if (copied_indices.has (new_index)) continue;
+    copied_indices.add (new_index);
+    
+    hb_bytes_t s = reinterpret_cast<const post::accelerator_t*> (_post)->find_glyph_name (glyph_id);
+    HBUINT8 *o = c->allocate_size<HBUINT8> (HBUINT8::static_size * (s.length + 1));
+    if (unlikely (!o)) return_trace (false);
+    if (!c->check_assign (o[0], s.length, HB_SERIALIZE_ERROR_INT_OVERFLOW)) return_trace (false);
+    memcpy (o+1, s.arrayZ, HBUINT8::static_size * s.length);
+  }
+
+  return_trace (true);
+}
+
+HB_INTERNAL bool postV2Tail::subset (hb_subset_context_t *c) const
+{
+  TRACE_SUBSET (this);
+
+  const hb_map_t &reverse_glyph_map = *c->plan->reverse_glyph_map;
+  unsigned num_glyphs = c->plan->num_output_glyphs ();
+  hb_map_t old_new_index_map, old_gid_new_index_map;
+  unsigned i = 0;
+
+  for (hb_codepoint_t new_gid = 0; new_gid < num_glyphs; new_gid++)
+  {
+    hb_codepoint_t old_gid = reverse_glyph_map.get (new_gid);
+    unsigned old_index = glyphNameIndex[old_gid];
+
+    unsigned new_index;
+    if (old_index <= 257) new_index = old_index;
+    else if (old_new_index_map.has (old_index)) new_index = old_new_index_map.get (old_index);
+    else
+    {
+      new_index = 258 + i;
+      old_new_index_map.set (old_index, new_index);
+      i++;
+    }
+    old_gid_new_index_map.set (old_gid, new_index);
+  }
+
+  auto index_iter =
+  + hb_range (num_glyphs)
+  | hb_map (reverse_glyph_map)
+  | hb_map_retains_sorting ([&](hb_codepoint_t old_gid)
+                            {
+                              unsigned new_index = old_gid_new_index_map.get (old_gid);
+                              return hb_pair_t<unsigned, unsigned> (old_gid, new_index);
+                            })
+  ;
+
+  post::accelerator_t _post;
+  _post.init (c->plan->source);
+  bool ret = serialize (c->serializer, index_iter, &_post);
+  _post.fini ();
+  return_trace (ret);
+}
+
+} /* namespace OT */
+#endif /* HB_OT_POST_TABLE_V2SUBSET_HH */

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -55,6 +55,13 @@
     return_trace (glyphNameIndex.sanitize (c));
   }
 
+  template<typename Iterator>
+  bool serialize (hb_serialize_context_t *c,
+                  Iterator it,
+                  const void* _post) const;
+
+  bool subset (hb_subset_context_t *c) const;
+
   protected:
   Array16Of<HBUINT16>	glyphNameIndex;	/* This is not an offset, but is the
 					 * ordinal number of the glyph in 'post'
@@ -71,13 +78,18 @@
 {
   static constexpr hb_tag_t tableTag = HB_OT_TAG_post;
 
-  void serialize (hb_serialize_context_t *c) const
+  bool serialize (hb_serialize_context_t *c, bool glyph_names) const
   {
+    TRACE_SERIALIZE (this);
     post *post_prime = c->allocate_min<post> ();
-    if (unlikely (!post_prime))  return;
+    if (unlikely (!post_prime))  return_trace (false);
 
     memcpy (post_prime, this, post::min_size);
-    post_prime->version.major = 3; // Version 3 does not have any glyph names.
+    if (!glyph_names)
+      return_trace (c->check_assign (post_prime->version.major, 3,
+                                     HB_SERIALIZE_ERROR_INT_OVERFLOW)); // Version 3 does not have any glyph names.
+
+    return_trace (true);
   }
 
   bool subset (hb_subset_context_t *c) const
@@ -86,13 +98,19 @@
     post *post_prime = c->serializer->start_embed<post> ();
     if (unlikely (!post_prime)) return_trace (false);
 
-    serialize (c->serializer);
+    bool glyph_names = c->plan->flags & HB_SUBSET_FLAGS_GLYPH_NAMES;
+    if (!serialize (c->serializer, glyph_names))
+      return_trace (false);
 
+    if (glyph_names && version.major == 2)
+      return_trace (v2X.subset (c));
+
     return_trace (true);
   }
 
   struct accelerator_t
   {
+    friend struct postV2Tail;
     void init (hb_face_t *face)
     {
       index_to_offset.init ();
@@ -117,7 +135,7 @@
     void fini ()
     {
       index_to_offset.fini ();
-      free (gids_sorted_by_name.get ());
+      hb_free (gids_sorted_by_name.get ());
       table.destroy ();
     }
 
@@ -148,7 +166,7 @@
 
       if (unlikely (!gids))
       {
-	gids = (uint16_t *) malloc (count * sizeof (gids[0]));
+	gids = (uint16_t *) hb_malloc (count * sizeof (gids[0]));
 	if (unlikely (!gids))
 	  return false; /* Anything better?! */
 
@@ -158,7 +176,7 @@
 
 	if (unlikely (!gids_sorted_by_name.cmpexch (nullptr, gids)))
 	{
-	  free (gids);
+	  hb_free (gids);
 	  goto retry;
 	}
       }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic-fallback.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic-fallback.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic-fallback.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -290,7 +290,7 @@
 arabic_fallback_plan_create (const hb_ot_shape_plan_t *plan,
 			     hb_font_t *font)
 {
-  arabic_fallback_plan_t *fallback_plan = (arabic_fallback_plan_t *) calloc (1, sizeof (arabic_fallback_plan_t));
+  arabic_fallback_plan_t *fallback_plan = (arabic_fallback_plan_t *) hb_calloc (1, sizeof (arabic_fallback_plan_t));
   if (unlikely (!fallback_plan))
     return const_cast<arabic_fallback_plan_t *> (&Null (arabic_fallback_plan_t));
 
@@ -308,7 +308,7 @@
     return fallback_plan;
 
   assert (fallback_plan->num_lookups == 0);
-  free (fallback_plan);
+  hb_free (fallback_plan);
   return const_cast<arabic_fallback_plan_t *> (&Null (arabic_fallback_plan_t));
 }
 
@@ -323,10 +323,10 @@
     {
       fallback_plan->accel_array[i].fini ();
       if (fallback_plan->free_lookups)
-	free (fallback_plan->lookup_array[i]);
+	hb_free (fallback_plan->lookup_array[i]);
     }
 
-  free (fallback_plan);
+  hb_free (fallback_plan);
 }
 
 static void

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -259,7 +259,7 @@
 void *
 data_create_arabic (const hb_ot_shape_plan_t *plan)
 {
-  arabic_shape_plan_t *arabic_plan = (arabic_shape_plan_t *) calloc (1, sizeof (arabic_shape_plan_t));
+  arabic_shape_plan_t *arabic_plan = (arabic_shape_plan_t *) hb_calloc (1, sizeof (arabic_shape_plan_t));
   if (unlikely (!arabic_plan))
     return nullptr;
 
@@ -282,7 +282,7 @@
 
   arabic_fallback_plan_destroy (arabic_plan->fallback_plan);
 
-  free (data);
+  hb_free (data);
 }
 
 static void

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-hangul.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-hangul.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-hangul.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -80,7 +80,7 @@
 static void *
 data_create_hangul (const hb_ot_shape_plan_t *plan)
 {
-  hangul_shape_plan_t *hangul_plan = (hangul_shape_plan_t *) calloc (1, sizeof (hangul_shape_plan_t));
+  hangul_shape_plan_t *hangul_plan = (hangul_shape_plan_t *) hb_calloc (1, sizeof (hangul_shape_plan_t));
   if (unlikely (!hangul_plan))
     return nullptr;
 
@@ -93,7 +93,7 @@
 static void
 data_destroy_hangul (void *data)
 {
-  free (data);
+  hb_free (data);
 }
 
 /* Constants for algorithmic hangul syllable [de]composition. */

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	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -106,7 +106,8 @@
 {
   /*
    * Basic features.
-   * These features are applied in order, one at a time, after initial_reordering.
+   * These features are applied in order, one at a time, after initial_reordering,
+   * constrained to the syllable.
    */
   {HB_TAG('n','u','k','t'), F_GLOBAL_MANUAL_JOINERS},
   {HB_TAG('a','k','h','n'), F_GLOBAL_MANUAL_JOINERS},
@@ -121,8 +122,8 @@
   {HB_TAG('c','j','c','t'), F_GLOBAL_MANUAL_JOINERS},
   /*
    * Other features.
-   * These features are applied all at once, after final_reordering
-   * but before clearing syllables.
+   * These features are applied all at once, after final_reordering, constrained
+   * to the syllable.
    * Default Bengali font in Windows for example has intermixed
    * lookups for init,pres,abvs,blws features.
    */
@@ -257,7 +258,7 @@
 static void *
 data_create_indic (const hb_ot_shape_plan_t *plan)
 {
-  indic_shape_plan_t *indic_plan = (indic_shape_plan_t *) calloc (1, sizeof (indic_shape_plan_t));
+  indic_shape_plan_t *indic_plan = (indic_shape_plan_t *) hb_calloc (1, sizeof (indic_shape_plan_t));
   if (unlikely (!indic_plan))
     return nullptr;
 
@@ -300,7 +301,7 @@
 static void
 data_destroy_indic (void *data)
 {
-  free (data);
+  hb_free (data);
 }
 
 static indic_position_t
@@ -960,7 +961,8 @@
   hb_syllabic_insert_dotted_circles (font, buffer,
 				     indic_broken_cluster,
 				     OT_DOTTEDCIRCLE,
-				     OT_Repha);
+				     OT_Repha,
+				     POS_END);
 
   foreach_syllable (buffer, start, end)
     initial_reordering_syllable_indic (plan, font->face, buffer, start, end);

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	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-khmer.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -42,7 +42,8 @@
 {
   /*
    * Basic features.
-   * These features are applied in order, one at a time, after reordering.
+   * These features are applied all at once, before reordering, constrained
+   * to the syllable.
    */
   {HB_TAG('p','r','e','f'), F_MANUAL_JOINERS},
   {HB_TAG('b','l','w','f'), F_MANUAL_JOINERS},
@@ -147,7 +148,7 @@
 static void *
 data_create_khmer (const hb_ot_shape_plan_t *plan)
 {
-  khmer_shape_plan_t *khmer_plan = (khmer_shape_plan_t *) calloc (1, sizeof (khmer_shape_plan_t));
+  khmer_shape_plan_t *khmer_plan = (khmer_shape_plan_t *) hb_calloc (1, sizeof (khmer_shape_plan_t));
   if (unlikely (!khmer_plan))
     return nullptr;
 
@@ -161,7 +162,7 @@
 static void
 data_destroy_khmer (void *data)
 {
-  free (data);
+  hb_free (data);
 }
 
 static void

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	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -41,7 +41,8 @@
 {
   /*
    * Basic features.
-   * These features are applied in order, one at a time, after reordering.
+   * These features are applied in order, one at a time, after reordering,
+   * constrained to the syllable.
    */
   HB_TAG('r','p','h','f'),
   HB_TAG('p','r','e','f'),

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-syllabic.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-syllabic.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-syllabic.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -34,7 +34,8 @@
 				   hb_buffer_t *buffer,
 				   unsigned int broken_syllable_type,
 				   unsigned int dottedcircle_category,
-				   int repha_category)
+				   int repha_category,
+				   int dottedcircle_position)
 {
   if (unlikely (buffer->flags & HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE))
     return;
@@ -61,6 +62,8 @@
   hb_glyph_info_t dottedcircle = {0};
   dottedcircle.codepoint = 0x25CCu;
   dottedcircle.complex_var_u8_category() = dottedcircle_category;
+  if (dottedcircle_position != -1)
+    dottedcircle.complex_var_u8_auxiliary() = dottedcircle_position;
   dottedcircle.codepoint = dottedcircle_glyph;
 
   buffer->clear_output ();

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-syllabic.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-syllabic.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-syllabic.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -35,7 +35,8 @@
 				   hb_buffer_t *buffer,
 				   unsigned int broken_syllable_type,
 				   unsigned int dottedcircle_category,
-				   int repha_category = -1);
+				   int repha_category = -1,
+				   int dottedcircle_position = -1);
 
 
 #endif /* HB_OT_SHAPE_COMPLEX_SYLLABIC_HH */

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -375,7 +375,9 @@
 typename Iter::item_t>
 {
 	machine_index_t (const Iter& it) : it (it) {}
-	machine_index_t (const machine_index_t& o) : it (o.it) {}
+	machine_index_t (const machine_index_t& o) :
+	  hb_iter_with_fallback_t<machine_index_t<Iter>, typename Iter::item_t>(o),
+	  it (o.it) {}
 	
 	static constexpr bool is_random_access_iterator = Iter::is_random_access_iterator;
 	static constexpr bool is_sorted_iterator = Iter::is_sorted_iterator;

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	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -47,7 +47,8 @@
 {
   /*
    * Basic features.
-   * These features are applied all at once, before reordering.
+   * These features are applied all at once, before reordering, constrained
+   * to the syllable.
    */
   HB_TAG('r','k','r','f'),
   HB_TAG('a','b','v','f'),
@@ -154,7 +155,7 @@
 static void *
 data_create_use (const hb_ot_shape_plan_t *plan)
 {
-  use_shape_plan_t *use_plan = (use_shape_plan_t *) calloc (1, sizeof (use_shape_plan_t));
+  use_shape_plan_t *use_plan = (use_shape_plan_t *) hb_calloc (1, sizeof (use_shape_plan_t));
   if (unlikely (!use_plan))
     return nullptr;
 
@@ -165,7 +166,7 @@
     use_plan->arabic_plan = (arabic_shape_plan_t *) data_create_arabic (plan);
     if (unlikely (!use_plan->arabic_plan))
     {
-      free (use_plan);
+      hb_free (use_plan);
       return nullptr;
     }
   }
@@ -181,7 +182,7 @@
   if (use_plan->arabic_plan)
     data_destroy_arabic (use_plan->arabic_plan);
 
-  free (data);
+  hb_free (data);
 }
 
 static void

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	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -149,13 +149,15 @@
    * Decide who does positioning. GPOS, kerx, kern, or fallback.
    */
 
-  if (0)
+  bool has_gsub = hb_ot_layout_has_substitution (face);
+  bool has_gpos = !disable_gpos && hb_ot_layout_has_positioning (face);
+  if (false)
     ;
 #ifndef HB_NO_AAT_SHAPE
-  else if (hb_aat_layout_has_positioning (face))
+  else if (hb_aat_layout_has_positioning (face) && !(has_gsub && has_gpos))
     plan.apply_kerx = true;
 #endif
-  else if (!apply_morx && !disable_gpos && hb_ot_layout_has_positioning (face))
+  else if (!apply_morx && has_gpos)
     plan.apply_gpos = true;
 
   if (!plan.apply_kerx && (!has_gpos_kern || !plan.apply_gpos))
@@ -172,6 +174,8 @@
 #endif
   }
 
+  plan.apply_fallback_kern = !(plan.apply_gpos || plan.apply_kerx || plan.apply_kern);
+
   plan.zero_marks = script_zero_marks &&
 		    !plan.apply_kerx &&
 		    (!plan.apply_kern
@@ -193,6 +197,12 @@
 				   script_fallback_mark_positioning;
 
 #ifndef HB_NO_AAT_SHAPE
+  /* If we're using morx shaping, we cancel mark position adjustment because
+     Apple Color Emoji assumes this will NOT be done when forming emoji sequences;
+     https://github.com/harfbuzz/harfbuzz/issues/2967. */
+  if (plan.apply_morx)
+    plan.adjust_mark_positioning_when_zeroing = false;
+
   /* Currently we always apply trak. */
   plan.apply_trak = plan.requested_tracking && hb_aat_layout_has_tracking (face);
 #endif
@@ -266,11 +276,12 @@
   else if (this->apply_kerx)
     hb_aat_layout_position (this, font, buffer);
 #endif
+
 #ifndef HB_NO_OT_KERN
-  else if (this->apply_kern)
+  if (this->apply_kern)
     hb_ot_layout_kern (this, font, buffer);
 #endif
-  else
+  else if (this->apply_fallback_kern)
     _hb_ot_shape_fallback_kern (this, font, buffer);
 
 #ifndef HB_NO_AAT_SHAPE
@@ -363,6 +374,10 @@
       map->add_feature (horizontal_features[i]);
   else
   {
+    /* We only apply `vert` feature. See:
+     * https://github.com/harfbuzz/harfbuzz/commit/d71c0df2d17f4590d5611239577a6cb532c26528
+     * https://lists.freedesktop.org/archives/harfbuzz/2013-August/003490.html */
+
     /* We really want to find a 'vert' feature if there's any in the font, no
      * matter which script/langsys it is listed (or not) under.
      * See various bugs referenced from:
@@ -478,6 +493,14 @@
     if (unlikely (_hb_glyph_info_get_general_category (&info[i]) == HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL &&
 		  hb_in_range<hb_codepoint_t> (info[i].codepoint, 0x1F3FBu, 0x1F3FFu)))
     {
+      _hb_glyph_info_set_continuation (&info[i]);
+    }
+    /* Regional_Indicators are hairy as hell...
+     * https://github.com/harfbuzz/harfbuzz/issues/2265 */
+    else if (unlikely (i && hb_in_range<hb_codepoint_t> (info[i].codepoint, 0x1F1E6u, 0x1F1FFu)))
+    {
+      if (hb_in_range<hb_codepoint_t> (info[i - 1].codepoint, 0x1F1E6u, 0x1F1FFu) &&
+	  !_hb_glyph_info_is_continuation (&info[i - 1]))
 	_hb_glyph_info_set_continuation (&info[i]);
     }
 #ifndef HB_NO_EMOJI_SEQUENCES
@@ -535,6 +558,7 @@
   info.cluster = buffer->cur().cluster;
   info.mask = buffer->cur().mask;
   (void) buffer->output_info (info);
+
   buffer->swap_buffers ();
 }
 
@@ -558,6 +582,36 @@
   hb_direction_t direction = buffer->props.direction;
   hb_direction_t horiz_dir = hb_script_get_horizontal_direction (buffer->props.script);
 
+  /* Numeric runs in natively-RTL scripts are actually native-LTR, so we reset
+   * the horiz_dir if the run contains at least one decimal-number char, and no
+   * letter chars (ideally we should be checking for chars with strong
+   * directionality but hb-unicode currently lacks bidi categories).
+   *
+   * This allows digit sequences in Arabic etc to be shaped in "native"
+   * direction, so that features like ligatures will work as intended.
+   *
+   * https://github.com/harfbuzz/harfbuzz/issues/501
+   */
+  if (unlikely (horiz_dir == HB_DIRECTION_RTL && direction == HB_DIRECTION_LTR))
+  {
+    bool found_number = false, found_letter = false;
+    const auto* info = buffer->info;
+    const auto count = buffer->len;
+    for (unsigned i = 0; i < count; i++)
+    {
+      auto gc = _hb_glyph_info_get_general_category (&info[i]);
+      if (gc == HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER)
+        found_number = true;
+      else if (HB_UNICODE_GENERAL_CATEGORY_IS_LETTER (gc))
+      {
+        found_letter = true;
+        break;
+      }
+    }
+    if (found_number && !found_letter)
+      horiz_dir = HB_DIRECTION_LTR;
+  }
+
   /* TODO vertical:
    * The only BTT vertical script is Ogham, but it's not clear to me whether OpenType
    * Ogham fonts are supposed to be implemented BTT or not.  Need to research that
@@ -1111,8 +1165,6 @@
 
   _hb_buffer_allocate_unicode_vars (c->buffer);
 
-  c->buffer->clear_output ();
-
   hb_ot_shape_initialize_masks (c);
   hb_set_unicode_props (c->buffer);
   hb_insert_dotted_circle (c->buffer, c->font);
@@ -1122,7 +1174,8 @@
   hb_ensure_native_direction (c->buffer);
 
   if (c->plan->shaper->preprocess_text &&
-    c->buffer->message(c->font, "start preprocess-text")) {
+      c->buffer->message(c->font, "start preprocess-text"))
+  {
     c->plan->shaper->preprocess_text (c->plan, c->buffer, c->font);
     (void) c->buffer->message(c->font, "end preprocess-text");
   }
@@ -1164,7 +1217,7 @@
  * @lookup_indexes: (out): The #hb_set_t set of lookups returned
  *
  * Computes the complete set of GSUB or GPOS lookups that are applicable
- * under a given @shape_plan. 
+ * under a given @shape_plan.
  *
  * Since: 0.9.7
  **/

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -112,6 +112,7 @@
 #else
   static constexpr bool apply_kern = false;
 #endif
+  bool apply_fallback_kern : 1;
 #ifndef HB_NO_AAT_SHAPE
   bool apply_kerx : 1;
   bool apply_morx : 1;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -522,7 +522,7 @@
       unsigned char *buf;
       const char *lang_str = hb_language_to_string (*language);
       size_t len = strlen (lang_str);
-      buf = (unsigned char *) malloc (len + 16);
+      buf = (unsigned char *) hb_malloc (len + 16);
       if (unlikely (!buf))
       {
 	*language = nullptr;
@@ -544,7 +544,7 @@
 	for (shift = 28; shift >= 0; shift -= 4)
 	  buf[len++] = TOHEX (script_tag >> shift);
 	*language = hb_language_from_string ((char *) buf, len);
-	free (buf);
+	hb_free (buf);
       }
     }
   }

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	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-fvar-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -142,11 +142,13 @@
     max = hb_max (default_, maxValue / 65536.f);
   }
 
+  public:
+  Tag		axisTag;	/* Tag identifying the design variation for the axis. */
   protected:
-  Tag		axisTag;	/* Tag identifying the design variation for the axis. */
   HBFixed	minValue;	/* The minimum coordinate value for the axis. */
   HBFixed	defaultValue;	/* The default coordinate value for the axis. */
   HBFixed	maxValue;	/* The maximum coordinate value for the axis. */
+  public:
   HBUINT16	flags;		/* Axis flags. */
   NameID	axisNameID;	/* The name ID for entries in the 'name' table that
 				 * provide a display name for this axis. */
@@ -214,7 +216,6 @@
     return axes.lfind (tag, axis_index) && (axes[*axis_index].get_axis_deprecated (info), true);
   }
 #endif
-
   bool
   find_axis_info (hb_tag_t tag, hb_ot_var_axis_info_t *info) const
   {
@@ -289,7 +290,7 @@
     ;
   }
 
-  protected:
+  public:
   hb_array_t<const AxisRecord> get_axes () const
   { return hb_array (&(this+firstAxis), axisCount); }
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -419,7 +419,9 @@
     out->glyphCount = num_glyphs;
 
     unsigned int subset_data_size = 0;
-    for (hb_codepoint_t gid = 0; gid < num_glyphs; gid++)
+    for (hb_codepoint_t gid = (c->plan->flags & HB_SUBSET_FLAGS_NOTDEF_OUTLINE) ? 0 : 1;
+         gid < num_glyphs;
+         gid++)
     {
       hb_codepoint_t old_gid;
       if (!c->plan->old_gid_for_new_gid (gid, &old_gid)) continue;
@@ -449,7 +451,9 @@
     out->dataZ = subset_data - (char *) out;
 
     unsigned int glyph_offset = 0;
-    for (hb_codepoint_t gid = 0; gid < num_glyphs; gid++)
+    for (hb_codepoint_t gid = (c->plan->flags & HB_SUBSET_FLAGS_NOTDEF_OUTLINE) ? 0 : 1;
+         gid < num_glyphs;
+         gid++)
     {
       hb_codepoint_t old_gid;
       hb_bytes_t var_data_bytes = c->plan->old_gid_for_new_gid (gid, &old_gid)

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-hvar-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-hvar-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-hvar-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -54,7 +54,7 @@
     TRACE_SERIALIZE (this);
     if (unlikely (output_map.length && ((((inner_bit_count-1)&~0xF)!=0) || (((width-1)&~0x3)!=0))))
       return_trace (false);
-    if (unlikely (!c->extend_min (*this))) return_trace (false);
+    if (unlikely (!c->extend_min (this))) return_trace (false);
 
     format = ((width-1)<<4)|(inner_bit_count-1);
     mapCount = output_map.length;
@@ -272,7 +272,7 @@
     index_map_plans[0].init (*index_maps[0], outer_map, inner_sets, plan);
     if (index_maps[0] == &Null (DeltaSetIndexMap))
     {
-      retain_adv_map = plan->retain_gids;
+      retain_adv_map = plan->flags & HB_SUBSET_FLAGS_RETAIN_GIDS;
       outer_map.add (0);
       for (hb_codepoint_t gid = 0; gid < plan->num_output_glyphs (); gid++)
       {
@@ -367,15 +367,15 @@
     TRACE_SERIALIZE (this);
     if (im_plans[index_map_subset_plan_t::ADV_INDEX].is_identity ())
       advMap = 0;
-    else if (unlikely (!advMap.serialize (c, this).serialize (c, im_plans[index_map_subset_plan_t::ADV_INDEX])))
+    else if (unlikely (!advMap.serialize_serialize (c, im_plans[index_map_subset_plan_t::ADV_INDEX])))
       return_trace (false);
     if (im_plans[index_map_subset_plan_t::LSB_INDEX].is_identity ())
       lsbMap = 0;
-    else if (unlikely (!lsbMap.serialize (c, this).serialize (c, im_plans[index_map_subset_plan_t::LSB_INDEX])))
+    else if (unlikely (!lsbMap.serialize_serialize (c, im_plans[index_map_subset_plan_t::LSB_INDEX])))
       return_trace (false);
     if (im_plans[index_map_subset_plan_t::RSB_INDEX].is_identity ())
       rsbMap = 0;
-    else if (unlikely (!rsbMap.serialize (c, this).serialize (c, im_plans[index_map_subset_plan_t::RSB_INDEX])))
+    else if (unlikely (!rsbMap.serialize_serialize (c, im_plans[index_map_subset_plan_t::RSB_INDEX])))
       return_trace (false);
 
     return_trace (true);
@@ -398,8 +398,10 @@
     out->version.major = 1;
     out->version.minor = 0;
 
-    if (unlikely (!out->varStore.serialize (c->serializer, out)
-		     .serialize (c->serializer, hvar_plan.var_store, hvar_plan.inner_maps.as_array ())))
+    if (unlikely (!out->varStore
+		      .serialize_serialize (c->serializer,
+					    hvar_plan.var_store,
+					    hvar_plan.inner_maps.as_array ())))
       return_trace (false);
 
     return_trace (out->T::serialize_index_maps (c->serializer,
@@ -466,7 +468,7 @@
       return_trace (false);
     if (!im_plans[index_map_subset_plan_t::VORG_INDEX].get_map_count ())
       vorgMap = 0;
-    else if (unlikely (!vorgMap.serialize (c, this).serialize (c, im_plans[index_map_subset_plan_t::VORG_INDEX])))
+    else if (unlikely (!vorgMap.serialize_serialize (c, im_plans[index_map_subset_plan_t::VORG_INDEX])))
       return_trace (false);
 
     return_trace (true);

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-pool.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-pool.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-pool.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -41,7 +41,7 @@
   {
     next = nullptr;
 
-    for (chunk_t *_ : chunks) ::free (_);
+    for (chunk_t *_ : chunks) hb_free (_);
 
     chunks.fini ();
   }
@@ -51,7 +51,7 @@
     if (unlikely (!next))
     {
       if (unlikely (!chunks.alloc (chunks.length + 1))) return nullptr;
-      chunk_t *chunk = (chunk_t *) calloc (1, sizeof (chunk_t));
+      chunk_t *chunk = (chunk_t *) hb_calloc (1, sizeof (chunk_t));
       if (unlikely (!chunk)) return nullptr;
       chunks.push (chunk);
       next = chunk->thread ();
@@ -65,7 +65,7 @@
     return obj;
   }
 
-  void free (T* obj)
+  void release (T* obj)
   {
     * (T**) obj = next;
     next = obj;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-repacker.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-repacker.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-repacker.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -102,7 +102,7 @@
     {
       fini ();
       unsigned size = object.tail - object.head;
-      head = (char*) malloc (size);
+      head = (char*) hb_malloc (size);
       if (!head) return false;
 
       memcpy (head, object.head, size);
@@ -116,7 +116,7 @@
     void fini ()
     {
       if (!head) return;
-      free (head);
+      hb_free (head);
       head = nullptr;
     }
   };
@@ -531,7 +531,7 @@
 
         const auto& child = vertices_[link.objidx].obj;
         int64_t child_weight = child.tail - child.head +
-                               (!link.is_wide ? (1 << 16) : ((int64_t) 1 << 32));
+                               ((int64_t) 1 << (link.width * 8));
         int64_t child_distance = next_distance + child_weight;
 
         if (child_distance < vertices_[link.objidx].distance)
@@ -578,7 +578,7 @@
   {
     if (link.is_signed)
     {
-      if (link.is_wide)
+      if (link.width == 4)
         return offset >= -((int64_t) 1 << 31) && offset < ((int64_t) 1 << 31);
       else
         return offset >= -(1 << 15) && offset < (1 << 15);
@@ -585,8 +585,10 @@
     }
     else
     {
-      if (link.is_wide)
+      if (link.width == 4)
         return offset >= 0 && offset < ((int64_t) 1 << 32);
+      else if (link.width == 3)
+        return offset >= 0 && offset < ((int32_t) 1 << 24);
       else
         return offset >= 0 && offset < (1 << 16);
     }
@@ -627,8 +629,9 @@
                  char* head,
                  hb_serialize_context_t* c) const
   {
-    if (link.is_wide)
+    switch (link.width)
     {
+    case 4:
       if (link.is_signed)
       {
         serialize_link_of_type<OT::HBINT32> (link, head, c);
@@ -635,7 +638,8 @@
       } else {
         serialize_link_of_type<OT::HBUINT32> (link, head, c);
       }
-    } else {
+      return;
+    case 2:
       if (link.is_signed)
       {
         serialize_link_of_type<OT::HBINT16> (link, head, c);
@@ -642,6 +646,13 @@
       } else {
         serialize_link_of_type<OT::HBUINT16> (link, head, c);
       }
+      return;
+    case 3:
+      serialize_link_of_type<OT::HBUINT24> (link, head, c);
+      return;
+    default:
+      // Unexpected link width.
+      assert (0);
     }
   }
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-serialize.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-serialize.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-serialize.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -82,7 +82,7 @@
 
     struct link_t
     {
-      bool is_wide: 1;
+      unsigned width: 3;
       bool is_signed: 1;
       unsigned whence: 2;
       unsigned position: 28;
@@ -254,7 +254,7 @@
     current = current->next;
     revert (obj->head, obj->tail);
     obj->fini ();
-    object_pool.free (obj);
+    object_pool.release (obj);
   }
 
   /* Set share to false when an object is unlikely sharable with others
@@ -354,7 +354,6 @@
 		 whence_t whence = Head,
 		 unsigned bias = 0)
   {
-    static_assert (sizeof (T) == 2 || sizeof (T) == 4, "");
     if (unlikely (in_error ())) return;
 
     if (!objidx)
@@ -365,7 +364,7 @@
 
     auto& link = *current->links.push ();
 
-    link.is_wide = sizeof (T) == 4;
+    link.width = sizeof (T);
     link.is_signed = hb_is_signed (hb_unwrap_type (T));
     link.whence = (unsigned) whence;
     link.position = (const char *) &ofs - current->head;
@@ -405,7 +404,8 @@
 	offset -= link.bias;
 	if (link.is_signed)
 	{
-	  if (link.is_wide)
+	  assert (link.width == 2 || link.width == 4);
+	  if (link.width == 4)
 	    assign_offset<int32_t> (parent, link, offset);
 	  else
 	    assign_offset<int16_t> (parent, link, offset);
@@ -412,8 +412,11 @@
 	}
 	else
 	{
-	  if (link.is_wide)
+	  assert (link.width == 2 || link.width == 3 || link.width == 4);
+	  if (link.width == 4)
 	    assign_offset<uint32_t> (parent, link, offset);
+	  else if (link.width == 3)
+	    assign_offset<uint32_t, 3> (parent, link, offset);
 	  else
 	    assign_offset<uint16_t> (parent, link, offset);
 	}
@@ -446,16 +449,16 @@
   }
 
   template <typename Type>
-  Type *allocate_size (unsigned int size)
+  Type *allocate_size (size_t size)
   {
     if (unlikely (in_error ())) return nullptr;
 
-    if (this->tail - this->head < ptrdiff_t (size))
+    if (unlikely (size > INT_MAX || this->tail - this->head < ptrdiff_t (size)))
     {
       err (HB_SERIALIZE_ERROR_OUT_OF_ROOM);
       return nullptr;
     }
-    memset (this->head, 0, size);
+    hb_memset (this->head, 0, size);
     char *ret = this->head;
     this->head += size;
     return reinterpret_cast<Type *> (ret);
@@ -510,18 +513,19 @@
   hb_serialize_context_t& operator << (const Type &obj) & { embed (obj); return *this; }
 
   template <typename Type>
-  Type *extend_size (Type *obj, unsigned int size)
+  Type *extend_size (Type *obj, size_t size)
   {
     if (unlikely (in_error ())) return nullptr;
 
     assert (this->start <= (char *) obj);
     assert ((char *) obj <= this->head);
-    assert ((char *) obj + size >= this->head);
-    if (unlikely (!this->allocate_size<Type> (((char *) obj) + size - this->head))) return nullptr;
+    assert ((size_t) (this->head - (char *) obj) <= size);
+    if (unlikely (((char *) obj + size < (char *) obj) ||
+		  !this->allocate_size<Type> (((char *) obj) + size - this->head))) return nullptr;
     return reinterpret_cast<Type *> (obj);
   }
   template <typename Type>
-  Type *extend_size (Type &obj, unsigned int size)
+  Type *extend_size (Type &obj, size_t size)
   { return extend_size (hb_addressof (obj), size); }
 
   template <typename Type>
@@ -544,7 +548,11 @@
     unsigned int len = (this->head - this->start)
 		     + (this->end  - this->tail);
 
-    char *p = (char *) malloc (len);
+    // If len is zero don't hb_malloc as the memory won't get properly
+    // cleaned up later.
+    if (!len) return hb_bytes_t ();
+
+    char *p = (char *) hb_malloc (len);
     if (unlikely (!p)) return hb_bytes_t ();
 
     memcpy (p, this->start, this->head - this->start);
@@ -559,7 +567,7 @@
     hb_bytes_t b = copy_bytes ();
     return hb_blob_create (b.arrayZ, b.length,
 			   HB_MEMORY_MODE_WRITABLE,
-			   (char *) b.arrayZ, free);
+			   (char *) b.arrayZ, hb_free);
   }
 
   const hb_vector_t<object_t *>& object_graph() const
@@ -566,10 +574,10 @@
   { return packed; }
 
   private:
-  template <typename T>
+  template <typename T, unsigned Size = sizeof (T)>
   void assign_offset (const object_t* parent, const object_t::link_t &link, unsigned offset)
   {
-    auto &off = * ((BEInt<T> *) (parent->head + link.position));
+    auto &off = * ((BEInt<T, Size> *) (parent->head + link.position));
     assert (0 == off);
     check_assign (off, offset, HB_SERIALIZE_ERROR_OFFSET_OVERFLOW);
   }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -109,7 +109,7 @@
 
   set->fini_shallow ();
 
-  free (set);
+  hb_free (set);
 }
 
 /**
@@ -173,6 +173,24 @@
 }
 
 /**
+ * hb_set_copy:
+ * @set: A set
+ *
+ * Allocate a copy of @set.
+ *
+ * Return value: Newly-allocated set.
+ *
+ * Since: 2.8.2
+ **/
+hb_set_t *
+hb_set_copy (const hb_set_t *set)
+{
+  hb_set_t *copy = hb_set_create ();
+  copy->set (*set);
+  return copy;
+}
+
+/**
  * hb_set_clear:
  * @set: A set
  *
@@ -283,6 +301,9 @@
  * Removes all of the elements from @first to @last
  * (inclusive) from @set.
  *
+ * If @last is #HB_SET_VALUE_INVALID, then all values
+ * greater than or equal to @first are removed.
+ *
  * Since: 0.9.7
  **/
 void
@@ -309,7 +330,7 @@
 hb_set_is_equal (const hb_set_t *set,
 		 const hb_set_t *other)
 {
-  return set->is_equal (other);
+  return set->is_equal (*other);
 }
 
 /**
@@ -327,7 +348,7 @@
 hb_set_is_subset (const hb_set_t *set,
 		  const hb_set_t *larger_set)
 {
-  return set->is_subset (larger_set);
+  return set->is_subset (*larger_set);
 }
 
 /**
@@ -343,7 +364,7 @@
 hb_set_set (hb_set_t       *set,
 	    const hb_set_t *other)
 {
-  set->set (other);
+  set->set (*other);
 }
 
 /**
@@ -359,7 +380,7 @@
 hb_set_union (hb_set_t       *set,
 	      const hb_set_t *other)
 {
-  set->union_ (other);
+  set->union_ (*other);
 }
 
 /**
@@ -375,7 +396,7 @@
 hb_set_intersect (hb_set_t       *set,
 		  const hb_set_t *other)
 {
-  set->intersect (other);
+  set->intersect (*other);
 }
 
 /**
@@ -391,7 +412,7 @@
 hb_set_subtract (hb_set_t       *set,
 		 const hb_set_t *other)
 {
-  set->subtract (other);
+  set->subtract (*other);
 }
 
 /**
@@ -408,7 +429,7 @@
 hb_set_symmetric_difference (hb_set_t       *set,
 			     const hb_set_t *other)
 {
-  set->symmetric_difference (other);
+  set->symmetric_difference (*other);
 }
 
 #ifndef HB_DISABLE_DEPRECATED

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.h
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.h	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.h	2021-08-29 04:06:16 UTC (rev 60356)
@@ -85,6 +85,9 @@
 HB_EXTERN hb_bool_t
 hb_set_allocation_successful (const hb_set_t *set);
 
+HB_EXTERN hb_set_t *
+hb_set_copy (const hb_set_t *set);
+
 HB_EXTERN void
 hb_set_clear (hb_set_t *set);
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -35,18 +35,23 @@
  * hb_set_t
  */
 
-/* TODO Keep a free-list so we can free pages that are completely zeroed.  At that
+/* TODO Keep a freelist so we can release pages that are completely zeroed.  At that
  * point maybe also use a sentinel value for "all-1" pages? */
 
 struct hb_set_t
 {
-  HB_DELETE_COPY_ASSIGN (hb_set_t);
   hb_set_t ()  { init (); }
   ~hb_set_t () { fini (); }
 
+  hb_set_t (const hb_set_t& other) : hb_set_t () { set (other); }
+  void operator= (const hb_set_t& other) { set (other); }
+  // TODO Add move construtor/assign
+  // TODO Add constructor for Iterator; with specialization for (sorted) vector / array?
+
   struct page_map_t
   {
     int cmp (const page_map_t &o) const { return (int) o.major - (int) major; }
+    int cmp (uint32_t o_major) const { return (int) o_major - (int) major; }
 
     uint32_t major;
     uint32_t index;
@@ -57,7 +62,7 @@
     void init0 () { v.clear (); }
     void init1 () { v.clear (0xFF); }
 
-    unsigned int len () const
+    constexpr unsigned len () const
     { return ARRAY_LENGTH_CONST (v); }
 
     bool is_empty () const
@@ -106,10 +111,17 @@
       }
     }
 
-    bool is_equal (const page_t *other) const
+    bool is_equal (const page_t &other) const
     {
-      return 0 == hb_memcmp (&v, &other->v, sizeof (v));
+      return 0 == hb_memcmp (&v, &other.v, sizeof (v));
     }
+    bool is_subset (const page_t &larger_page) const
+    {
+      for (unsigned i = 0; i < len (); i++)
+        if (~larger_page.v[i] & v[i])
+	  return false;
+      return true;
+    }
 
     unsigned int get_population () const
     {
@@ -203,8 +215,8 @@
     static_assert ((unsigned) PAGE_BITS == (unsigned) BITS, "");
 
     elt_t &elt (hb_codepoint_t g) { return v[(g & MASK) / ELT_BITS]; }
-    elt_t const &elt (hb_codepoint_t g) const { return v[(g & MASK) / ELT_BITS]; }
-    elt_t mask (hb_codepoint_t g) const { return elt_t (1) << (g & ELT_MASK); }
+    const elt_t& elt (hb_codepoint_t g) const { return v[(g & MASK) / ELT_BITS]; }
+    static constexpr elt_t mask (hb_codepoint_t g) { return elt_t (1) << (g & ELT_MASK); }
 
     vector_t v;
   };
@@ -213,6 +225,7 @@
   hb_object_header_t header;
   bool successful; /* Allocations successful */
   mutable unsigned int population;
+  mutable unsigned int last_page_lookup;
   hb_sorted_vector_t<page_map_t> page_map;
   hb_vector_t<page_t> pages;
 
@@ -220,6 +233,7 @@
   {
     successful = true;
     population = 0;
+    last_page_lookup = 0;
     page_map.init ();
     pages.init ();
   }
@@ -231,6 +245,7 @@
   void fini_shallow ()
   {
     population = 0;
+    last_page_lookup = 0;
     page_map.fini ();
     pages.fini ();
   }
@@ -412,7 +427,7 @@
   {
     /* TODO perform op even if !successful. */
     if (unlikely (!successful)) return;
-    if (unlikely (a > b || a == INVALID || b == INVALID)) return;
+    if (unlikely (a > b || a == INVALID)) return;
     dirty ();
     unsigned int ma = get_major (a);
     unsigned int mb = get_major (b);
@@ -466,32 +481,33 @@
     hb_codepoint_t c = first - 1;
     return next (&c) && c <= last;
   }
-  void set (const hb_set_t *other)
+  void set (const hb_set_t &other)
   {
     if (unlikely (!successful)) return;
-    unsigned int count = other->pages.length;
+    unsigned int count = other.pages.length;
     if (!resize (count))
       return;
-    population = other->population;
-    memcpy ((void *) pages, (const void *) other->pages, count * pages.item_size);
-    memcpy ((void *) page_map, (const void *) other->page_map, count * page_map.item_size);
+    population = other.population;
+
+    hb_memcpy ((void *) pages, (const void *) other.pages, count * pages.item_size);
+    hb_memcpy ((void *) page_map, (const void *) other.page_map, count * page_map.item_size);
   }
 
-  bool is_equal (const hb_set_t *other) const
+  bool is_equal (const hb_set_t &other) const
   {
-    if (get_population () != other->get_population ())
+    if (get_population () != other.get_population ())
       return false;
 
     unsigned int na = pages.length;
-    unsigned int nb = other->pages.length;
+    unsigned int nb = other.pages.length;
 
     unsigned int a = 0, b = 0;
     for (; a < na && b < nb; )
     {
       if (page_at (a).is_empty ()) { a++; continue; }
-      if (other->page_at (b).is_empty ()) { b++; continue; }
-      if (page_map[a].major != other->page_map[b].major ||
-	  !page_at (a).is_equal (&other->page_at (b)))
+      if (other.page_at (b).is_empty ()) { b++; continue; }
+      if (page_map[a].major != other.page_map[b].major ||
+	  !page_at (a).is_equal (other.page_at (b)))
 	return false;
       a++;
       b++;
@@ -499,22 +515,41 @@
     for (; a < na; a++)
       if (!page_at (a).is_empty ()) { return false; }
     for (; b < nb; b++)
-      if (!other->page_at (b).is_empty ()) { return false; }
+      if (!other.page_at (b).is_empty ()) { return false; }
 
     return true;
   }
 
-  bool is_subset (const hb_set_t *larger_set) const
+  bool is_subset (const hb_set_t &larger_set) const
   {
-    if (get_population () > larger_set->get_population ())
-      return false;
+    /* TODO: Merge this and is_equal() into something like process(). */
+    if (unlikely(larger_set.is_empty ()))
+      return is_empty ();
 
-    /* TODO Optimize to use pages. */
-    hb_codepoint_t c = INVALID;
-    while (next (&c))
-      if (!larger_set->has (c))
-	return false;
+    uint32_t spi = 0;
+    for (uint32_t lpi = 0; spi < page_map.length && lpi < larger_set.page_map.length; lpi++)
+    {
+      uint32_t spm = page_map[spi].major;
+      uint32_t lpm = larger_set.page_map[lpi].major;
+      auto sp = page_at (spi);
+      auto lp = larger_set.page_at (lpi);
 
+      if (spm < lpm && !sp.is_empty ())
+        return false;
+
+      if (lpm < spm)
+        continue;
+
+      if (!sp.is_subset (lp))
+        return false;
+
+      spi++;
+    }
+
+    while (spi < page_map.length)
+      if (!page_at (spi++).is_empty ())
+        return false;
+
     return true;
   }
 
@@ -564,7 +599,7 @@
   }
 
   template <typename Op>
-  void process (const Op& op, const hb_set_t *other)
+  void process (const Op& op, const hb_set_t &other)
   {
     const bool passthru_left = op (1, 0);
     const bool passthru_right = op (0, 1);
@@ -574,7 +609,7 @@
     dirty ();
 
     unsigned int na = pages.length;
-    unsigned int nb = other->pages.length;
+    unsigned int nb = other.pages.length;
     unsigned int next_page = na;
 
     unsigned int count = 0, newCount = 0;
@@ -588,7 +623,7 @@
 
     for (; a < na && b < nb; )
     {
-      if (page_map[a].major == other->page_map[b].major)
+      if (page_map[a].major == other.page_map[b].major)
       {
 	if (!passthru_left)
 	{
@@ -605,7 +640,7 @@
 	a++;
 	b++;
       }
-      else if (page_map[a].major < other->page_map[b].major)
+      else if (page_map[a].major < other.page_map[b].major)
       {
 	if (passthru_left)
 	  count++;
@@ -640,15 +675,15 @@
     b = nb;
     for (; a && b; )
     {
-      if (page_map[a - 1].major == other->page_map[b - 1].major)
+      if (page_map[a - 1].major == other.page_map[b - 1].major)
       {
 	a--;
 	b--;
 	count--;
 	page_map[count] = page_map[a];
-	page_at (count).v = op (page_at (a).v, other->page_at (b).v);
+	page_at (count).v = op (page_at (a).v, other.page_at (b).v);
       }
-      else if (page_map[a - 1].major > other->page_map[b - 1].major)
+      else if (page_map[a - 1].major > other.page_map[b - 1].major)
       {
 	a--;
 	if (passthru_left)
@@ -663,9 +698,9 @@
 	if (passthru_right)
 	{
 	  count--;
-	  page_map[count].major = other->page_map[b].major;
+	  page_map[count].major = other.page_map[b].major;
 	  page_map[count].index = next_page++;
-	  page_at (count).v = other->page_at (b).v;
+	  page_at (count).v = other.page_at (b).v;
 	}
       }
     }
@@ -681,9 +716,9 @@
       {
 	b--;
 	count--;
-	page_map[count].major = other->page_map[b].major;
+	page_map[count].major = other.page_map[b].major;
 	page_map[count].index = next_page++;
-	page_at (count).v = other->page_at (b).v;
+	page_at (count).v = other.page_at (b).v;
       }
     assert (!count);
     if (pages.length > newCount)
@@ -693,50 +728,69 @@
       resize (newCount);
   }
 
-  void union_ (const hb_set_t *other)
+  void union_ (const hb_set_t &other)
   {
     process (hb_bitwise_or, other);
   }
-  void intersect (const hb_set_t *other)
+  void intersect (const hb_set_t &other)
   {
     process (hb_bitwise_and, other);
   }
-  void subtract (const hb_set_t *other)
+  void subtract (const hb_set_t &other)
   {
     process (hb_bitwise_sub, other);
   }
-  void symmetric_difference (const hb_set_t *other)
+  void symmetric_difference (const hb_set_t &other)
   {
     process (hb_bitwise_xor, other);
   }
   bool next (hb_codepoint_t *codepoint) const
   {
+    // TODO: this should be merged with prev() as both implementations
+    //       are very similar.
     if (unlikely (*codepoint == INVALID)) {
       *codepoint = get_min ();
       return *codepoint != INVALID;
     }
 
-    page_map_t map = {get_major (*codepoint), 0};
-    unsigned int i;
-    page_map.bfind (map, &i, HB_BFIND_NOT_FOUND_STORE_CLOSEST);
-    if (i < page_map.length && page_map[i].major == map.major)
+    const auto* page_map_array = page_map.arrayZ;
+    unsigned int major = get_major (*codepoint);
+    unsigned int i = last_page_lookup;
+
+    if (unlikely (i >= page_map.length || page_map_array[i].major != major))
     {
-      if (pages[page_map[i].index].next (codepoint))
+      page_map.bfind (major, &i, HB_NOT_FOUND_STORE_CLOSEST);
+      if (i >= page_map.length) {
+        *codepoint = INVALID;
+        return false;
+      }
+    }
+
+    const auto* pages_array = pages.arrayZ;
+    const page_map_t &current = page_map_array[i];
+    if (likely (current.major == major))
+    {
+      if (pages_array[current.index].next (codepoint))
       {
-	*codepoint += page_map[i].major * page_t::PAGE_BITS;
-	return true;
+        *codepoint += current.major * page_t::PAGE_BITS;
+        last_page_lookup = i;
+        return true;
       }
       i++;
     }
+
     for (; i < page_map.length; i++)
     {
-      hb_codepoint_t m = pages[page_map[i].index].get_min ();
+      const page_map_t &current = page_map.arrayZ[i];
+      hb_codepoint_t m = pages_array[current.index].get_min ();
       if (m != INVALID)
       {
-	*codepoint = page_map[i].major * page_t::PAGE_BITS + m;
+	*codepoint = current.major * page_t::PAGE_BITS + m;
+        last_page_lookup = i;
 	return true;
       }
     }
+    last_page_lookup = 0;
     *codepoint = INVALID;
     return false;
   }
@@ -749,7 +803,7 @@
 
     page_map_t map = {get_major (*codepoint), 0};
     unsigned int i;
-    page_map.bfind (map, &i, HB_BFIND_NOT_FOUND_STORE_CLOSEST);
+    page_map.bfind (map, &i, HB_NOT_FOUND_STORE_CLOSEST);
     if (i < page_map.length && page_map[i].major == map.major)
     {
       if (pages[page_map[i].index].previous (codepoint))
@@ -880,7 +934,7 @@
   {
     page_map_t map = {get_major (g), pages.length};
     unsigned int i;
-    if (!page_map.bfind (map, &i, HB_BFIND_NOT_FOUND_STORE_CLOSEST))
+    if (!page_map.bfind (map, &i, HB_NOT_FOUND_STORE_CLOSEST))
     {
       if (!resize (pages.length + 1))
 	return nullptr;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -66,7 +66,7 @@
 			   const char * const            *shaper_list)
 {
   hb_feature_t *features = nullptr;
-  if (copy && num_user_features && !(features = (hb_feature_t *) calloc (num_user_features, sizeof (hb_feature_t))))
+  if (copy && num_user_features && !(features = (hb_feature_t *) hb_calloc (num_user_features, sizeof (hb_feature_t))))
     goto bail;
 
   this->props = *props;
@@ -130,7 +130,7 @@
 #undef HB_SHAPER_PLAN
 
 bail:
-  ::free (features);
+  ::hb_free (features);
   return false;
 }
 
@@ -264,9 +264,9 @@
 #ifndef HB_NO_OT_SHAPE
 bail3:
 #endif
-  shape_plan->key.free ();
+  shape_plan->key.fini ();
 bail2:
-  free (shape_plan);
+  hb_free (shape_plan);
 bail:
   return hb_shape_plan_get_empty ();
 }
@@ -320,8 +320,8 @@
 #ifndef HB_NO_OT_SHAPE
   shape_plan->ot.fini ();
 #endif
-  shape_plan->key.free ();
-  free (shape_plan);
+  shape_plan->key.fini ();
+  hb_free (shape_plan);
 }
 
 /**
@@ -560,7 +560,7 @@
   if (unlikely (dont_cache))
     return shape_plan;
 
-  hb_face_t::plan_node_t *node = (hb_face_t::plan_node_t *) calloc (1, sizeof (hb_face_t::plan_node_t));
+  hb_face_t::plan_node_t *node = (hb_face_t::plan_node_t *) hb_calloc (1, sizeof (hb_face_t::plan_node_t));
   if (unlikely (!node))
     return shape_plan;
 
@@ -570,7 +570,7 @@
   if (unlikely (!face->shape_plans.cmpexch (cached_plan_nodes, node)))
   {
     hb_shape_plan_destroy (shape_plan);
-    free (node);
+    hb_free (node);
     goto retry;
   }
   DEBUG_MSG_FUNC (SHAPE_PLAN, shape_plan, "inserted into cache");

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -55,7 +55,7 @@
 			 unsigned int                   num_coords,
 			 const char * const            *shaper_list);
 
-  HB_INTERNAL void free () { ::free ((void *) user_features); }
+  HB_INTERNAL void fini () { hb_free ((void *) user_features); }
 
   HB_INTERNAL bool user_features_match (const hb_shape_plan_key_t *other);
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -59,7 +59,7 @@
 {
   static const char ** create ()
   {
-    const char **shaper_list = (const char **) calloc (1 + HB_SHAPERS_COUNT, sizeof (const char *));
+    const char **shaper_list = (const char **) hb_calloc (1 + HB_SHAPERS_COUNT, sizeof (const char *));
     if (unlikely (!shaper_list))
       return nullptr;
 
@@ -76,7 +76,7 @@
     return shaper_list;
   }
   static void destroy (const char **l)
-  { free (l); }
+  { hb_free (l); }
   static const char ** get_null ()
   { return nil_shaper_list; }
 } static_shaper_list;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -51,7 +51,7 @@
     if (!env || !*env)
       return nullptr;
 
-    hb_shaper_entry_t *shapers = (hb_shaper_entry_t *) calloc (1, sizeof (all_shapers));
+    hb_shaper_entry_t *shapers = (hb_shaper_entry_t *) hb_calloc (1, sizeof (all_shapers));
     if (unlikely (!shapers))
       return nullptr;
 
@@ -89,7 +89,7 @@
 
     return shapers;
   }
-  static void destroy (const hb_shaper_entry_t *p) { free ((void *) p); }
+  static void destroy (const hb_shaper_entry_t *p) { hb_free ((void *) p); }
   static const hb_shaper_entry_t *get_null ()      { return all_shapers; }
 } static_shapers;
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -38,13 +38,12 @@
 
 using namespace CFF;
 
-/**
- * hb_plan_subset_cff_fdselect
- * Determine an optimal FDSelect format according to a provided plan.
+
+/* Determine an optimal FDSelect format according to a provided plan.
  *
  * Return value: FDSelect format, size, and ranges for the most compact subset FDSelect
  * along with a font index remapping table
- **/
+ */
 
 bool
 hb_plan_subset_cff_fdselect (const hb_subset_plan_t *plan,
@@ -169,10 +168,7 @@
   return_trace (true);
 }
 
-/**
- * hb_serialize_cff_fdselect
- * Serialize a subset FDSelect format planned above.
- **/
+/* Serialize a subset FDSelect format planned above. */
 bool
 hb_serialize_cff_fdselect (hb_serialize_context_t *c,
 			   const unsigned int num_glyphs,

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -259,7 +259,10 @@
 	return false;
       cs_interpreter_t<ENV, OPSET, flatten_param_t> interp;
       interp.env.init (str, acc, fd);
-      flatten_param_t  param = { flat_charstrings[i], plan->drop_hints };
+      flatten_param_t  param = {
+        flat_charstrings[i],
+        (bool) (plan->flags & HB_SUBSET_FLAGS_NO_HINTING)
+      };
       if (unlikely (!interp.interpret (param)))
 	return false;
     }
@@ -636,7 +639,7 @@
       param.init (&parsed_charstrings[i],
 		  &parsed_global_subrs,  &parsed_local_subrs[fd],
 		  closures.global_closure, closures.local_closures[fd],
-		  plan->drop_hints);
+		  plan->flags & HB_SUBSET_FLAGS_NO_HINTING);
 
       if (unlikely (!interp.interpret (param)))
 	return false;
@@ -645,7 +648,7 @@
       SUBSETTER::complete_parsed_str (interp.env, param, parsed_charstrings[i]);
     }
 
-    if (plan->drop_hints)
+    if (plan->flags & HB_SUBSET_FLAGS_NO_HINTING)
     {
       /* mark hint ops and arguments for drop */
       for (unsigned int i = 0; i < plan->num_output_glyphs (); i++)
@@ -660,7 +663,7 @@
 	param.init (&parsed_charstrings[i],
 		    &parsed_global_subrs,  &parsed_local_subrs[fd],
 		    closures.global_closure, closures.local_closures[fd],
-		    plan->drop_hints);
+                    plan->flags & HB_SUBSET_FLAGS_NO_HINTING);
 
 	drop_hints_param_t  drop;
 	if (drop_hints_in_str (parsed_charstrings[i], param, drop))
@@ -685,7 +688,7 @@
 	param.init (&parsed_charstrings[i],
 		    &parsed_global_subrs,  &parsed_local_subrs[fd],
 		    closures.global_closure, closures.local_closures[fd],
-		    plan->drop_hints);
+                    plan->flags & HB_SUBSET_FLAGS_NO_HINTING);
 	collect_subr_refs_in_str (parsed_charstrings[i], param);
       }
     }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff1.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff1.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff1.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -402,7 +402,7 @@
   void plan_subset_encoding (const OT::cff1::accelerator_subset_t &acc, hb_subset_plan_t *plan)
   {
     const Encoding *encoding = acc.encoding;
-    unsigned int  size0, size1, supp_size;
+    unsigned int  size0, size1;
     hb_codepoint_t  code, last_code = CFF_UNDEF_CODE;
     hb_vector_t<hb_codepoint_t> supp_codes;
 
@@ -412,7 +412,6 @@
       return;
     }
 
-    supp_size = 0;
     supp_codes.init ();
 
     subset_enc_num_codes = plan->num_output_glyphs () - 1;
@@ -448,7 +447,6 @@
 	  code_pair_t pair = { supp_codes[i], sid };
 	  subset_enc_supp_codes.push (pair);
 	}
-	supp_size += SuppEncoding::static_size * supp_codes.length;
       }
     }
     supp_codes.fini ();
@@ -545,8 +543,8 @@
 
     num_glyphs = plan->num_output_glyphs ();
     orig_fdcount = acc.fdCount;
-    drop_hints = plan->drop_hints;
-    desubroutinize = plan->desubroutinize;
+    drop_hints = plan->flags & HB_SUBSET_FLAGS_NO_HINTING;
+    desubroutinize = plan->flags & HB_SUBSET_FLAGS_DESUBROUTINIZE;
 
     /* check whether the subset renumbers any glyph IDs */
     gid_renum = false;
@@ -919,12 +917,6 @@
   return _serialize_cff1 (c->serializer, cff_plan, acc, c->plan->num_output_glyphs ());
 }
 
-/**
- * hb_subset_cff1:
- * Subsets the CFF table according to a provided plan.
- *
- * Return value: subsetted cff table.
- **/
 bool
 hb_subset_cff1 (hb_subset_context_t *c)
 {

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -262,8 +262,8 @@
   {
     orig_fdcount = acc.fdArray->count;
 
-    drop_hints = plan->drop_hints;
-    desubroutinize = plan->desubroutinize;
+    drop_hints = plan->flags & HB_SUBSET_FLAGS_NO_HINTING;
+    desubroutinize = plan->flags & HB_SUBSET_FLAGS_DESUBROUTINIZE;
 
     if (desubroutinize)
     {
@@ -470,10 +470,6 @@
   return _serialize_cff2 (c->serializer, cff2_plan, acc, c->plan->num_output_glyphs ());
 }
 
-/**
- * hb_subset_cff2:
- * Subsets the CFF2 table according to a provided subset context.
- **/
 bool
 hb_subset_cff2 (hb_subset_context_t *c)
 {

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -30,12 +30,15 @@
 /**
  * hb_subset_input_create_or_fail:
  *
- * Return value: New subset input.
+ * Creates a new subset input object.
  *
+ * Return value: (transfer full): New subset input, or %NULL if failed. Destroy
+ * with hb_subset_input_destroy().
+ *
  * Since: 1.8.0
  **/
 hb_subset_input_t *
-hb_subset_input_create_or_fail ()
+hb_subset_input_create_or_fail (void)
 {
   hb_subset_input_t *input = hb_object_create<hb_subset_input_t>();
 
@@ -48,12 +51,12 @@
   hb_set_add_range (input->name_ids, 0, 6);
   input->name_languages = hb_set_create ();
   hb_set_add (input->name_languages, 0x0409);
+  input->layout_features = hb_set_create ();
   input->drop_tables = hb_set_create ();
-  input->drop_hints = false;
-  input->desubroutinize = false;
-  input->retain_gids = false;
-  input->name_legacy = false;
+  input->no_subset_tables = hb_set_create ();
 
+  input->flags = HB_SUBSET_FLAGS_DEFAULT;
+
   hb_tag_t default_drop_tables[] = {
     // Layout disabled by default
     HB_TAG ('m', 'o', 'r', 'x'),
@@ -78,149 +81,478 @@
     HB_TAG ('S', 'i', 'l', 'f'),
     HB_TAG ('S', 'i', 'l', 'l'),
   };
-
   input->drop_tables->add_array (default_drop_tables, ARRAY_LENGTH (default_drop_tables));
 
+  hb_tag_t default_no_subset_tables[] = {
+    HB_TAG ('a', 'v', 'a', 'r'),
+    HB_TAG ('f', 'v', 'a', 'r'),
+    HB_TAG ('g', 'a', 's', 'p'),
+    HB_TAG ('c', 'v', 't', ' '),
+    HB_TAG ('f', 'p', 'g', 'm'),
+    HB_TAG ('p', 'r', 'e', 'p'),
+    HB_TAG ('V', 'D', 'M', 'X'),
+    HB_TAG ('D', 'S', 'I', 'G'),
+    HB_TAG ('M', 'V', 'A', 'R'),
+    HB_TAG ('c', 'v', 'a', 'r'),
+    HB_TAG ('S', 'T', 'A', 'T'),
+  };
+  input->no_subset_tables->add_array (default_no_subset_tables,
+				      ARRAY_LENGTH (default_no_subset_tables));
+
+  //copied from _layout_features_groups in fonttools
+  hb_tag_t default_layout_features[] = {
+    // default shaper
+    // common
+    HB_TAG ('r', 'v', 'r', 'n'),
+    HB_TAG ('c', 'c', 'm', 'p'),
+    HB_TAG ('l', 'i', 'g', 'a'),
+    HB_TAG ('l', 'o', 'c', 'l'),
+    HB_TAG ('m', 'a', 'r', 'k'),
+    HB_TAG ('m', 'k', 'm', 'k'),
+    HB_TAG ('r', 'l', 'i', 'g'),
+
+    //fractions
+    HB_TAG ('f', 'r', 'a', 'c'),
+    HB_TAG ('n', 'u', 'm', 'r'),
+    HB_TAG ('d', 'n', 'o', 'm'),
+
+    //horizontal
+    HB_TAG ('c', 'a', 'l', 't'),
+    HB_TAG ('c', 'l', 'i', 'g'),
+    HB_TAG ('c', 'u', 'r', 's'),
+    HB_TAG ('k', 'e', 'r', 'n'),
+    HB_TAG ('r', 'c', 'l', 't'),
+
+    //vertical
+    HB_TAG ('v', 'a', 'l', 't'),
+    HB_TAG ('v', 'e', 'r', 't'),
+    HB_TAG ('v', 'k', 'r', 'n'),
+    HB_TAG ('v', 'p', 'a', 'l'),
+    HB_TAG ('v', 'r', 't', '2'),
+
+    //ltr
+    HB_TAG ('l', 't', 'r', 'a'),
+    HB_TAG ('l', 't', 'r', 'm'),
+
+    //rtl
+    HB_TAG ('r', 't', 'l', 'a'),
+    HB_TAG ('r', 't', 'l', 'm'),
+
+    //Complex shapers
+    //arabic
+    HB_TAG ('i', 'n', 'i', 't'),
+    HB_TAG ('m', 'e', 'd', 'i'),
+    HB_TAG ('f', 'i', 'n', 'a'),
+    HB_TAG ('i', 's', 'o', 'l'),
+    HB_TAG ('m', 'e', 'd', '2'),
+    HB_TAG ('f', 'i', 'n', '2'),
+    HB_TAG ('f', 'i', 'n', '3'),
+    HB_TAG ('c', 's', 'w', 'h'),
+    HB_TAG ('m', 's', 'e', 't'),
+    HB_TAG ('s', 't', 'c', 'h'),
+
+    //hangul
+    HB_TAG ('l', 'j', 'm', 'o'),
+    HB_TAG ('v', 'j', 'm', 'o'),
+    HB_TAG ('t', 'j', 'm', 'o'),
+
+    //tibetan
+    HB_TAG ('a', 'b', 'v', 's'),
+    HB_TAG ('b', 'l', 'w', 's'),
+    HB_TAG ('a', 'b', 'v', 'm'),
+    HB_TAG ('b', 'l', 'w', 'm'),
+
+    //indic
+    HB_TAG ('n', 'u', 'k', 't'),
+    HB_TAG ('a', 'k', 'h', 'n'),
+    HB_TAG ('r', 'p', 'h', 'f'),
+    HB_TAG ('r', 'k', 'r', 'f'),
+    HB_TAG ('p', 'r', 'e', 'f'),
+    HB_TAG ('b', 'l', 'w', 'f'),
+    HB_TAG ('h', 'a', 'l', 'f'),
+    HB_TAG ('a', 'b', 'v', 'f'),
+    HB_TAG ('p', 's', 't', 'f'),
+    HB_TAG ('c', 'f', 'a', 'r'),
+    HB_TAG ('v', 'a', 't', 'u'),
+    HB_TAG ('c', 'j', 'c', 't'),
+    HB_TAG ('i', 'n', 'i', 't'),
+    HB_TAG ('p', 'r', 'e', 's'),
+    HB_TAG ('a', 'b', 'v', 's'),
+    HB_TAG ('b', 'l', 'w', 's'),
+    HB_TAG ('p', 's', 't', 's'),
+    HB_TAG ('h', 'a', 'l', 'n'),
+    HB_TAG ('d', 'i', 's', 't'),
+    HB_TAG ('a', 'b', 'v', 'm'),
+    HB_TAG ('b', 'l', 'w', 'm'),
+  };
+
+  input->layout_features->add_array (default_layout_features, ARRAY_LENGTH (default_layout_features));
   return input;
 }
 
 /**
  * hb_subset_input_reference: (skip)
- * @subset_input: a subset_input.
+ * @input: a #hb_subset_input_t object.
  *
+ * Increases the reference count on @input.
  *
+ * Return value: @input.
  *
- * Return value:
- *
  * Since: 1.8.0
  **/
 hb_subset_input_t *
-hb_subset_input_reference (hb_subset_input_t *subset_input)
+hb_subset_input_reference (hb_subset_input_t *input)
 {
-  return hb_object_reference (subset_input);
+  return hb_object_reference (input);
 }
 
 /**
  * hb_subset_input_destroy:
- * @subset_input: a subset_input.
+ * @input: a #hb_subset_input_t object.
  *
+ * Decreases the reference count on @input, and if it reaches zero, destroys
+ * @input, freeing all memory.
+ *
  * Since: 1.8.0
  **/
 void
-hb_subset_input_destroy (hb_subset_input_t *subset_input)
+hb_subset_input_destroy (hb_subset_input_t *input)
 {
-  if (!hb_object_destroy (subset_input)) return;
+  if (!hb_object_destroy (input)) return;
 
-  hb_set_destroy (subset_input->unicodes);
-  hb_set_destroy (subset_input->glyphs);
-  hb_set_destroy (subset_input->name_ids);
-  hb_set_destroy (subset_input->name_languages);
-  hb_set_destroy (subset_input->drop_tables);
+  hb_set_destroy (input->unicodes);
+  hb_set_destroy (input->glyphs);
+  hb_set_destroy (input->name_ids);
+  hb_set_destroy (input->name_languages);
+  hb_set_destroy (input->drop_tables);
+  hb_set_destroy (input->layout_features);
+  hb_set_destroy (input->no_subset_tables);
 
-  free (subset_input);
+  hb_free (input);
 }
 
 /**
  * hb_subset_input_unicode_set:
- * @subset_input: a subset_input.
+ * @input: a #hb_subset_input_t object.
  *
+ * Gets the set of Unicode code points to retain, the caller should modify the
+ * set as needed.
+ *
+ * Return value: (transfer none): pointer to the #hb_set_t of Unicode code
+ * points.
+ *
  * Since: 1.8.0
  **/
 HB_EXTERN hb_set_t *
-hb_subset_input_unicode_set (hb_subset_input_t *subset_input)
+hb_subset_input_unicode_set (hb_subset_input_t *input)
 {
-  return subset_input->unicodes;
+  return input->unicodes;
 }
 
 /**
  * hb_subset_input_glyph_set:
- * @subset_input: a subset_input.
+ * @input: a #hb_subset_input_t object.
  *
+ * Gets the set of glyph IDs to retain, the caller should modify the set as
+ * needed.
+ *
+ * Return value: (transfer none): pointer to the #hb_set_t of glyph IDs.
+ *
  * Since: 1.8.0
  **/
 HB_EXTERN hb_set_t *
-hb_subset_input_glyph_set (hb_subset_input_t *subset_input)
+hb_subset_input_glyph_set (hb_subset_input_t *input)
 {
-  return subset_input->glyphs;
+  return input->glyphs;
 }
 
+/**
+ * hb_subset_input_nameid_set:
+ * @input: a #hb_subset_input_t object.
+ *
+ * Gets the set of name table name IDs to retain, the caller should modify the
+ * set as needed.
+ *
+ * Return value: (transfer none): pointer to the #hb_set_t of name IDs.
+ *
+ * Since: 2.9.0
+ **/
 HB_EXTERN hb_set_t *
-hb_subset_input_nameid_set (hb_subset_input_t *subset_input)
+hb_subset_input_nameid_set (hb_subset_input_t *input)
 {
-  return subset_input->name_ids;
+  return input->name_ids;
 }
 
+/**
+ * hb_subset_input_namelangid_set:
+ * @input: a #hb_subset_input_t object.
+ *
+ * Gets the set of name table language IDs to retain, the caller should modify
+ * the set as needed.
+ *
+ * Return value: (transfer none): pointer to the #hb_set_t of language IDs.
+ *
+ * Since: 2.9.0
+ **/
 HB_EXTERN hb_set_t *
-hb_subset_input_namelangid_set (hb_subset_input_t *subset_input)
+hb_subset_input_namelangid_set (hb_subset_input_t *input)
 {
-  return subset_input->name_languages;
+  return input->name_languages;
 }
 
+
+/**
+ * hb_subset_input_layout_features_set:
+ * @input: a #hb_subset_input_t object.
+ *
+ * Gets the set of layout feature tags to retain, the caller should modify the
+ * set as needed.
+ *
+ * Return value: (transfer none): pointer to the #hb_set_t of feature tags.
+ *
+ * Since: 2.9.0
+ **/
 HB_EXTERN hb_set_t *
-hb_subset_input_drop_tables_set (hb_subset_input_t *subset_input)
+hb_subset_input_layout_features_set (hb_subset_input_t *input)
 {
-  return subset_input->drop_tables;
+  return input->layout_features;
 }
 
+/**
+ * hb_subset_input_drop_tables_set:
+ * @input: a #hb_subset_input_t object.
+ *
+ * Gets the set of table tags to drop, the caller should modify the set as
+ * needed.
+ *
+ * Return value: (transfer none): pointer to the #hb_set_t of table tags.
+ *
+ * Since: 2.9.0
+ **/
+HB_EXTERN hb_set_t *
+hb_subset_input_drop_tables_set (hb_subset_input_t *input)
+{
+  return input->drop_tables;
+}
+
+/**
+ * hb_subset_input_no_subset_tables_set:
+ * @input: a #hb_subset_input_t object.
+ *
+ * Gets the set of table tags which specifies tables that should not be
+ * subsetted, the caller should modify the set as needed.
+ *
+ * Return value: (transfer none): pointer to the #hb_set_t of table tags.
+ *
+ * Since: 2.9.0
+ **/
+HB_EXTERN hb_set_t *
+hb_subset_input_no_subset_tables_set (hb_subset_input_t *input)
+{
+  return input->no_subset_tables;
+}
+
+
+/**
+ * hb_subset_input_get_flags:
+ * @input: a #hb_subset_input_t object.
+ *
+ * Return value: the subsetting flags bit field.
+ *
+ * Since: 2.9.0
+ **/
+HB_EXTERN hb_subset_flags_t
+hb_subset_input_get_flags (hb_subset_input_t *input)
+{
+  return (hb_subset_flags_t) input->flags;
+}
+
+/**
+ * hb_subset_input_set_flags:
+ * @input: a #hb_subset_input_t object.
+ * @value: bit field of flags
+ *
+ * Set all of the flags in the input object to the values
+ * specified by the bit field.
+ *
+ * Since: 2.9.0
+ **/
 HB_EXTERN void
+hb_subset_input_set_flags (hb_subset_input_t *input,
+			   unsigned value)
+{
+  input->flags = (hb_subset_flags_t) value;
+}
+
+/**
+ * hb_subset_input_set_user_data: (skip)
+ * @input: a #hb_subset_input_t object.
+ * @key: The user-data key to set
+ * @data: A pointer to the user data
+ * @destroy: (nullable): A callback to call when @data is not needed anymore
+ * @replace: Whether to replace an existing data with the same key
+ *
+ * Attaches a user-data key/data pair to the given subset input object.
+ *
+ * Return value: %true if success, %false otherwise
+ *
+ * Since: 2.9.0
+ **/
+hb_bool_t
+hb_subset_input_set_user_data (hb_subset_input_t  *input,
+			       hb_user_data_key_t *key,
+			       void *		   data,
+			       hb_destroy_func_t   destroy,
+			       hb_bool_t	   replace)
+{
+  return hb_object_set_user_data (input, key, data, destroy, replace);
+}
+
+/**
+ * hb_subset_input_get_user_data: (skip)
+ * @input: a #hb_subset_input_t object.
+ * @key: The user-data key to query
+ *
+ * Fetches the user data associated with the specified key,
+ * attached to the specified subset input object.
+ *
+ * Return value: (transfer none): A pointer to the user data
+ *
+ * Since: 2.9.0
+ **/
+void *
+hb_subset_input_get_user_data (const hb_subset_input_t *input,
+			       hb_user_data_key_t     *key)
+{
+  return hb_object_get_user_data (input, key);
+}
+
+
+static void set_flag_value (hb_subset_input_t *input, hb_subset_flags_t flag, hb_bool_t value)
+{
+  hb_subset_input_set_flags (input,
+                             value
+                             ? hb_subset_input_get_flags (input) | flag
+                             : hb_subset_input_get_flags (input) & ~flag);
+}
+
+void
+hb_subset_input_set_retain_all_features (hb_subset_input_t *subset_input,
+                                         hb_bool_t value)
+{
+  return set_flag_value (subset_input,
+                         HB_SUBSET_FLAGS_RETAIN_ALL_FEATURES,
+                         value);
+}
+
+hb_bool_t
+hb_subset_input_get_retain_all_features (hb_subset_input_t *subset_input)
+{
+  return (bool) (hb_subset_input_get_flags (subset_input) & HB_SUBSET_FLAGS_RETAIN_ALL_FEATURES);
+}
+
+void
 hb_subset_input_set_drop_hints (hb_subset_input_t *subset_input,
 				hb_bool_t drop_hints)
 {
-  subset_input->drop_hints = drop_hints;
+  return set_flag_value (subset_input,
+                         HB_SUBSET_FLAGS_NO_HINTING,
+                         drop_hints);
 }
 
-HB_EXTERN hb_bool_t
+hb_bool_t
 hb_subset_input_get_drop_hints (hb_subset_input_t *subset_input)
 {
-  return subset_input->drop_hints;
+  return (bool) (hb_subset_input_get_flags (subset_input) & HB_SUBSET_FLAGS_NO_HINTING);
 }
 
-HB_EXTERN void
+void
 hb_subset_input_set_desubroutinize (hb_subset_input_t *subset_input,
 				    hb_bool_t desubroutinize)
 {
-  subset_input->desubroutinize = desubroutinize;
+  return set_flag_value (subset_input,
+                         HB_SUBSET_FLAGS_DESUBROUTINIZE,
+                         desubroutinize);
 }
 
-HB_EXTERN hb_bool_t
+hb_bool_t
 hb_subset_input_get_desubroutinize (hb_subset_input_t *subset_input)
 {
-  return subset_input->desubroutinize;
+  return (bool) (hb_subset_input_get_flags (subset_input) & HB_SUBSET_FLAGS_DESUBROUTINIZE);
 }
 
-/**
- * hb_subset_input_set_retain_gids:
- * @subset_input: a subset_input.
- * @retain_gids: If true the subsetter will not renumber glyph ids.
- * Since: 2.4.0
- **/
-HB_EXTERN void
+void
 hb_subset_input_set_retain_gids (hb_subset_input_t *subset_input,
 				 hb_bool_t retain_gids)
 {
-  subset_input->retain_gids = retain_gids;
+  return set_flag_value (subset_input,
+                         HB_SUBSET_FLAGS_RETAIN_GIDS,
+                         retain_gids);
 }
 
-/**
- * hb_subset_input_get_retain_gids:
- * Returns: value of retain_gids.
- * Since: 2.4.0
- **/
-HB_EXTERN hb_bool_t
+hb_bool_t
 hb_subset_input_get_retain_gids (hb_subset_input_t *subset_input)
 {
-  return subset_input->retain_gids;
+  return (bool) (hb_subset_input_get_flags (subset_input) & HB_SUBSET_FLAGS_RETAIN_GIDS);
 }
 
-HB_EXTERN void
+void
 hb_subset_input_set_name_legacy (hb_subset_input_t *subset_input,
 				 hb_bool_t name_legacy)
 {
-  subset_input->name_legacy = name_legacy;
+  return set_flag_value (subset_input,
+                         HB_SUBSET_FLAGS_NAME_LEGACY,
+                         name_legacy);
 }
 
-HB_EXTERN hb_bool_t
+hb_bool_t
 hb_subset_input_get_name_legacy (hb_subset_input_t *subset_input)
 {
-  return subset_input->name_legacy;
+  return (bool) (hb_subset_input_get_flags (subset_input) & HB_SUBSET_FLAGS_NAME_LEGACY);
 }
+
+void
+hb_subset_input_set_overlaps_flag (hb_subset_input_t *subset_input,
+                                   hb_bool_t overlaps_flag)
+{
+  return set_flag_value (subset_input,
+                         HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG,
+                         overlaps_flag);
+}
+
+hb_bool_t
+hb_subset_input_get_overlaps_flag (hb_subset_input_t *subset_input)
+{
+  return (bool) (hb_subset_input_get_flags (subset_input) & HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG);
+}
+
+void
+hb_subset_input_set_notdef_outline (hb_subset_input_t *subset_input,
+                                    hb_bool_t notdef_outline)
+{
+  return set_flag_value (subset_input,
+                         HB_SUBSET_FLAGS_NOTDEF_OUTLINE,
+                         notdef_outline);
+}
+
+hb_bool_t
+hb_subset_input_get_notdef_outline (hb_subset_input_t *subset_input)
+{
+  return (bool) (hb_subset_input_get_flags (subset_input) & HB_SUBSET_FLAGS_NOTDEF_OUTLINE);
+}
+
+void
+hb_subset_input_set_no_prune_unicode_ranges (hb_subset_input_t *subset_input,
+                                             hb_bool_t no_prune_unicode_ranges)
+{
+  return set_flag_value (subset_input,
+                         HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES,
+                         no_prune_unicode_ranges);
+}
+
+
+hb_bool_t
+hb_subset_input_get_no_prune_unicode_ranges (hb_subset_input_t *subset_input)
+{
+  return (bool) (hb_subset_input_get_flags (subset_input) & HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES);
+}

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -34,6 +34,8 @@
 
 #include "hb-font.hh"
 
+HB_MARK_AS_FLAG_T (hb_subset_flags_t);
+
 struct hb_subset_input_t
 {
   hb_object_header_t header;
@@ -42,12 +44,12 @@
   hb_set_t *glyphs;
   hb_set_t *name_ids;
   hb_set_t *name_languages;
+  hb_set_t *no_subset_tables;
   hb_set_t *drop_tables;
+  hb_set_t *layout_features;
 
-  bool drop_hints;
-  bool desubroutinize;
-  bool retain_gids;
-  bool name_legacy;
+  unsigned flags;
+
   /* TODO
    *
    * features

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -35,6 +35,7 @@
 #include "hb-ot-layout-gsub-table.hh"
 #include "hb-ot-cff1-table.hh"
 #include "hb-ot-color-colr-table.hh"
+#include "hb-ot-color-colrv1-closure.hh"
 #include "hb-ot-var-fvar-table.hh"
 #include "hb-ot-stat-table.hh"
 
@@ -55,8 +56,24 @@
 }
 #endif
 
-#ifndef HB_NO_SUBSET_LAYOUT
 static void
+_remap_palette_indexes (const hb_set_t *palette_indexes,
+			hb_map_t       *mapping /* OUT */)
+{
+  unsigned new_idx = 0;
+  for (unsigned palette_index : palette_indexes->iter ())
+  {
+    if (palette_index == 0xFFFF)
+    {
+      mapping->set (palette_index, palette_index);
+      continue;
+    }
+    mapping->set (palette_index, new_idx);
+    new_idx++;
+  }
+}
+
+static void
 _remap_indexes (const hb_set_t *indexes,
 		hb_map_t       *mapping /* OUT */)
 {
@@ -67,88 +84,97 @@
 
 }
 
-static inline void
-_gsub_closure_glyphs_lookups_features (hb_face_t *face,
-				       hb_set_t *gids_to_retain,
-				       hb_map_t *gsub_lookups,
-				       hb_map_t *gsub_features,
-				       script_langsys_map *gsub_langsys)
+#ifndef HB_NO_SUBSET_LAYOUT
+typedef void (*layout_collect_func_t) (hb_face_t *face, hb_tag_t table_tag, const hb_tag_t *scripts, const hb_tag_t *languages, const hb_tag_t *features, hb_set_t *lookup_indexes /* OUT */);
+
+static void _collect_subset_layout (hb_face_t		 *face,
+				    hb_tag_t		  table_tag,
+				    const hb_set_t	 *layout_features_to_retain,
+				    bool		  retain_all_features,
+				    layout_collect_func_t layout_collect_func,
+				    hb_set_t		 *lookup_indices /* OUT */)
 {
-  hb_set_t lookup_indices;
-  hb_ot_layout_collect_lookups (face,
-				HB_OT_TAG_GSUB,
-				nullptr,
-				nullptr,
-				nullptr,
-				&lookup_indices);
-  hb_ot_layout_lookups_substitute_closure (face,
-					   &lookup_indices,
-					   gids_to_retain);
-  hb_blob_ptr_t<OT::GSUB> gsub = hb_sanitize_context_t ().reference_table<OT::GSUB> (face);
-  gsub->closure_lookups (face,
-			 gids_to_retain,
-			 &lookup_indices);
-  _remap_indexes (&lookup_indices, gsub_lookups);
+  if (retain_all_features)
+  {
+    layout_collect_func (face,
+			 table_tag,
+			 nullptr,
+			 nullptr,
+			 nullptr,
+			 lookup_indices);
+    return;
+  }
 
-  // Collect and prune features
-  hb_set_t feature_indices;
-  hb_ot_layout_collect_features (face,
-                                 HB_OT_TAG_GSUB,
-                                 nullptr,
-                                 nullptr,
-                                 nullptr,
-                                 &feature_indices);
+  if (hb_set_is_empty (layout_features_to_retain)) return;
+  unsigned num = layout_features_to_retain->get_population () + 1;
+  hb_tag_t *features = (hb_tag_t *) hb_malloc (num * sizeof (hb_tag_t));
+  if (!features) return;
 
-  gsub->prune_features (gsub_lookups, &feature_indices);
-  hb_map_t duplicate_feature_map;
-  gsub->find_duplicate_features (gsub_lookups, &feature_indices, &duplicate_feature_map);
+  unsigned i = 0;
+  for (hb_tag_t f : layout_features_to_retain->iter ())
+    features[i++] = f;
 
-  feature_indices.clear ();
-  gsub->prune_langsys (&duplicate_feature_map, gsub_langsys, &feature_indices);
-  _remap_indexes (&feature_indices, gsub_features);
+  features[i] = 0;
 
-  gsub.destroy ();
+  layout_collect_func (face,
+		       table_tag,
+		       nullptr,
+		       nullptr,
+		       features,
+		       lookup_indices);
+
+  hb_free (features);
 }
 
+template <typename T>
 static inline void
-_gpos_closure_lookups_features (hb_face_t      *face,
-				const hb_set_t *gids_to_retain,
-				hb_map_t       *gpos_lookups,
-				hb_map_t       *gpos_features,
-				script_langsys_map *gpos_langsys)
+_closure_glyphs_lookups_features (hb_face_t	     *face,
+				  hb_set_t	     *gids_to_retain,
+				  const hb_set_t     *layout_features_to_retain,
+				  bool		      retain_all_features,
+				  hb_map_t	     *lookups,
+				  hb_map_t	     *features,
+				  script_langsys_map *langsys_map)
 {
+  hb_blob_ptr_t<T> table = hb_sanitize_context_t ().reference_table<T> (face);
+  hb_tag_t table_tag = table->tableTag;
   hb_set_t lookup_indices;
-  hb_ot_layout_collect_lookups (face,
-				HB_OT_TAG_GPOS,
-				nullptr,
-				nullptr,
-				nullptr,
-				&lookup_indices);
-  hb_blob_ptr_t<OT::GPOS> gpos = hb_sanitize_context_t ().reference_table<OT::GPOS> (face);
-  gpos->closure_lookups (face,
-			 gids_to_retain,
+  _collect_subset_layout (face,
+			  table_tag,
+			  layout_features_to_retain,
+			  retain_all_features,
+			  hb_ot_layout_collect_lookups,
+			  &lookup_indices);
+
+  if (table_tag == HB_OT_TAG_GSUB)
+    hb_ot_layout_lookups_substitute_closure (face,
+					    &lookup_indices,
+					     gids_to_retain);
+  table->closure_lookups (face,
+			  gids_to_retain,
 			 &lookup_indices);
-  _remap_indexes (&lookup_indices, gpos_lookups);
+  _remap_indexes (&lookup_indices, lookups);
 
   // Collect and prune features
   hb_set_t feature_indices;
-  hb_ot_layout_collect_features (face,
-                                 HB_OT_TAG_GPOS,
-                                 nullptr,
-                                 nullptr,
-                                 nullptr,
-                                 &feature_indices);
+  _collect_subset_layout (face,
+			  table_tag,
+			  layout_features_to_retain,
+			  retain_all_features,
+			  hb_ot_layout_collect_features,
+			  &feature_indices);
 
-  gpos->prune_features (gpos_lookups, &feature_indices);
+  table->prune_features (lookups, &feature_indices);
   hb_map_t duplicate_feature_map;
-  gpos->find_duplicate_features (gpos_lookups, &feature_indices, &duplicate_feature_map);
+  table->find_duplicate_features (lookups, &feature_indices, &duplicate_feature_map);
 
   feature_indices.clear ();
-  gpos->prune_langsys (&duplicate_feature_map, gpos_langsys, &feature_indices);
-  _remap_indexes (&feature_indices, gpos_features);
+  table->prune_langsys (&duplicate_feature_map, langsys_map, &feature_indices);
+  _remap_indexes (&feature_indices, features);
 
-  gpos.destroy ();
+  table.destroy ();
 }
+
 #endif
 
 #ifndef HB_NO_VAR
@@ -182,9 +208,9 @@
 #endif
 
 static inline void
-_cmap_closure (hb_face_t           *face,
-	       const hb_set_t      *unicodes,
-	       hb_set_t            *glyphset)
+_cmap_closure (hb_face_t	   *face,
+	       const hb_set_t	   *unicodes,
+	       hb_set_t		   *glyphset)
 {
   OT::cmap::accelerator_t cmap;
   cmap.init (face);
@@ -205,6 +231,45 @@
 }
 
 static void
+_populate_unicodes_to_retain (const hb_set_t *unicodes,
+                              const hb_set_t *glyphs,
+                              hb_subset_plan_t *plan)
+{
+  OT::cmap::accelerator_t cmap;
+  cmap.init (plan->source);
+
+  for (hb_codepoint_t cp : *unicodes)
+  {
+    hb_codepoint_t gid;
+    if (!cmap.get_nominal_glyph (cp, &gid))
+    {
+      DEBUG_MSG(SUBSET, nullptr, "Drop U+%04X; no gid", cp);
+      continue;
+    }
+    plan->unicodes->add (cp);
+    plan->codepoint_to_glyph->set (cp, gid);
+    plan->_glyphset_gsub->add (gid);
+  }
+
+  if (glyphs->is_empty ())
+  {
+    cmap.fini ();
+    return;
+  }
+
+  hb_map_t unicode_glyphid_map;
+  cmap.collect_mapping (hb_set_get_empty (), &unicode_glyphid_map);
+  cmap.fini ();
+
+  for (hb_pair_t<hb_codepoint_t, hb_codepoint_t> cp_gid :
+       + unicode_glyphid_map.iter () | hb_filter (glyphs, hb_second))
+  {
+    plan->unicodes->add (cp_gid.first);
+    plan->codepoint_to_glyph->set (cp_gid.first, cp_gid.second);
+  }
+}
+
+static void
 _populate_gids_to_retain (hb_subset_plan_t* plan,
 			  const hb_set_t *unicodes,
 			  const hb_set_t *input_glyphs_to_retain,
@@ -212,13 +277,11 @@
 			  bool close_over_gpos,
 			  bool close_over_gdef)
 {
-  OT::cmap::accelerator_t cmap;
   OT::glyf::accelerator_t glyf;
 #ifndef HB_NO_SUBSET_CFF
   OT::cff1::accelerator_t cff;
 #endif
   OT::COLR::accelerator_t colr;
-  cmap.init (plan->source);
   glyf.init (plan->source);
 #ifndef HB_NO_SUBSET_CFF
   cff.init (plan->source);
@@ -228,36 +291,56 @@
   plan->_glyphset_gsub->add (0); // Not-def
   hb_set_union (plan->_glyphset_gsub, input_glyphs_to_retain);
 
-  hb_codepoint_t cp = HB_SET_VALUE_INVALID;
-  while (unicodes->next (&cp))
-  {
-    hb_codepoint_t gid;
-    if (!cmap.get_nominal_glyph (cp, &gid))
-    {
-      DEBUG_MSG(SUBSET, nullptr, "Drop U+%04X; no gid", cp);
-      continue;
-    }
-    plan->unicodes->add (cp);
-    plan->codepoint_to_glyph->set (cp, gid);
-    plan->_glyphset_gsub->add (gid);
-  }
-
   _cmap_closure (plan->source, plan->unicodes, plan->_glyphset_gsub);
 
 #ifndef HB_NO_SUBSET_LAYOUT
   if (close_over_gsub)
     // closure all glyphs/lookups/features needed for GSUB substitutions.
-    _gsub_closure_glyphs_lookups_features (plan->source, plan->_glyphset_gsub, plan->gsub_lookups, plan->gsub_features, plan->gsub_langsys);
+    _closure_glyphs_lookups_features<OT::GSUB> (
+        plan->source,
+        plan->_glyphset_gsub,
+        plan->layout_features,
+        plan->flags & HB_SUBSET_FLAGS_RETAIN_ALL_FEATURES,
+        plan->gsub_lookups,
+        plan->gsub_features,
+        plan->gsub_langsys);
 
   if (close_over_gpos)
-    _gpos_closure_lookups_features (plan->source, plan->_glyphset_gsub, plan->gpos_lookups, plan->gpos_features, plan->gpos_langsys);
+    _closure_glyphs_lookups_features<OT::GPOS> (
+        plan->source,
+        plan->_glyphset_gsub,
+        plan->layout_features,
+        plan->flags & HB_SUBSET_FLAGS_RETAIN_ALL_FEATURES,
+        plan->gpos_lookups,
+        plan->gpos_features,
+        plan->gpos_langsys);
 #endif
   _remove_invalid_gids (plan->_glyphset_gsub, plan->source->get_num_glyphs ());
 
+  // Collect all glyphs referenced by COLRv0
+  hb_set_t* cur_glyphset = plan->_glyphset_gsub;
+  hb_set_t glyphset_colrv0;
+  if (colr.is_valid ())
+  {
+    glyphset_colrv0.union_ (*cur_glyphset);
+    for (hb_codepoint_t gid : cur_glyphset->iter ())
+      colr.closure_glyphs (gid, &glyphset_colrv0);
+    cur_glyphset = &glyphset_colrv0;
+  }
+
+  hb_set_t palette_indices;
+  colr.closure_V0palette_indices (cur_glyphset, &palette_indices);
+
+  hb_set_t layer_indices;
+  colr.closure_forV1 (cur_glyphset, &layer_indices, &palette_indices);
+  _remap_indexes (&layer_indices, plan->colrv1_layers);
+  _remap_palette_indexes (&palette_indices, plan->colr_palettes);
+  colr.fini ();
+  _remove_invalid_gids (cur_glyphset, plan->source->get_num_glyphs ());
+
   // Populate a full set of glyphs to retain by adding all referenced
   // composite glyphs.
-  hb_codepoint_t gid = HB_SET_VALUE_INVALID;
-  while (plan->_glyphset_gsub->next (&gid))
+  for (hb_codepoint_t gid : cur_glyphset->iter ())
   {
     glyf.add_gid_and_children (gid, plan->_glyphset);
 #ifndef HB_NO_SUBSET_CFF
@@ -264,19 +347,18 @@
     if (cff.is_valid ())
       _add_cff_seac_components (cff, gid, plan->_glyphset);
 #endif
-    if (colr.is_valid ())
-      colr.closure_glyphs (gid, plan->_glyphset);
   }
 
   _remove_invalid_gids (plan->_glyphset, plan->source->get_num_glyphs ());
 
+
 #ifndef HB_NO_VAR
   if (close_over_gdef)
     _collect_layout_variation_indices (plan->source,
-                                       plan->_glyphset_gsub,
-                                       plan->gpos_lookups,
-                                       plan->layout_variation_indices,
-                                       plan->layout_variation_idx_map);
+				       plan->_glyphset_gsub,
+				       plan->gpos_lookups,
+				       plan->layout_variation_indices,
+				       plan->layout_variation_idx_map);
 #endif
 
 #ifndef HB_NO_SUBSET_CFF
@@ -283,16 +365,15 @@
   cff.fini ();
 #endif
   glyf.fini ();
-  cmap.fini ();
 }
 
 static void
 _create_old_gid_to_new_gid_map (const hb_face_t *face,
-				bool             retain_gids,
-				const hb_set_t  *all_gids_to_retain,
-				hb_map_t        *glyph_map, /* OUT */
-				hb_map_t        *reverse_glyph_map, /* OUT */
-				unsigned int    *num_glyphs /* OUT */)
+				bool		 retain_gids,
+				const hb_set_t	*all_gids_to_retain,
+				hb_map_t	*glyph_map, /* OUT */
+				hb_map_t	*reverse_glyph_map, /* OUT */
+				unsigned int	*num_glyphs /* OUT */)
 {
   if (!retain_gids)
   {
@@ -335,17 +416,21 @@
 
 /**
  * hb_subset_plan_create:
+ * @face: font face to create the plan for.
+ * @input: a #hb_subset_input_t input.
+ *
  * Computes a plan for subsetting the supplied face according
  * to a provided input. The plan describes
  * which tables and glyphs should be retained.
  *
- * Return value: New subset plan.
+ * Return value: (transfer full): New subset plan. Destroy with
+ * hb_subset_plan_destroy().
  *
  * Since: 1.7.5
  **/
 hb_subset_plan_t *
-hb_subset_plan_create (hb_face_t         *face,
-		       hb_subset_input_t *input)
+hb_subset_plan_create (hb_face_t	 *face,
+		       const hb_subset_input_t *input)
 {
   hb_subset_plan_t *plan;
   if (unlikely (!(plan = hb_object_create<hb_subset_plan_t> ())))
@@ -352,16 +437,15 @@
     return const_cast<hb_subset_plan_t *> (&Null (hb_subset_plan_t));
 
   plan->successful = true;
-  plan->drop_hints = input->drop_hints;
-  plan->desubroutinize = input->desubroutinize;
-  plan->retain_gids = input->retain_gids;
-  plan->name_legacy = input->name_legacy;
+  plan->flags = input->flags;
   plan->unicodes = hb_set_create ();
-  plan->name_ids = hb_set_reference (input->name_ids);
+  plan->name_ids = hb_set_copy (input->name_ids);
   _nameid_closure (face, plan->name_ids);
-  plan->name_languages = hb_set_reference (input->name_languages);
-  plan->glyphs_requested = hb_set_reference (input->glyphs);
-  plan->drop_tables = hb_set_reference (input->drop_tables);
+  plan->name_languages = hb_set_copy (input->name_languages);
+  plan->layout_features = hb_set_copy (input->layout_features);
+  plan->glyphs_requested = hb_set_copy (input->glyphs);
+  plan->drop_tables = hb_set_copy (input->drop_tables);
+  plan->no_subset_tables = hb_set_copy (input->no_subset_tables);
   plan->source = hb_face_reference (face);
   plan->dest = hb_face_builder_create ();
 
@@ -380,6 +464,8 @@
 
   plan->gsub_features = hb_map_create ();
   plan->gpos_features = hb_map_create ();
+  plan->colrv1_layers = hb_map_create ();
+  plan->colr_palettes = hb_map_create ();
   plan->layout_variation_indices = hb_set_create ();
   plan->layout_variation_idx_map = hb_map_create ();
 
@@ -387,6 +473,8 @@
     return plan;
   }
 
+  _populate_unicodes_to_retain (input->unicodes, input->glyphs, plan);
+
   _populate_gids_to_retain (plan,
 			    input->unicodes,
 			    input->glyphs,
@@ -395,7 +483,7 @@
 			    !input->drop_tables->has (HB_OT_TAG_GDEF));
 
   _create_old_gid_to_new_gid_map (face,
-				  input->retain_gids,
+                                  input->flags & HB_SUBSET_FLAGS_RETAIN_GIDS,
 				  plan->_glyphset,
 				  plan->glyph_map,
 				  plan->reverse_glyph_map,
@@ -406,7 +494,11 @@
 
 /**
  * hb_subset_plan_destroy:
+ * @plan: a #hb_subset_plan_t
  *
+ * Decreases the reference count on @plan, and if it reaches zero, destroys
+ * @plan, freeing all memory.
+ *
  * Since: 1.7.5
  **/
 void
@@ -417,8 +509,10 @@
   hb_set_destroy (plan->unicodes);
   hb_set_destroy (plan->name_ids);
   hb_set_destroy (plan->name_languages);
+  hb_set_destroy (plan->layout_features);
   hb_set_destroy (plan->glyphs_requested);
   hb_set_destroy (plan->drop_tables);
+  hb_set_destroy (plan->no_subset_tables);
   hb_face_destroy (plan->source);
   hb_face_destroy (plan->dest);
   hb_map_destroy (plan->codepoint_to_glyph);
@@ -430,6 +524,8 @@
   hb_map_destroy (plan->gpos_lookups);
   hb_map_destroy (plan->gsub_features);
   hb_map_destroy (plan->gpos_features);
+  hb_map_destroy (plan->colrv1_layers);
+  hb_map_destroy (plan->colr_palettes);
   hb_set_destroy (plan->layout_variation_indices);
   hb_map_destroy (plan->layout_variation_idx_map);
 
@@ -440,7 +536,7 @@
 
     hb_object_destroy (plan->gsub_langsys);
     plan->gsub_langsys->fini_shallow ();
-    free (plan->gsub_langsys);
+    hb_free (plan->gsub_langsys);
   }
 
   if (plan->gpos_langsys)
@@ -450,8 +546,8 @@
 
     hb_object_destroy (plan->gpos_langsys);
     plan->gpos_langsys->fini_shallow ();
-    free (plan->gpos_langsys);
+    hb_free (plan->gpos_langsys);
   }
 
-  free (plan);
+  hb_free (plan);
 }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -39,11 +39,8 @@
 {
   hb_object_header_t header;
 
-  bool successful : 1;
-  bool drop_hints : 1;
-  bool desubroutinize : 1;
-  bool retain_gids : 1;
-  bool name_legacy : 1;
+  bool successful;
+  unsigned flags;
 
   // For each cp that we'd like to retain maps to the corresponding gid.
   hb_set_t *unicodes;
@@ -54,9 +51,15 @@
   // name_languages we would like to retain
   hb_set_t *name_languages;
 
+  //layout features which will be preserved
+  hb_set_t *layout_features;
+
   //glyph ids requested to retain
   hb_set_t *glyphs_requested;
 
+  // Tables which should not be processed, just pass them through.
+  hb_set_t *no_subset_tables;
+
   // Tables which should be dropped.
   hb_set_t *drop_tables;
 
@@ -87,6 +90,10 @@
   hb_map_t *gsub_features;
   hb_map_t *gpos_features;
 
+  //active layers/palettes we'd like to retain
+  hb_map_t *colrv1_layers;
+  hb_map_t *colr_palettes;
+
   //The set of layout item variation store delta set indices to be retained
   hb_set_t *layout_variation_indices;
   //Old -> New layout item variation store delta set index mapping
@@ -193,7 +200,7 @@
 
 HB_INTERNAL hb_subset_plan_t *
 hb_subset_plan_create (hb_face_t           *face,
-		       hb_subset_input_t   *input);
+		       const hb_subset_input_t   *input);
 
 HB_INTERNAL void
 hb_subset_plan_destroy (hb_subset_plan_t *plan);

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -39,8 +39,10 @@
 #include "hb-ot-maxp-table.hh"
 #include "hb-ot-color-sbix-table.hh"
 #include "hb-ot-color-colr-table.hh"
+#include "hb-ot-color-cpal-table.hh"
 #include "hb-ot-os2-table.hh"
 #include "hb-ot-post-table.hh"
+#include "hb-ot-post-table-v2subset.hh"
 #include "hb-ot-cff1-table.hh"
 #include "hb-ot-cff2-table.hh"
 #include "hb-ot-vorg-table.hh"
@@ -52,6 +54,26 @@
 #include "hb-ot-var-hvar-table.hh"
 #include "hb-repacker.hh"
 
+/**
+ * SECTION:hb-subset
+ * @title: hb-subset
+ * @short_description: Subsets font files.
+ * @include: hb-subset.h
+ *
+ * Subsetting reduces the codepoint coverage of font files and removes all data
+ * that is no longer needed. A subset input describes the desired subset. The input is
+ * provided along with a font to the subsetting operation. Output is a new font file
+ * containing only the data specified in the input.
+ *
+ * Currently most outline and bitmap tables are supported: glyf, CFF, CFF2, sbix,
+ * COLR, and CBDT/CBLC. This also includes fonts with variable outlines via OpenType
+ * variations. Notably EBDT/EBLC and SVG are not supported. Layout subsetting is supported
+ * only for OpenType Layout tables (GSUB, GPOS, GDEF). Notably subsetting of graphite or AAT tables
+ * is not yet supported.
+ *
+ * Fonts with graphite or AAT tables may still be subsetted but will likely need to use the
+ * retain glyph ids option and configure the subset to pass through the layout tables untouched.
+ */
 
 static unsigned
 _plan_estimate_subset_table_size (hb_subset_plan_t *plan, unsigned table_len)
@@ -106,6 +128,7 @@
              hb_subset_context_t* c /* OUT */)
 {
   c->serializer->start_serialize<TableType> ();
+  if (c->serializer->in_error ()) return false;
 
   bool needed = table->subset (c);
   if (!c->serializer->ran_out_of_room ())
@@ -223,7 +246,7 @@
   case HB_TAG ('p','r','e','p'): /* hint table, fallthrough */
   case HB_TAG ('h','d','m','x'): /* hint table, fallthrough */
   case HB_TAG ('V','D','M','X'): /* hint table, fallthrough */
-    return plan->drop_hints;
+    return plan->flags & HB_SUBSET_FLAGS_NO_HINTING;
 
 #ifdef HB_NO_SUBSET_LAYOUT
     // Drop Layout Tables if requested.
@@ -243,8 +266,21 @@
 }
 
 static bool
+_passthrough (hb_subset_plan_t *plan, hb_tag_t tag)
+{
+  hb_blob_t *source_table = hb_face_reference_table (plan->source, tag);
+  bool result = plan->add_table (tag, source_table);
+  hb_blob_destroy (source_table);
+  return result;
+}
+
+static bool
 _subset_table (hb_subset_plan_t *plan, hb_tag_t tag)
 {
+  if (plan->no_subset_tables->has (tag)) {
+    return _passthrough (plan, tag);
+  }
+
   DEBUG_MSG (SUBSET, nullptr, "subset %c%c%c%c", HB_UNTAG (tag));
   switch (tag)
   {
@@ -266,6 +302,7 @@
   case HB_OT_TAG_OS2 : return _subset<const OT::OS2 > (plan);
   case HB_OT_TAG_post: return _subset<const OT::post> (plan);
   case HB_OT_TAG_COLR: return _subset<const OT::COLR> (plan);
+  case HB_OT_TAG_CPAL: return _subset<const OT::CPAL> (plan);
   case HB_OT_TAG_CBLC: return _subset<const OT::CBLC> (plan);
   case HB_OT_TAG_CBDT: return true; /* skip CBDT, handled by CBLC */
 
@@ -285,22 +322,34 @@
 #endif
 
   default:
-    hb_blob_t *source_table = hb_face_reference_table (plan->source, tag);
-    bool result = plan->add_table (tag, source_table);
-    hb_blob_destroy (source_table);
-    return result;
+    if (plan->flags & HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZED)
+      return _passthrough (plan, tag);
+
+    // Drop table
+    return true;
   }
 }
 
+hb_face_t *
+hb_subset (hb_face_t *source, hb_subset_input_t *input)
+{
+  hb_face_t* face = hb_subset_or_fail (source, input);
+  if (face) return face;
+  return hb_face_get_empty ();
+}
+
 /**
- * hb_subset:
+ * hb_subset_or_fail:
  * @source: font face data to be subset.
  * @input: input to use for the subsetting.
  *
- * Subsets a font according to provided input.
+ * Subsets a font according to provided input. Returns nullptr
+ * if the subset operation fails.
+ *
+ * Since: 2.9.0
  **/
 hb_face_t *
-hb_subset (hb_face_t *source, hb_subset_input_t *input)
+hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input)
 {
   if (unlikely (!input || !source)) return hb_face_get_empty ();
 
@@ -307,7 +356,7 @@
   hb_subset_plan_t *plan = hb_subset_plan_create (source, input);
   if (unlikely (plan->in_error ())) {
     hb_subset_plan_destroy (plan);
-    return hb_face_get_empty ();
+    return nullptr;
   }
 
   hb_set_t tags_set;
@@ -328,7 +377,7 @@
   }
 end:
 
-  hb_face_t *result = success ? hb_face_reference (plan->dest) : hb_face_get_empty ();
+  hb_face_t *result = success ? hb_face_reference (plan->dest) : nullptr;
 
   hb_subset_plan_destroy (plan);
   return result;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.h
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.h	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.h	2021-08-29 04:06:16 UTC (rev 60356)
@@ -31,8 +31,8 @@
 
 HB_BEGIN_DECLS
 
-/*
- * hb_subset_input_t
+/**
+ * hb_subset_input_t:
  *
  * Things that change based on the input. Characters to keep, etc.
  */
@@ -39,31 +39,116 @@
 
 typedef struct hb_subset_input_t hb_subset_input_t;
 
+/**
+ * hb_subset_flags_t:
+ * @HB_SUBSET_FLAGS_DEFAULT: all flags at their default value of false.
+ * @HB_SUBSET_FLAGS_NO_HINTING: If set hinting instructions will be dropped in
+ * the produced subset. Otherwise hinting instructions will be retained.
+ * @HB_SUBSET_FLAGS_RETAIN_GIDS: If set glyph indices will not be modified in
+ * the produced subset. If glyphs are dropped their indices will be retained
+ * as an empty glyph.
+ * @HB_SUBSET_FLAGS_DESUBROUTINIZE: If set and subsetting a CFF font the
+ * subsetter will attempt to remove subroutines from the CFF glyphs.
+ * @HB_SUBSET_FLAGS_NAME_LEGACY: If set non-unicode name records will be
+ * retained in the subset.
+ * @HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG:	If set the subsetter will set the
+ * OVERLAP_SIMPLE flag on each simple glyph.
+ * @HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZED: If set the subsetter will not
+ * drop unrecognized tables and instead pass them through untouched.
+ * @HB_SUBSET_FLAGS_NOTDEF_OUTLINE: If set the notdef glyph outline will be
+ * retained in the final subset.
+ * @HB_SUBSET_FLAGS_GLYPH_NAMES: If set the PS glyph names will be retained
+ * in the final subset.
+ * @HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES: If set then the unicode ranges in
+ * OS/2 will not be recalculated.
+ * @HB_SUBSET_FLAGS_RETAIN_ALL_FEATURES: If set all layout features will be
+ * retained. If unset then the set accessed by
+ * hb_subset_input_layout_features_set() will be used to determine the features
+ * to be retained.
+ *
+ * List of boolean properties that can be configured on the subset input.
+ *
+ * Since: 2.9.0
+ **/
+typedef enum { /*< flags >*/
+  HB_SUBSET_FLAGS_DEFAULT =		     0x00000000u,
+  HB_SUBSET_FLAGS_NO_HINTING =		     0x00000001u,
+  HB_SUBSET_FLAGS_RETAIN_GIDS =		     0x00000002u,
+  HB_SUBSET_FLAGS_DESUBROUTINIZE =	     0x00000004u,
+  HB_SUBSET_FLAGS_NAME_LEGACY =		     0x00000008u,
+  HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG =	     0x00000010u,
+  HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZED = 0x00000020u,
+  HB_SUBSET_FLAGS_NOTDEF_OUTLINE =	     0x00000040u,
+  HB_SUBSET_FLAGS_GLYPH_NAMES =		     0x00000080u,
+  HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES =  0x00000100u,
+  HB_SUBSET_FLAGS_RETAIN_ALL_FEATURES =	     0x00000200u,
+} hb_subset_flags_t;
+
 HB_EXTERN hb_subset_input_t *
 hb_subset_input_create_or_fail (void);
 
 HB_EXTERN hb_subset_input_t *
-hb_subset_input_reference (hb_subset_input_t *subset_input);
+hb_subset_input_reference (hb_subset_input_t *input);
 
 HB_EXTERN void
-hb_subset_input_destroy (hb_subset_input_t *subset_input);
+hb_subset_input_destroy (hb_subset_input_t *input);
 
+HB_EXTERN hb_bool_t
+hb_subset_input_set_user_data (hb_subset_input_t  *input,
+			       hb_user_data_key_t *key,
+			       void *		   data,
+			       hb_destroy_func_t   destroy,
+			       hb_bool_t	   replace);
+
+HB_EXTERN void *
+hb_subset_input_get_user_data (const hb_subset_input_t *input,
+			       hb_user_data_key_t	   *key);
+
 HB_EXTERN hb_set_t *
-hb_subset_input_unicode_set (hb_subset_input_t *subset_input);
+hb_subset_input_unicode_set (hb_subset_input_t *input);
 
 HB_EXTERN hb_set_t *
-hb_subset_input_glyph_set (hb_subset_input_t *subset_input);
+hb_subset_input_glyph_set (hb_subset_input_t *input);
 
 HB_EXTERN hb_set_t *
-hb_subset_input_nameid_set (hb_subset_input_t *subset_input);
+hb_subset_input_nameid_set (hb_subset_input_t *input);
 
 HB_EXTERN hb_set_t *
-hb_subset_input_namelangid_set (hb_subset_input_t *subset_input);
+hb_subset_input_namelangid_set (hb_subset_input_t *input);
 
 HB_EXTERN hb_set_t *
-hb_subset_input_drop_tables_set (hb_subset_input_t *subset_input);
+hb_subset_input_layout_features_set (hb_subset_input_t *input);
 
+HB_EXTERN hb_set_t *
+hb_subset_input_no_subset_tables_set (hb_subset_input_t *input);
+
+HB_EXTERN hb_set_t *
+hb_subset_input_drop_tables_set (hb_subset_input_t *input);
+
+HB_EXTERN hb_subset_flags_t
+hb_subset_input_get_flags (hb_subset_input_t *input);
+
 HB_EXTERN void
+hb_subset_input_set_flags (hb_subset_input_t *input,
+			   unsigned value);
+
+HB_EXTERN hb_face_t *
+hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input);
+
+
+/*
+ * ### Legacy API ###
+ * The methods below are part of the legacy harfbuzz subsetting API and will be
+ * Removed as of version 3.0.0
+ */
+
+HB_EXTERN void
+hb_subset_input_set_retain_all_features (hb_subset_input_t *subset_input,
+                                         hb_bool_t value);
+HB_EXTERN hb_bool_t
+hb_subset_input_get_retain_all_features (hb_subset_input_t *subset_input);
+
+HB_EXTERN void
 hb_subset_input_set_drop_hints (hb_subset_input_t *subset_input,
 				hb_bool_t drop_hints);
 HB_EXTERN hb_bool_t
@@ -87,11 +172,30 @@
 HB_EXTERN hb_bool_t
 hb_subset_input_get_name_legacy (hb_subset_input_t *subset_input);
 
-/* hb_subset () */
+HB_EXTERN void
+hb_subset_input_set_overlaps_flag (hb_subset_input_t *subset_input,
+                                   hb_bool_t overlaps_flag);
+
+HB_EXTERN hb_bool_t
+hb_subset_input_get_overlaps_flag (hb_subset_input_t *subset_input);
+
+HB_EXTERN void
+hb_subset_input_set_notdef_outline (hb_subset_input_t *subset_input,
+                                    hb_bool_t notdef_outline);
+
+HB_EXTERN hb_bool_t
+hb_subset_input_get_notdef_outline (hb_subset_input_t *subset_input);
+
+HB_EXTERN void
+hb_subset_input_set_no_prune_unicode_ranges (hb_subset_input_t *subset_input,
+                                             hb_bool_t no_prune_unicode_ranges);
+
+HB_EXTERN hb_bool_t
+hb_subset_input_get_no_prune_unicode_ranges (hb_subset_input_t *subset_input);
+
 HB_EXTERN hb_face_t *
 hb_subset (hb_face_t *source, hb_subset_input_t *input);
 
-
 HB_END_DECLS
 
 #endif /* HB_SUBSET_H */

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -24,36 +24,42 @@
 #include "hb-unicode.hh"
 
 static const uint8_t
-_hb_emoji_u8[448] =
+_hb_emoji_u8[544] =
 {
-    0,  0,  0,  0, 33,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+   16, 17, 17, 17, 50, 20, 21, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+   17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+   17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+   17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,118,152,
+    0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 84,118,
-    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  2,  0,  0,  3,
-    0,  0,  0,  0,  0,  0,  4,  5,  6,  7,  8,  7,  9, 10, 11,  0,
-    0,  0,  0,  0, 12,  0,  0,  0,  0,  0,  0,  0, 13,  0,  0,  0,
-    7,  7,  7, 14, 15, 16, 17, 18, 19, 20,  7,  7,  7,  7,  7, 21,
-    7,  7,  7,  7, 22, 23,  7,  7,  7, 24,  7, 14,  0, 25,  0, 26,
-   27, 28, 29, 14, 30, 31,  7,  7,  7,  7,  7, 14,  0,  0,  0,  0,
-    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7, 22,
-    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,240,  1,  0,  2,  0,  0,
-    0,  0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,  7,  3,
-    0,  0,  0,  0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0, 56,
-  159,255,243,255,255,255,255,255,255,255,255,255,255,255,255,255,
-   31,  0,255,255,255,255,255,255, 31,255,  3,  0,  0,  0,  8,  0,
-    0,  0, 24,  0,120,  0,  0,  0,  0,  0, 96,  0,  0,  0,  0,  0,
-    0,  0,  0,  0,  0,  0, 16,  0, 96,  0,  0,  8,  0,  0,  0,  0,
-  255,255,255,255,255,255,255,127,  0, 96,  0,  0,  0,  0,  0,  0,
-    0,  0,  0,  0,  0,240,  1, 64,  0,  0,254,  3,  0,224,255,255,
-  255,255,255,255, 31,  0,  0,  0,254,127,  0,  0,  0,  0,252,115,
-    0,254,255,255,255,255,255,255,255,255,255,255,255,255,255,  3,
-  255,255,255,255,255,255,255, 31,192,255,255,255,255,255,255,255,
-  255,127,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,240,127,
-    0,  0,224,255,255,255,255,127,  0,112,  0,  0,  0,  0,  0,  0,
-    0,127,  0,124,  0,  0,  0,  0,  0,127,  0,  0,  0,192,255,255,
-    0,240,255,255,255,255,255,243,159,255,255,255,255,255,255,255,
+    2,  3,  0,  0,  4,  0,  5,  0,  0,  0,  0,  0,  6,  0,  7,  8,
+    0,  0,  0,  9,  0,  0, 10, 11, 12, 13, 14, 13, 15, 16, 17,  0,
+    0,  0,  0,  0, 18,  0,  0,  0,  0,  0,  0,  0, 19, 20,  0,  0,
+   21,  0,  0,  0,  0,  0,  0,  0,  0,  0, 22,  0,  0,  0,  0,  0,
+   13, 13, 13, 13, 23, 24, 25, 26, 27, 28, 13, 13, 13, 13, 13, 29,
+   13, 13, 13, 13, 30, 31, 13, 13, 13, 32, 13, 13,  0, 33,  0, 34,
+   35, 36, 37, 13, 38, 39, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,
+   13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 30,
+    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 66,  0,  0,
+    0,  0,  0,  0,  0,  0,  0, 16,  0,  2,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  4,  0,  0,  2,  0,  0,240,  3,  0,  6,  0,  0,
+    0,  0,  0, 12,  0,  1,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,
+    0,128,  0,  0,  0,254, 15,  7,  4,  0,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0, 12, 64,  0,  1,  0,  0,  0,  0,  0,  0,120,
+  191,255,247,255,255,255,255,255,255,255,255,255,255,255,255,255,
+   63,  0,255,255,255,255,255,255, 63,255, 87, 32,  2,  1, 24,  0,
+  144, 80,184,  0,248,  0,  0,  0,  0,  0,224,  0,  2,  0,  1,128,
+    0,  0,  0,  0,  0,  0, 48,  0,224,  0,  0, 24,  0,  0,  0,  0,
+    0,  0, 33,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, 32,
+    0,  0,128,  2,  0,  0,  0,  0,  0,224,  0,  0,  0,128,  0,  0,
+    0,  0,  0,  0,  0,240,  3,192,  0, 64,254,  7,  0,224,255,255,
+  255,255,255,255, 63,  0,  0,  0,254,255,  0,  4,  0,128,252,247,
+    0,254,255,255,255,255,255,255,255,255,255,255,255,255,255,  7,
+  255,255,255,255,255,255,255, 63,192,255,255,255,255,255,255,255,
+  255,255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,240,255,
+    0,  0,224,255,255,255,255,255,  0,240,  0,  0,  0,  0,  0,  0,
+    0,255,  0,252,  0,  0,  0,  0,  0,255,  0,  0,  0,192,255,255,
+    0,240,255,255,255,255,255,247,191,255,255,255,255,255,255,255,
 };
 
 static inline unsigned
@@ -69,7 +75,7 @@
 static inline uint_fast8_t
 _hb_emoji_is_Extended_Pictographic (unsigned u)
 {
-  return u<131069u?_hb_emoji_b1(192+_hb_emoji_u8,((_hb_emoji_u8[64+(((_hb_emoji_b4(_hb_emoji_u8,u>>6>>4))<<4)+((u>>6)&15u))])<<6)+((u)&63u)):0;
+  return u<131070u?_hb_emoji_b1(224+_hb_emoji_u8,((_hb_emoji_u8[64+(((_hb_emoji_b4(_hb_emoji_u8,u>>6>>4))<<4)+((u>>6)&15u))])<<6)+((u)&63u)):0;
 }
 
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -268,7 +268,7 @@
 
   hb_unicode_funcs_destroy (ufuncs->parent);
 
-  free (ufuncs);
+  hb_free (ufuncs);
 }
 
 /**

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -359,6 +359,13 @@
 	  FLAG (HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) | \
 	  FLAG (HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)))
 
+#define HB_UNICODE_GENERAL_CATEGORY_IS_LETTER(gen_cat) \
+	(FLAG_UNSAFE (gen_cat) & \
+	 (FLAG (HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER) | \
+	  FLAG (HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER) | \
+	  FLAG (HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER) | \
+	  FLAG (HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER) | \
+	  FLAG (HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER)))
 
 /*
  * Ranges, used for bsearch tables.

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -44,6 +44,7 @@
 
 #include "hb-uniscribe.h"
 
+#include "hb-ms-feature-ranges.hh"
 #include "hb-open-file.hh"
 #include "hb-ot-name-table.hh"
 #include "hb-ot-layout.h"
@@ -247,7 +248,7 @@
 {
   static hb_uniscribe_shaper_funcs_t *create ()
   {
-    hb_uniscribe_shaper_funcs_t *funcs = (hb_uniscribe_shaper_funcs_t *) calloc (1, sizeof (hb_uniscribe_shaper_funcs_t));
+    hb_uniscribe_shaper_funcs_t *funcs = (hb_uniscribe_shaper_funcs_t *) hb_calloc (1, sizeof (hb_uniscribe_shaper_funcs_t));
     if (unlikely (!funcs))
       return nullptr;
 
@@ -261,7 +262,7 @@
   }
   static void destroy (hb_uniscribe_shaper_funcs_t *p)
   {
-    free ((void *) p);
+    hb_free ((void *) p);
   }
   static hb_uniscribe_shaper_funcs_t *get_null ()
   {
@@ -284,44 +285,6 @@
 }
 
 
-struct active_feature_t {
-  OPENTYPE_FEATURE_RECORD rec;
-  unsigned int order;
-
-  HB_INTERNAL static int cmp (const void *pa, const void *pb) {
-    const active_feature_t *a = (const active_feature_t *) pa;
-    const active_feature_t *b = (const active_feature_t *) pb;
-    return a->rec.tagFeature < b->rec.tagFeature ? -1 : a->rec.tagFeature > b->rec.tagFeature ? 1 :
-	   a->order < b->order ? -1 : a->order > b->order ? 1 :
-	   a->rec.lParameter < b->rec.lParameter ? -1 : a->rec.lParameter > b->rec.lParameter ? 1 :
-	   0;
-  }
-  bool operator== (const active_feature_t *f)
-  { return cmp (this, f) == 0; }
-};
-
-struct feature_event_t {
-  unsigned int index;
-  bool start;
-  active_feature_t feature;
-
-  HB_INTERNAL static int cmp (const void *pa, const void *pb)
-  {
-    const feature_event_t *a = (const feature_event_t *) pa;
-    const feature_event_t *b = (const feature_event_t *) pb;
-    return a->index < b->index ? -1 : a->index > b->index ? 1 :
-	   a->start < b->start ? -1 : a->start > b->start ? 1 :
-	   active_feature_t::cmp (&a->feature, &b->feature);
-  }
-};
-
-struct range_record_t {
-  TEXTRANGE_PROPERTIES props;
-  unsigned int index_first; /* == start */
-  unsigned int index_last;  /* == end - 1 */
-};
-
-
 /*
  * shaper face data
  */
@@ -391,7 +354,7 @@
   unsigned int name_table_offset = (length + 3) & ~3;
 
   new_length = name_table_offset + padded_name_table_length;
-  void *new_sfnt_data = calloc (1, new_length);
+  void *new_sfnt_data = hb_calloc (1, new_length);
   if (!new_sfnt_data)
   {
     hb_blob_destroy (blob);
@@ -441,7 +404,7 @@
     }
     else if (face_index == 0) /* Fail if first face doesn't have 'name' table. */
     {
-      free (new_sfnt_data);
+      hb_free (new_sfnt_data);
       hb_blob_destroy (blob);
       return nullptr;
     }
@@ -453,13 +416,13 @@
 
   hb_blob_destroy (blob);
   return hb_blob_create ((const char *) new_sfnt_data, new_length,
-			 HB_MEMORY_MODE_WRITABLE, new_sfnt_data, free);
+			 HB_MEMORY_MODE_WRITABLE, new_sfnt_data, hb_free);
 }
 
 hb_uniscribe_face_data_t *
 _hb_uniscribe_shaper_face_data_create (hb_face_t *face)
 {
-  hb_uniscribe_face_data_t *data = (hb_uniscribe_face_data_t *) calloc (1, sizeof (hb_uniscribe_face_data_t));
+  hb_uniscribe_face_data_t *data = (hb_uniscribe_face_data_t *) hb_calloc (1, sizeof (hb_uniscribe_face_data_t));
   if (unlikely (!data))
     return nullptr;
 
@@ -466,7 +429,7 @@
   data->funcs = hb_uniscribe_shaper_get_funcs ();
   if (unlikely (!data->funcs))
   {
-    free (data);
+    hb_free (data);
     return nullptr;
   }
 
@@ -477,7 +440,7 @@
   blob = _hb_rename_font (blob, data->face_name);
   if (unlikely (!blob))
   {
-    free (data);
+    hb_free (data);
     return nullptr;
   }
 
@@ -488,7 +451,7 @@
   if (unlikely (!data->fh))
   {
     DEBUG_MSG (UNISCRIBE, face, "Face AddFontMemResourceEx() failed");
-    free (data);
+    hb_free (data);
     return nullptr;
   }
 
@@ -499,7 +462,7 @@
 _hb_uniscribe_shaper_face_data_destroy (hb_uniscribe_face_data_t *data)
 {
   RemoveFontMemResourceEx (data->fh);
-  free (data);
+  hb_free (data);
 }
 
 
@@ -533,7 +496,7 @@
 hb_uniscribe_font_data_t *
 _hb_uniscribe_shaper_font_data_create (hb_font_t *font)
 {
-  hb_uniscribe_font_data_t *data = (hb_uniscribe_font_data_t *) calloc (1, sizeof (hb_uniscribe_font_data_t));
+  hb_uniscribe_font_data_t *data = (hb_uniscribe_font_data_t *) hb_calloc (1, sizeof (hb_uniscribe_font_data_t));
   if (unlikely (!data))
     return nullptr;
 
@@ -580,7 +543,7 @@
     DeleteObject (data->hfont);
   if (data->script_cache)
     ScriptFreeCache (&data->script_cache);
-  free (data);
+  hb_free (data);
 }
 
 /**
@@ -635,109 +598,6 @@
   const hb_uniscribe_font_data_t *font_data = font->data.uniscribe;
   hb_uniscribe_shaper_funcs_t *funcs = face_data->funcs;
 
-  /*
-   * Set up features.
-   */
-  hb_vector_t<OPENTYPE_FEATURE_RECORD> feature_records;
-  hb_vector_t<range_record_t> range_records;
-  if (num_features)
-  {
-    /* Sort features by start/end events. */
-    hb_vector_t<feature_event_t> feature_events;
-    for (unsigned int i = 0; i < num_features; i++)
-    {
-      active_feature_t feature;
-      feature.rec.tagFeature = hb_uint32_swap (features[i].tag);
-      feature.rec.lParameter = features[i].value;
-      feature.order = i;
-
-      feature_event_t *event;
-
-      event = feature_events.push ();
-      event->index = features[i].start;
-      event->start = true;
-      event->feature = feature;
-
-      event = feature_events.push ();
-      event->index = features[i].end;
-      event->start = false;
-      event->feature = feature;
-    }
-    feature_events.qsort ();
-    /* Add a strategic final event. */
-    {
-      active_feature_t feature;
-      feature.rec.tagFeature = 0;
-      feature.rec.lParameter = 0;
-      feature.order = num_features + 1;
-
-      feature_event_t *event = feature_events.push ();
-      event->index = 0; /* This value does magic. */
-      event->start = false;
-      event->feature = feature;
-    }
-
-    /* Scan events and save features for each range. */
-    hb_vector_t<active_feature_t> active_features;
-    unsigned int last_index = 0;
-    for (unsigned int i = 0; i < feature_events.length; i++)
-    {
-      feature_event_t *event = &feature_events[i];
-
-      if (event->index != last_index)
-      {
-	/* Save a snapshot of active features and the range. */
-	range_record_t *range = range_records.push ();
-
-	unsigned int offset = feature_records.length;
-
-	active_features.qsort ();
-	for (unsigned int j = 0; j < active_features.length; j++)
-	{
-	  if (!j || active_features[j].rec.tagFeature != feature_records[feature_records.length - 1].tagFeature)
-	  {
-	    feature_records.push (active_features[j].rec);
-	  }
-	  else
-	  {
-	    /* Overrides value for existing feature. */
-	    feature_records[feature_records.length - 1].lParameter = active_features[j].rec.lParameter;
-	  }
-	}
-
-	/* Will convert to pointer after all is ready, since feature_records.array
-	 * may move as we grow it. */
-	range->props.potfRecords = reinterpret_cast<OPENTYPE_FEATURE_RECORD *> (offset);
-	range->props.cotfRecords = feature_records.length - offset;
-	range->index_first = last_index;
-	range->index_last  = event->index - 1;
-
-	last_index = event->index;
-      }
-
-      if (event->start)
-      {
-	active_features.push (event->feature);
-      }
-      else
-      {
-	active_feature_t *feature = active_features.find (&event->feature);
-	if (feature)
-	  active_features.remove (feature - active_features.arrayZ);
-      }
-    }
-
-    if (!range_records.length) /* No active feature found. */
-      num_features = 0;
-
-    /* Fixup the pointers. */
-    for (unsigned int i = 0; i < range_records.length; i++)
-    {
-      range_record_t *range = &range_records[i];
-      range->props.potfRecords = (OPENTYPE_FEATURE_RECORD *) feature_records + reinterpret_cast<uintptr_t> (range->props.potfRecords);
-    }
-  }
-
 #define FAIL(...) \
   HB_STMT_START { \
     DEBUG_MSG (UNISCRIBE, nullptr, __VA_ARGS__); \
@@ -856,9 +716,24 @@
 				       nullptr, nullptr,
 				       &lang_count, &lang_tag);
   OPENTYPE_TAG language_tag = hb_uint32_swap (lang_count ? lang_tag : HB_TAG_NONE);
-  hb_vector_t<TEXTRANGE_PROPERTIES*> range_properties;
-  hb_vector_t<int> range_char_counts;
 
+  /*
+   * Set up features.
+   */
+  static_assert ((sizeof (TEXTRANGE_PROPERTIES) == sizeof (hb_ms_features_t)), "");
+  static_assert ((sizeof (OPENTYPE_FEATURE_RECORD) == sizeof (hb_ms_feature_t)), "");
+  hb_vector_t<hb_ms_feature_t> feature_records;
+  hb_vector_t<hb_ms_range_record_t> range_records;
+  bool has_features = false;
+  if (num_features)
+    has_features = hb_ms_setup_features (features,
+					 num_features,
+					 feature_records,
+					 range_records);
+
+  hb_vector_t<hb_ms_features_t*> range_properties;
+  hb_vector_t<uint32_t> range_char_counts;
+
   unsigned int glyphs_offset = 0;
   unsigned int glyphs_len;
   bool backward = HB_DIRECTION_IS_BACKWARD (buffer->props.direction);
@@ -867,43 +742,15 @@
     unsigned int chars_offset = items[i].iCharPos;
     unsigned int item_chars_len = items[i + 1].iCharPos - chars_offset;
 
-    if (num_features)
-    {
-      range_properties.shrink (0);
-      range_char_counts.shrink (0);
+    if (has_features)
+      hb_ms_make_feature_ranges (feature_records,
+				 range_records,
+				 item_chars_len,
+				 chars_offset,
+				 log_clusters,
+				 range_properties,
+				 range_char_counts);
 
-      range_record_t *last_range = &range_records[0];
-
-      for (unsigned int k = chars_offset; k < chars_offset + item_chars_len; k++)
-      {
-	range_record_t *range = last_range;
-	while (log_clusters[k] < range->index_first)
-	  range--;
-	while (log_clusters[k] > range->index_last)
-	  range++;
-	if (!range_properties.length ||
-	    &range->props != range_properties[range_properties.length - 1])
-	{
-	  TEXTRANGE_PROPERTIES **props = range_properties.push ();
-	  int *c = range_char_counts.push ();
-	  if (unlikely (!props || !c))
-	  {
-	    range_properties.shrink (0);
-	    range_char_counts.shrink (0);
-	    break;
-	  }
-	  *props = &range->props;
-	  *c = 1;
-	}
-	else
-	{
-	  range_char_counts[range_char_counts.length - 1]++;
-	}
-
-	last_range = range;
-      }
-    }
-
     /* Asking for glyphs in logical order circumvents at least
      * one bug in Uniscribe. */
     items[i].a.fLogicalOrder = true;
@@ -914,8 +761,8 @@
 				     &items[i].a,
 				     script_tags[i],
 				     language_tag,
-				     range_char_counts.arrayZ,
-				     range_properties.arrayZ,
+				     (int *) range_char_counts.arrayZ,
+				     (TEXTRANGE_PROPERTIES**) range_properties.arrayZ,
 				     range_properties.length,
 				     pchars + chars_offset,
 				     item_chars_len,
@@ -955,8 +802,8 @@
 				     &items[i].a,
 				     script_tags[i],
 				     language_tag,
-				     range_char_counts.arrayZ,
-				     range_properties.arrayZ,
+				     (int *) range_char_counts.arrayZ,
+				     (TEXTRANGE_PROPERTIES**) range_properties.arrayZ,
 				     range_properties.length,
 				     pchars + chars_offset,
 				     log_clusters + chars_offset,

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-vector.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-vector.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-vector.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -69,7 +69,7 @@
 
   void fini ()
   {
-    free (arrayZ);
+    hb_free (arrayZ);
     init ();
   }
   void fini_deep ()
@@ -209,7 +209,7 @@
       (new_allocated < (unsigned) allocated) ||
       hb_unsigned_mul_overflows (new_allocated, sizeof (Type));
     if (likely (!overflows))
-      new_array = (Type *) realloc (arrayZ, new_allocated * sizeof (Type));
+      new_array = (Type *) hb_realloc (arrayZ, new_allocated * sizeof (Type));
 
     if (unlikely (!new_array))
     {
@@ -315,7 +315,7 @@
   { return as_array ().bsearch (x, not_found); }
   template <typename T>
   bool bfind (const T &x, unsigned int *i = nullptr,
-	      hb_bfind_not_found_t not_found = HB_BFIND_NOT_FOUND_DONT_STORE,
+	      hb_not_found_t not_found = HB_NOT_FOUND_DONT_STORE,
 	      unsigned int to_store = (unsigned int) -1) const
   { return as_array ().bfind (x, i, not_found, to_store); }
 };

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh	2021-08-29 04:06:16 UTC (rev 60356)
@@ -223,10 +223,15 @@
 extern "C" void* hb_calloc_impl(size_t nmemb, size_t size);
 extern "C" void* hb_realloc_impl(void *ptr, size_t size);
 extern "C" void  hb_free_impl(void *ptr);
-#define malloc hb_malloc_impl
-#define calloc hb_calloc_impl
-#define realloc hb_realloc_impl
-#define free hb_free_impl
+#define hb_malloc hb_malloc_impl
+#define hb_calloc hb_calloc_impl
+#define hb_realloc hb_realloc_impl
+#define hb_free hb_free_impl
+#else
+#define hb_malloc malloc
+#define hb_calloc calloc
+#define hb_realloc realloc
+#define hb_free free
 #endif
 
 
@@ -378,7 +383,7 @@
 #      define HB_NO_SETLOCALE
 #      define HB_NO_ERRNO
 #    endif
-#  elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+#  elif !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 #    ifndef HB_NO_GETENV
 #      define HB_NO_GETENV
 #    endif

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/main.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/main.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/main.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -33,12 +33,13 @@
 #include "hb.h"
 #include "hb-ot.h"
 
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
+#include <cassert>
+#include <cstdlib>
+#include <cstdio>
+#include <cstring>
 
 #ifdef HB_NO_OPEN
-#define hb_blob_create_from_file(x)  hb_blob_get_empty ()
+#define hb_blob_create_from_file_or_fail(x)  hb_blob_get_empty ()
 #endif
 
 #if !defined(HB_NO_COLOR) && !defined(HB_NO_DRAW) && defined(HB_EXPERIMENTAL_API)
@@ -505,7 +506,8 @@
     exit (1);
   }
 
-  hb_blob_t *blob = hb_blob_create_from_file (argv[1]);
+  hb_blob_t *blob = hb_blob_create_from_file_or_fail (argv[1]);
+  assert (blob);
   printf ("Opened font file %s: %d bytes long\n", argv[1], hb_blob_get_length (blob));
 #ifndef MAIN_CC_NO_PRIVATE_API
   print_layout_info_using_private_api (blob);

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build	2021-08-29 04:06:16 UTC (rev 60356)
@@ -53,6 +53,8 @@
   'hb-map.cc',
   'hb-map.hh',
   'hb-meta.hh',
+  'hb-ms-feature-ranges.cc',
+  'hb-ms-feature-ranges.hh',
   'hb-mutex.hh',
   'hb-null.hh',
   'hb-number.cc',

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-buffer-serialize.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-buffer-serialize.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-buffer-serialize.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -33,7 +33,7 @@
 #endif
 
 #ifdef HB_NO_OPEN
-#define hb_blob_create_from_file(x)  hb_blob_get_empty ()
+#define hb_blob_create_from_file_or_fail(x)  hb_blob_get_empty ()
 #endif
 
 int
@@ -48,7 +48,8 @@
     exit (1);
   }
 
-  hb_blob_t *blob = hb_blob_create_from_file (argv[1]);
+  hb_blob_t *blob = hb_blob_create_from_file_or_fail (argv[1]);
+  assert (blob);
   hb_face_t *face = hb_face_create (blob, 0 /* first face */);
   hb_blob_destroy (blob);
   blob = nullptr;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-gpos-size-params.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-gpos-size-params.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-gpos-size-params.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -30,7 +30,7 @@
 #include "hb-ot.h"
 
 #ifdef HB_NO_OPEN
-#define hb_blob_create_from_file(x)  hb_blob_get_empty ()
+#define hb_blob_create_from_file_or_fail(x)  hb_blob_get_empty ()
 #endif
 
 int
@@ -42,7 +42,8 @@
   }
 
   /* Create the face */
-  hb_blob_t *blob = hb_blob_create_from_file (argv[1]);
+  hb_blob_t *blob = hb_blob_create_from_file_or_fail (argv[1]);
+  assert (blob);
   hb_face_t *face = hb_face_create (blob, 0 /* first face */);
   hb_blob_destroy (blob);
   blob = nullptr;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-gsub-would-substitute.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-gsub-would-substitute.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-gsub-would-substitute.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -34,7 +34,7 @@
 #endif
 
 #ifdef HB_NO_OPEN
-#define hb_blob_create_from_file(x)  hb_blob_get_empty ()
+#define hb_blob_create_from_file_or_fail(x)  hb_blob_get_empty ()
 #endif
 
 int
@@ -46,7 +46,8 @@
   }
 
   /* Create the face */
-  hb_blob_t *blob = hb_blob_create_from_file (argv[1]);
+  hb_blob_t *blob = hb_blob_create_from_file_or_fail (argv[1]);
+  assert (blob);
   hb_face_t *face = hb_face_create (blob, 0 /* first face */);
   hb_blob_destroy (blob);
   blob = nullptr;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-glyphname.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-glyphname.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-glyphname.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -28,7 +28,7 @@
 #include "hb-ot.h"
 
 #ifdef HB_NO_OPEN
-#define hb_blob_create_from_file(x)  hb_blob_get_empty ()
+#define hb_blob_create_from_file_or_fail(x)  hb_blob_get_empty ()
 #endif
 
 int
@@ -39,7 +39,8 @@
     exit (1);
   }
 
-  hb_blob_t *blob = hb_blob_create_from_file (argv[1]);
+  hb_blob_t *blob = hb_blob_create_from_file_or_fail (argv[1]);
+  assert (blob);
   hb_face_t *face = hb_face_create (blob, 0 /* first face */);
   hb_font_t *font = hb_font_create (face);
   hb_blob_destroy (blob);

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-meta.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-meta.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-meta.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -26,7 +26,7 @@
 #include "hb-ot.h"
 
 #ifdef HB_NO_OPEN
-#define hb_blob_create_from_file(x)  hb_blob_get_empty ()
+#define hb_blob_create_from_file_or_fail(x)  hb_blob_get_empty ()
 #endif
 
 int
@@ -37,7 +37,8 @@
     exit (1);
   }
 
-  hb_blob_t *blob = hb_blob_create_from_file (argv[1]);
+  hb_blob_t *blob = hb_blob_create_from_file_or_fail (argv[1]);
+  assert (blob);
   hb_face_t *face = hb_face_create (blob, 0 /* first face */);
   hb_blob_destroy (blob);
   blob = nullptr;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-name.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-name.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-name.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -28,7 +28,7 @@
 #include "hb-ot.h"
 
 #ifdef HB_NO_OPEN
-#define hb_blob_create_from_file(x)  hb_blob_get_empty ()
+#define hb_blob_create_from_file_or_fail(x)  hb_blob_get_empty ()
 #endif
 
 int
@@ -39,7 +39,8 @@
     exit (1);
   }
 
-  hb_blob_t *blob = hb_blob_create_from_file (argv[1]);
+  hb_blob_t *blob = hb_blob_create_from_file_or_fail (argv[1]);
+  assert (blob);
   hb_face_t *face = hb_face_create (blob, 0 /* first face */);
   hb_blob_destroy (blob);
   blob = nullptr;

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-repacker.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-repacker.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test-repacker.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -377,8 +377,8 @@
 
   assert (actual == expected);
 
-  actual.free ();
-  expected.free ();
+  actual.fini ();
+  expected.fini ();
   free (buffer_1);
   free (buffer_2);
 }
@@ -438,7 +438,7 @@
   hb_bytes_t result = out.copy_bytes ();
   assert (result.length == (80000 + 3 + 3 * 2));
 
-  result.free ();
+  result.fini ();
   free (buffer);
   free (out_buffer);
 }
@@ -459,7 +459,7 @@
   hb_bytes_t result = out.copy_bytes ();
   assert (result.length == (10000 + 2 * 2 + 60000 + 2 + 3 * 2));
 
-  result.free ();
+  result.fini ();
   free (buffer);
   free (out_buffer);
 }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test.cc	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/test.cc	2021-08-29 04:06:16 UTC (rev 60356)
@@ -31,7 +31,7 @@
 #endif
 
 #ifdef HB_NO_OPEN
-#define hb_blob_create_from_file(x)  hb_blob_get_empty ()
+#define hb_blob_create_from_file_or_fail(x)  hb_blob_get_empty ()
 #endif
 
 int
@@ -42,7 +42,8 @@
     exit (1);
   }
 
-  hb_blob_t *blob = hb_blob_create_from_file (argv[1]);
+  hb_blob_t *blob = hb_blob_create_from_file_or_fail (argv[1]);
+  assert (blob);
   printf ("Opened font file %s: %u bytes long\n", argv[1], hb_blob_get_length (blob));
 
   /* Create the face */

Modified: trunk/Build/source/libs/harfbuzz/version.ac
===================================================================
--- trunk/Build/source/libs/harfbuzz/version.ac	2021-08-29 03:30:51 UTC (rev 60355)
+++ trunk/Build/source/libs/harfbuzz/version.ac	2021-08-29 04:06:16 UTC (rev 60356)
@@ -8,4 +8,4 @@
 dnl --------------------------------------------------------
 dnl
 dnl  m4-include this file to define the current harfbuzz version
-m4_define([harfbuzz_version], [2.8.1])
+m4_define([harfbuzz_version], [2.9.0])



More information about the tex-live-commits mailing list.