commit 9aa6f8a93f035dd0a1e3978da495d830049480c8
Author: Khaled Hosny <khaled@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@behdad.org>
Date:   Wed Aug 11 19:33:00 2021 -0600

    Merge branch 'main' into post-parse

commit 43722cc9f428bbfa759d4d93008ba4cf6efaceba
Author: Khaled Hosny <khaled@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@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@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@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@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@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@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@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
