diff --git a/Lib/fontTools/mtiLib/mti_test.py b/Lib/fontTools/mtiLib/mti_test.py
index 2a8083702..7b38eb0e0 100644
--- a/Lib/fontTools/mtiLib/mti_test.py
+++ b/Lib/fontTools/mtiLib/mti_test.py
@@ -20,6 +20,12 @@ class BuilderTest(unittest.TestCase):
#'mti/cmap',
),
'GSUB': (
+ 'featurename-backward',
+ 'featurename-forward',
+ 'lookupnames-backward',
+ 'lookupnames-forward',
+ 'mixed-toplevels',
+
'mti/scripttable',
'mti/chainedclass',
'mti/chainedcoverage',
diff --git a/Lib/fontTools/mtiLib/testdata/featurename-backward.ttx.GSUB b/Lib/fontTools/mtiLib/testdata/featurename-backward.ttx.GSUB
new file mode 100644
index 000000000..c80a96c10
--- /dev/null
+++ b/Lib/fontTools/mtiLib/testdata/featurename-backward.ttx.GSUB
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Lib/fontTools/mtiLib/testdata/featurename-backward.txt b/Lib/fontTools/mtiLib/testdata/featurename-backward.txt
new file mode 100644
index 000000000..7e3d5d614
--- /dev/null
+++ b/Lib/fontTools/mtiLib/testdata/featurename-backward.txt
@@ -0,0 +1,14 @@
+
+feature table begin
+f0 akhn l1
+1 akh2 l1
+feature table end
+
+script table begin
+telu default 0, 1
+tel2 default f0, 1
+script table end
+
+lookup l1 single
+a b
+lookup end
diff --git a/Lib/fontTools/mtiLib/testdata/featurename-forward.ttx.GSUB b/Lib/fontTools/mtiLib/testdata/featurename-forward.ttx.GSUB
new file mode 100644
index 000000000..c80a96c10
--- /dev/null
+++ b/Lib/fontTools/mtiLib/testdata/featurename-forward.ttx.GSUB
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Lib/fontTools/mtiLib/testdata/featurename-forward.txt b/Lib/fontTools/mtiLib/testdata/featurename-forward.txt
new file mode 100644
index 000000000..971ca763b
--- /dev/null
+++ b/Lib/fontTools/mtiLib/testdata/featurename-forward.txt
@@ -0,0 +1,14 @@
+
+script table begin
+telu default 0, 1
+tel2 default f0, 1
+script table end
+
+feature table begin
+f0 akhn l1
+1 akh2 l1
+feature table end
+
+lookup l1 single
+a b
+lookup end
diff --git a/Lib/fontTools/mtiLib/testdata/lookupnames-backward.ttx.GSUB b/Lib/fontTools/mtiLib/testdata/lookupnames-backward.ttx.GSUB
new file mode 100644
index 000000000..3f90ff27c
--- /dev/null
+++ b/Lib/fontTools/mtiLib/testdata/lookupnames-backward.ttx.GSUB
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Lib/fontTools/mtiLib/testdata/lookupnames-backward.txt b/Lib/fontTools/mtiLib/testdata/lookupnames-backward.txt
new file mode 100644
index 000000000..067d2c1a7
--- /dev/null
+++ b/Lib/fontTools/mtiLib/testdata/lookupnames-backward.txt
@@ -0,0 +1,36 @@
+
+lookup l1 single
+
+uvowelsignkannada uvowelsignaltkannada
+uuvowelsignkannada uuvowelsignaltkannada
+
+lookup end
+
+lookup l0 chained
+
+backtrackclass definition begin
+pakannada 1
+phakannada 1
+vakannada 1
+pevowelkannada 1
+phevowelkannada 1
+vevowelkannada 1
+class definition end
+
+class definition begin
+uvowelsignkannada 1
+uuvowelsignkannada 1
+class definition end
+
+class-chain 1 1 1,l1
+
+lookup end
+
+script table begin
+telu default 0, 1
+script table end
+
+feature table begin
+0 akhn l1
+1 akh2 l0
+feature table end
diff --git a/Lib/fontTools/mtiLib/testdata/lookupnames-forward.ttx.GSUB b/Lib/fontTools/mtiLib/testdata/lookupnames-forward.ttx.GSUB
new file mode 100644
index 000000000..d40bf1974
--- /dev/null
+++ b/Lib/fontTools/mtiLib/testdata/lookupnames-forward.ttx.GSUB
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Lib/fontTools/mtiLib/testdata/lookupnames-forward.txt b/Lib/fontTools/mtiLib/testdata/lookupnames-forward.txt
new file mode 100644
index 000000000..16c981929
--- /dev/null
+++ b/Lib/fontTools/mtiLib/testdata/lookupnames-forward.txt
@@ -0,0 +1,36 @@
+
+lookup l0 chained
+
+backtrackclass definition begin
+pakannada 1
+phakannada 1
+vakannada 1
+pevowelkannada 1
+phevowelkannada 1
+vevowelkannada 1
+class definition end
+
+class definition begin
+uvowelsignkannada 1
+uuvowelsignkannada 1
+class definition end
+
+class-chain 1 1 1,l1
+
+lookup end
+
+script table begin
+telu default 0, 1
+script table end
+
+lookup l1 single
+
+uvowelsignkannada uvowelsignaltkannada
+uuvowelsignkannada uuvowelsignaltkannada
+
+lookup end
+
+feature table begin
+0 akhn l1
+1 akh2 l0
+feature table end
diff --git a/Lib/fontTools/mtiLib/testdata/mixed-toplevels.ttx.GSUB b/Lib/fontTools/mtiLib/testdata/mixed-toplevels.ttx.GSUB
new file mode 100644
index 000000000..d40bf1974
--- /dev/null
+++ b/Lib/fontTools/mtiLib/testdata/mixed-toplevels.ttx.GSUB
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Lib/fontTools/mtiLib/testdata/mixed-toplevels.txt b/Lib/fontTools/mtiLib/testdata/mixed-toplevels.txt
new file mode 100644
index 000000000..dc090575d
--- /dev/null
+++ b/Lib/fontTools/mtiLib/testdata/mixed-toplevels.txt
@@ -0,0 +1,36 @@
+
+lookup 0 chained
+
+backtrackclass definition begin
+pakannada 1
+phakannada 1
+vakannada 1
+pevowelkannada 1
+phevowelkannada 1
+vevowelkannada 1
+class definition end
+
+class definition begin
+uvowelsignkannada 1
+uuvowelsignkannada 1
+class definition end
+
+class-chain 1 1 1,1
+
+lookup end
+
+script table begin
+telu default 0, 1
+script table end
+
+lookup 1 single
+
+uvowelsignkannada uvowelsignaltkannada
+uuvowelsignkannada uuvowelsignaltkannada
+
+lookup end
+
+feature table begin
+0 akhn 1
+1 akh2 0
+feature table end