[subset] never drop the 'pref' feature.
Never ever drop feature 'pref', even if it's empty. Harfbuzz uses it to choose the shaper for Khmer.
diff --git a/src/hb-ot-layout-gsubgpos.hh b/src/hb-ot-layout-gsubgpos.hh
index a9f6446..117aeaa 100644
--- a/src/hb-ot-layout-gsubgpos.hh
+++ b/src/hb-ot-layout-gsubgpos.hh
@@ -3728,6 +3728,13 @@
for (unsigned i : feature_indices->iter())
{
const Feature& f = get_feature (i);
+ hb_tag_t tag = get_feature_tag (i);
+ if (tag == HB_TAG ('p', 'r', 'e', 'f'))
+ // Note: Never ever drop feature 'pref', even if it's empty.
+ // HarfBuzz chooses shaper for Khmer based on presence of this
+ // feature. See thread at:
+ // http://lists.freedesktop.org/archives/harfbuzz/2012-November/002660.html
+ continue;
if (f.featureParams.is_null ()
&& !f.intersects_lookup_indexes (lookup_indices)
diff --git a/test/subset/data/Makefile.am b/test/subset/data/Makefile.am
index d16052b..03c32ba 100644
--- a/test/subset/data/Makefile.am
+++ b/test/subset/data/Makefile.am
@@ -26,6 +26,7 @@
expected/layout.gsub5 \
expected/layout.gsub6 \
expected/layout.gsub8 \
+ expected/layout.khmer \
expected/layout.gdef \
expected/layout.context \
expected/layout.gdef-varstore \
diff --git a/test/subset/data/Makefile.sources b/test/subset/data/Makefile.sources
index abb762a..dd71a11 100644
--- a/test/subset/data/Makefile.sources
+++ b/test/subset/data/Makefile.sources
@@ -25,6 +25,7 @@
tests/layout.gsub5.tests \
tests/layout.gsub6.tests \
tests/layout.gsub8.tests \
+ tests/layout.khmer.tests \
tests/layout.notonastaliqurdu.tests \
tests/layout.tests \
tests/sbix.tests \
diff --git a/test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.1780.ttf b/test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.1780.ttf
new file mode 100644
index 0000000..6f5e789
--- /dev/null
+++ b/test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.1780.ttf
Binary files differ
diff --git a/test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf b/test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf
new file mode 100644
index 0000000..572c41f
--- /dev/null
+++ b/test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf
Binary files differ
diff --git a/test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.31.ttf b/test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.31.ttf
new file mode 100644
index 0000000..31a6c1a
--- /dev/null
+++ b/test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.31.ttf
Binary files differ
diff --git a/test/subset/data/expected/layout.khmer/Khmer.keep-layout.1780.ttf b/test/subset/data/expected/layout.khmer/Khmer.keep-layout.1780.ttf
new file mode 100644
index 0000000..e3d9c8f
--- /dev/null
+++ b/test/subset/data/expected/layout.khmer/Khmer.keep-layout.1780.ttf
Binary files differ
diff --git a/test/subset/data/expected/layout.khmer/Khmer.keep-layout.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf b/test/subset/data/expected/layout.khmer/Khmer.keep-layout.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf
new file mode 100644
index 0000000..9c122b5
--- /dev/null
+++ b/test/subset/data/expected/layout.khmer/Khmer.keep-layout.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf
Binary files differ
diff --git a/test/subset/data/expected/layout.khmer/Khmer.keep-layout.31.ttf b/test/subset/data/expected/layout.khmer/Khmer.keep-layout.31.ttf
new file mode 100644
index 0000000..fb54e5b
--- /dev/null
+++ b/test/subset/data/expected/layout.khmer/Khmer.keep-layout.31.ttf
Binary files differ
diff --git a/test/subset/data/fonts/Khmer.ttf b/test/subset/data/fonts/Khmer.ttf
new file mode 100644
index 0000000..4c37487
--- /dev/null
+++ b/test/subset/data/fonts/Khmer.ttf
Binary files differ
diff --git a/test/subset/data/tests/layout.khmer.tests b/test/subset/data/tests/layout.khmer.tests
new file mode 100644
index 0000000..9e8a376
--- /dev/null
+++ b/test/subset/data/tests/layout.khmer.tests
@@ -0,0 +1,11 @@
+FONTS:
+Khmer.ttf
+
+PROFILES:
+keep-layout.txt
+keep-layout-retain-gids.txt
+
+SUBSETS:
+1
+ក
+ញុំបានមើ
diff --git a/test/subset/meson.build b/test/subset/meson.build
index d8bd328..d41c267 100644
--- a/test/subset/meson.build
+++ b/test/subset/meson.build
@@ -19,6 +19,7 @@
'layout.gsub6',
'layout.gsub8',
'layout.gdef',
+ 'layout.khmer',
'layout.context',
'layout.gdef-varstore',
'layout.gdef-attachlist',