Fix glyph closure for alternate substitution. It was not filtering on the glyphs to be retained.
diff --git a/src/hb-ot-layout-gsub-table.hh b/src/hb-ot-layout-gsub-table.hh index 90666d3..1526dd1 100644 --- a/src/hb-ot-layout-gsub-table.hh +++ b/src/hb-ot-layout-gsub-table.hh
@@ -605,6 +605,7 @@ void closure (hb_closure_context_t *c) const { + hb_zip (this+coverage, alternateSet) + | hb_filter(c->glyphs, hb_first) | hb_map (hb_second) | hb_map (hb_add (this)) | hb_apply ([c] (const AlternateSet &_) { _.closure (c); })
diff --git a/test/subset/data/Makefile.am b/test/subset/data/Makefile.am index 2070582..15f0811 100644 --- a/test/subset/data/Makefile.am +++ b/test/subset/data/Makefile.am
@@ -18,6 +18,7 @@ expected/layout.gpos3 \ expected/layout.gpos4 \ expected/layout.gpos6 \ + expected/layout.gsub3 \ expected/layout.gsub6 \ expected/cmap \ expected/cmap14 \
diff --git a/test/subset/data/Makefile.sources b/test/subset/data/Makefile.sources index 2b57ef0..dd4fff8 100644 --- a/test/subset/data/Makefile.sources +++ b/test/subset/data/Makefile.sources
@@ -10,6 +10,7 @@ tests/layout.gpos3.tests \ tests/layout.gpos4.tests \ tests/layout.gpos6.tests \ + tests/layout.gsub3.tests \ tests/layout.gsub6.tests \ tests/cmap.tests \ tests/cmap14.tests \
diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout-retain-gids.53A9,53F1.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout-retain-gids.53A9,53F1.otf new file mode 100644 index 0000000..1d67ee4 --- /dev/null +++ b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout-retain-gids.53A9,53F1.otf Binary files differ
diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout-retain-gids.53A9.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout-retain-gids.53A9.otf new file mode 100644 index 0000000..31fc761 --- /dev/null +++ b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout-retain-gids.53A9.otf Binary files differ
diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout-retain-gids.53F1.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout-retain-gids.53F1.otf new file mode 100644 index 0000000..2fd89a4 --- /dev/null +++ b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout-retain-gids.53F1.otf Binary files differ
diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout-retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout-retain-gids.retain-all-codepoint.otf new file mode 100644 index 0000000..e737ed1 --- /dev/null +++ b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout-retain-gids.retain-all-codepoint.otf Binary files differ
diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout.53A9,53F1.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout.53A9,53F1.otf new file mode 100644 index 0000000..685c2c9 --- /dev/null +++ b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout.53A9,53F1.otf Binary files differ
diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout.53A9.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout.53A9.otf new file mode 100644 index 0000000..fc1f61b --- /dev/null +++ b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout.53A9.otf Binary files differ
diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout.53F1.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout.53F1.otf new file mode 100644 index 0000000..367edeb --- /dev/null +++ b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout.53F1.otf Binary files differ
diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout.retain-all-codepoint.otf new file mode 100644 index 0000000..c55b233 --- /dev/null +++ b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.keep-layout.retain-all-codepoint.otf Binary files differ
diff --git a/test/subset/data/fonts/gsub_alternate_substitution.otf b/test/subset/data/fonts/gsub_alternate_substitution.otf new file mode 100644 index 0000000..188b8e8 --- /dev/null +++ b/test/subset/data/fonts/gsub_alternate_substitution.otf Binary files differ
diff --git a/test/subset/data/tests/layout.gsub3.tests b/test/subset/data/tests/layout.gsub3.tests new file mode 100644 index 0000000..45b85f5 --- /dev/null +++ b/test/subset/data/tests/layout.gsub3.tests
@@ -0,0 +1,12 @@ +FONTS: +gsub_alternate_substitution.otf + +PROFILES: +keep-layout.txt +keep-layout-retain-gids.txt + +SUBSETS: +厩 +叱 +厩叱 +*