[test/text-rendering-tests] Hook up font variations

Six more passing. Twelve failing now.
diff --git a/test/shaping/data/text-rendering-tests/extract-tests.py b/test/shaping/data/text-rendering-tests/extract-tests.py
index e871778..06978b1 100755
--- a/test/shaping/data/text-rendering-tests/extract-tests.py
+++ b/test/shaping/data/text-rendering-tests/extract-tests.py
@@ -32,6 +32,7 @@
 	name = elt.get(ns('ft:id'))
 	text = elt.get(ns('ft:render'))
 	font = elt.get(ns('ft:font'))
+	vars = elt.get(ns('ft:var'), '').replace(':', '=').replace(';', ',')
 	glyphs = []
 	for use in elt.findall(".//use"):
 		x = int(use.get('x'))
@@ -40,6 +41,9 @@
 		assert href[0] == '#'
 		glyphname = '.'.join(href[1:].split('/')[1].split('.')[1:])
 		glyphs.append((glyphname, x, y))
-	print("../fonts/%s:--font-size=1000 --ned --font-funcs=ft:%s:%s" % (font, unistr(text), glyphstr(glyphs)))
+	opts = '--font-size=1000 --ned --font-funcs=ft'
+	if vars:
+		opts = opts + ' --variations=%s' % vars
+	print ("../fonts/%s:%s:%s:%s" % (font, opts, unistr(text), glyphstr(glyphs)))
 
 sys.exit(0 if found else 1)
diff --git a/test/shaping/data/text-rendering-tests/tests/AVAR-1.tests b/test/shaping/data/text-rendering-tests/tests/AVAR-1.tests
index 3da6dc5..63172d6 100644
--- a/test/shaping/data/text-rendering-tests/tests/AVAR-1.tests
+++ b/test/shaping/data/text-rendering-tests/tests/AVAR-1.tests
@@ -1,17 +1,17 @@
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
-../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=100:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=150:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=200:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=250:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=300:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=350:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=400:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=450:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=500:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=550:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=600:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=650:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=700:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=750:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=800:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=850:U+2A01:[gid1]
+../fonts/TestAVAR.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=900:U+2A01:[gid1]
diff --git a/test/shaping/data/text-rendering-tests/tests/CFF2-1.tests b/test/shaping/data/text-rendering-tests/tests/CFF2-1.tests
index d2c9396..51da1ec 100644
--- a/test/shaping/data/text-rendering-tests/tests/CFF2-1.tests
+++ b/test/shaping/data/text-rendering-tests/tests/CFF2-1.tests
@@ -1,9 +1,9 @@
-../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft:U+0024:[dollar]
-../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft:U+0024:[dollar]
-../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft:U+0024:[dollar]
-../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft:U+0024:[dollar]
-../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft:U+0024:[dollar]
-../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft:U+0024:[dollar]
-../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft:U+0024:[dollar]
-../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft:U+0024:[dollar.nostroke]
-../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft:U+0024:[dollar.nostroke]
+../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft --variations=wght=100:U+0024:[dollar]
+../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft --variations=wght=200:U+0024:[dollar]
+../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft --variations=wght=300:U+0024:[dollar]
+../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft --variations=wght=400:U+0024:[dollar]
+../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft --variations=wght=500:U+0024:[dollar]
+../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft --variations=wght=600:U+0024:[dollar]
+../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft --variations=wght=700:U+0024:[dollar]
+../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft --variations=wght=800:U+0024:[dollar.nostroke]
+../fonts/AdobeVFPrototype-Subset.otf:--font-size=1000 --ned --font-funcs=ft --variations=wght=900:U+0024:[dollar.nostroke]
diff --git a/test/shaping/data/text-rendering-tests/tests/CVAR-1.tests b/test/shaping/data/text-rendering-tests/tests/CVAR-1.tests
index 70cb738..98f9275 100644
--- a/test/shaping/data/text-rendering-tests/tests/CVAR-1.tests
+++ b/test/shaping/data/text-rendering-tests/tests/CVAR-1.tests
@@ -1,3 +1,3 @@
-../fonts/TestCVARGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+0068,U+006F,U+006E:[uni0068|uni006F@595,0|uni006E@1126,0]
-../fonts/TestCVARGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+0068,U+006F,U+006E:[uni0068|uni006F@635,0|uni006E@1212,0]
-../fonts/TestCVARGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+0068,U+006F,U+006E:[uni0068|uni006F@691,0|uni006E@1331,0]
+../fonts/TestCVARGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=28,wdth=100,opsz=72:U+0068,U+006F,U+006E:[uni0068|uni006F@595,0|uni006E@1126,0]
+../fonts/TestCVARGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=94,wdth=100,opsz=72:U+0068,U+006F,U+006E:[uni0068|uni006F@635,0|uni006E@1212,0]
+../fonts/TestCVARGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=194,wdth=100,opsz=72:U+0068,U+006F,U+006E:[uni0068|uni006F@691,0|uni006E@1331,0]
diff --git a/test/shaping/data/text-rendering-tests/tests/CVAR-2.tests b/test/shaping/data/text-rendering-tests/tests/CVAR-2.tests
index 51de920..0db163a 100644
--- a/test/shaping/data/text-rendering-tests/tests/CVAR-2.tests
+++ b/test/shaping/data/text-rendering-tests/tests/CVAR-2.tests
@@ -1,3 +1,3 @@
-../fonts/TestCVARGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft:U+0068,U+006F,U+006E:[uni0068|uni006F@595,0|uni006E@1126,0]
-../fonts/TestCVARGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft:U+0068,U+006F,U+006E:[uni0068|uni006F@635,0|uni006E@1212,0]
-../fonts/TestCVARGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft:U+0068,U+006F,U+006E:[uni0068|uni006F@691,0|uni006E@1331,0]
+../fonts/TestCVARGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=28,wdth=100,opsz=72:U+0068,U+006F,U+006E:[uni0068|uni006F@595,0|uni006E@1126,0]
+../fonts/TestCVARGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=94,wdth=100,opsz=72:U+0068,U+006F,U+006E:[uni0068|uni006F@635,0|uni006E@1212,0]
+../fonts/TestCVARGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=194,wdth=100,opsz=72:U+0068,U+006F,U+006E:[uni0068|uni006F@691,0|uni006E@1331,0]
diff --git a/test/shaping/data/text-rendering-tests/tests/GPOS-5.tests b/test/shaping/data/text-rendering-tests/tests/GPOS-5.tests
index 00bfd58..f0a7357 100644
--- a/test/shaping/data/text-rendering-tests/tests/GPOS-5.tests
+++ b/test/shaping/data/text-rendering-tests/tests/GPOS-5.tests
@@ -1,5 +1,5 @@
-../fonts/TestGPOSFour.ttf:--font-size=1000 --ned --font-funcs=ft:U+0634,U+0652:[uni0652@663,144|uni0634]
-../fonts/TestGPOSFour.ttf:--font-size=1000 --ned --font-funcs=ft:U+0634,U+0652:[uni0652@680,165|uni0634]
-../fonts/TestGPOSFour.ttf:--font-size=1000 --ned --font-funcs=ft:U+0634,U+0652:[uni0652@730,246|uni0634]
-../fonts/TestGPOSFour.ttf:--font-size=1000 --ned --font-funcs=ft:U+0634,U+0652:[uni0652@750,282|uni0634]
-../fonts/TestGPOSFour.ttf:--font-size=1000 --ned --font-funcs=ft:U+0634,U+0652:[uni0652@784,351|uni0634]
+../fonts/TestGPOSFour.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=100:U+0634,U+0652:[uni0652@663,144|uni0634]
+../fonts/TestGPOSFour.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=300:U+0634,U+0652:[uni0652@680,165|uni0634]
+../fonts/TestGPOSFour.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=600:U+0634,U+0652:[uni0652@730,246|uni0634]
+../fonts/TestGPOSFour.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=700:U+0634,U+0652:[uni0652@750,282|uni0634]
+../fonts/TestGPOSFour.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=900:U+0634,U+0652:[uni0652@784,351|uni0634]
diff --git a/test/shaping/data/text-rendering-tests/tests/GVAR-1.tests b/test/shaping/data/text-rendering-tests/tests/GVAR-1.tests
index d70f229..620fcfc 100644
--- a/test/shaping/data/text-rendering-tests/tests/GVAR-1.tests
+++ b/test/shaping/data/text-rendering-tests/tests/GVAR-1.tests
@@ -1,9 +1,9 @@
-../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
+../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=300:U+5F4C:[gid2]
+../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=350:U+5F4C:[gid2]
+../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=400:U+5F4C:[gid2]
+../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=450:U+5F4C:[gid2]
+../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=500:U+5F4C:[gid2]
+../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=550:U+5F4C:[gid2]
+../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=600:U+5F4C:[gid2]
+../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=650:U+5F4C:[gid2]
+../fonts/TestGVAROne.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=700:U+5F4C:[gid2]
diff --git a/test/shaping/data/text-rendering-tests/tests/GVAR-2.tests b/test/shaping/data/text-rendering-tests/tests/GVAR-2.tests
index fe09777..3b2932c 100644
--- a/test/shaping/data/text-rendering-tests/tests/GVAR-2.tests
+++ b/test/shaping/data/text-rendering-tests/tests/GVAR-2.tests
@@ -1,9 +1,9 @@
-../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
+../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=300:U+5F4C:[gid2]
+../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=350:U+5F4C:[gid2]
+../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=400:U+5F4C:[gid2]
+../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=450:U+5F4C:[gid2]
+../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=500:U+5F4C:[gid2]
+../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=550:U+5F4C:[gid2]
+../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=600:U+5F4C:[gid2]
+../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=650:U+5F4C:[gid2]
+../fonts/TestGVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=700:U+5F4C:[gid2]
diff --git a/test/shaping/data/text-rendering-tests/tests/GVAR-3.tests b/test/shaping/data/text-rendering-tests/tests/GVAR-3.tests
index 700c735..05d0743 100644
--- a/test/shaping/data/text-rendering-tests/tests/GVAR-3.tests
+++ b/test/shaping/data/text-rendering-tests/tests/GVAR-3.tests
@@ -1,9 +1,9 @@
-../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
-../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft:U+5F4C:[gid2]
+../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=300:U+5F4C:[gid2]
+../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=350:U+5F4C:[gid2]
+../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=400:U+5F4C:[gid2]
+../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=450:U+5F4C:[gid2]
+../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=500:U+5F4C:[gid2]
+../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=550:U+5F4C:[gid2]
+../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=600:U+5F4C:[gid2]
+../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=650:U+5F4C:[gid2]
+../fonts/TestGVARThree.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=700:U+5F4C:[gid2]
diff --git a/test/shaping/data/text-rendering-tests/tests/GVAR-4.tests b/test/shaping/data/text-rendering-tests/tests/GVAR-4.tests
index f51a95c..700a287 100644
--- a/test/shaping/data/text-rendering-tests/tests/GVAR-4.tests
+++ b/test/shaping/data/text-rendering-tests/tests/GVAR-4.tests
@@ -1,11 +1,11 @@
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F98E:[gid5]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F98E:[gid5]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F98E:[gid5]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F98E:[gid5]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F98E:[gid5]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F98E:[gid5]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F98E:[gid5]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F98E:[gid5]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F98E:[gid5]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F98E:[gid5]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F98E:[gid5]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=-1.0,T1=0.0:U+1F98E:[gid5]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=-0.8,T1=0.1:U+1F98E:[gid5]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=-0.6,T1=0.2:U+1F98E:[gid5]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=-0.4,T1=0.3:U+1F98E:[gid5]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=-0.2,T1=0.4:U+1F98E:[gid5]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=0.0,T1=0.5:U+1F98E:[gid5]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=0.2,T1=0.6:U+1F98E:[gid5]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=0.4,T1=0.7:U+1F98E:[gid5]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=0.6,T1=0.8:U+1F98E:[gid5]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=0.8,T1=0.9:U+1F98E:[gid5]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=1.0,T1=1.0:U+1F98E:[gid5]
diff --git a/test/shaping/data/text-rendering-tests/tests/GVAR-5.tests b/test/shaping/data/text-rendering-tests/tests/GVAR-5.tests
index 7328e73..27670f1 100644
--- a/test/shaping/data/text-rendering-tests/tests/GVAR-5.tests
+++ b/test/shaping/data/text-rendering-tests/tests/GVAR-5.tests
@@ -1,11 +1,11 @@
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F31D:[gid15]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F31D:[gid15]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F31D:[gid15]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F31D:[gid15]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F31D:[gid15]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F31D:[gid15]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F31D:[gid15]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F31D:[gid15]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F31D:[gid15]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F31D:[gid15]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F31D:[gid15]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=-1.0:U+1F31D:[gid15]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=-0.8:U+1F31D:[gid15]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=-0.6:U+1F31D:[gid15]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=-0.4:U+1F31D:[gid15]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=-0.2:U+1F31D:[gid15]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=0.0:U+1F31D:[gid15]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=0.2:U+1F31D:[gid15]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=0.4:U+1F31D:[gid15]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=0.6:U+1F31D:[gid15]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=0.8:U+1F31D:[gid15]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=M1=1.0:U+1F31D:[gid15]
diff --git a/test/shaping/data/text-rendering-tests/tests/GVAR-6.tests b/test/shaping/data/text-rendering-tests/tests/GVAR-6.tests
index c632d46..61e060a 100644
--- a/test/shaping/data/text-rendering-tests/tests/GVAR-6.tests
+++ b/test/shaping/data/text-rendering-tests/tests/GVAR-6.tests
@@ -1,11 +1,11 @@
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F422:[gid12]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F422:[gid12]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F422:[gid12]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F422:[gid12]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F422:[gid12]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F422:[gid12]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F422:[gid12]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F422:[gid12]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F422:[gid12]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F422:[gid12]
-../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft:U+1F422:[gid12]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=T1=0.0:U+1F422:[gid12]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=T1=0.1:U+1F422:[gid12]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=T1=0.2:U+1F422:[gid12]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=T1=0.3:U+1F422:[gid12]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=T1=0.4:U+1F422:[gid12]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=T1=0.5:U+1F422:[gid12]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=T1=0.6:U+1F422:[gid12]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=T1=0.7:U+1F422:[gid12]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=T1=0.8:U+1F422:[gid12]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=T1=0.9:U+1F422:[gid12]
+../fonts/Zycon.ttf:--font-size=1000 --ned --font-funcs=ft --variations=T1=1.0:U+1F422:[gid12]
diff --git a/test/shaping/data/text-rendering-tests/tests/GVAR-7.tests b/test/shaping/data/text-rendering-tests/tests/GVAR-7.tests
index bc06d56..1280d71 100644
--- a/test/shaping/data/text-rendering-tests/tests/GVAR-7.tests
+++ b/test/shaping/data/text-rendering-tests/tests/GVAR-7.tests
@@ -1,7 +1,7 @@
-../fonts/TestGVARFour.ttf:--font-size=1000 --ned --font-funcs=ft:U+004F,U+0049,U+004F:[uni004F|uni0049@706,0|uni004F@1072,0]
-../fonts/TestGVARFour.ttf:--font-size=1000 --ned --font-funcs=ft:U+004F,U+0049,U+004F:[uni004F|uni0049@707,0|uni004F@1074,0]
-../fonts/TestGVARFour.ttf:--font-size=1000 --ned --font-funcs=ft:U+004F,U+0049,U+004F:[uni004F|uni0049@707,0|uni004F@1075,0]
-../fonts/TestGVARFour.ttf:--font-size=1000 --ned --font-funcs=ft:U+004F,U+0049,U+004F:[uni004F|uni0049@707,0|uni004F@1076,0]
-../fonts/TestGVARFour.ttf:--font-size=1000 --ned --font-funcs=ft:U+004F,U+0049,U+004F:[uni004F|uni0049@707,0|uni004F@1077,0]
-../fonts/TestGVARFour.ttf:--font-size=1000 --ned --font-funcs=ft:U+004F,U+0049,U+004F:[uni004F|uni0049@707,0|uni004F@1078,0]
-../fonts/TestGVARFour.ttf:--font-size=1000 --ned --font-funcs=ft:U+004F,U+0049,U+004F:[uni004F|uni0049@706,0|uni004F@1079,0]
+../fonts/TestGVARFour.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=150:U+004F,U+0049,U+004F:[uni004F|uni0049@706,0|uni004F@1072,0]
+../fonts/TestGVARFour.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=200:U+004F,U+0049,U+004F:[uni004F|uni0049@707,0|uni004F@1074,0]
+../fonts/TestGVARFour.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=250:U+004F,U+0049,U+004F:[uni004F|uni0049@707,0|uni004F@1075,0]
+../fonts/TestGVARFour.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=300:U+004F,U+0049,U+004F:[uni004F|uni0049@707,0|uni004F@1076,0]
+../fonts/TestGVARFour.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=350:U+004F,U+0049,U+004F:[uni004F|uni0049@707,0|uni004F@1077,0]
+../fonts/TestGVARFour.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=400:U+004F,U+0049,U+004F:[uni004F|uni0049@707,0|uni004F@1078,0]
+../fonts/TestGVARFour.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=450:U+004F,U+0049,U+004F:[uni004F|uni0049@706,0|uni004F@1079,0]
diff --git a/test/shaping/data/text-rendering-tests/tests/GVAR-8.tests b/test/shaping/data/text-rendering-tests/tests/GVAR-8.tests
index e5bd257..209f325 100644
--- a/test/shaping/data/text-rendering-tests/tests/GVAR-8.tests
+++ b/test/shaping/data/text-rendering-tests/tests/GVAR-8.tests
@@ -1,6 +1,6 @@
-../fonts/TestGVAREight.ttf:--font-size=1000 --ned --font-funcs=ft:U+0048:[H]
-../fonts/TestGVAREight.ttf:--font-size=1000 --ned --font-funcs=ft:U+0048:[H]
-../fonts/TestGVAREight.ttf:--font-size=1000 --ned --font-funcs=ft:U+0048:[H]
-../fonts/TestGVAREight.ttf:--font-size=1000 --ned --font-funcs=ft:U+0048:[H]
-../fonts/TestGVAREight.ttf:--font-size=1000 --ned --font-funcs=ft:U+0048:[H]
-../fonts/TestGVAREight.ttf:--font-size=1000 --ned --font-funcs=ft:U+0048:[H]
+../fonts/TestGVAREight.ttf:--font-size=1000 --ned --font-funcs=ft --variations=HV=0.0:U+0048:[H]
+../fonts/TestGVAREight.ttf:--font-size=1000 --ned --font-funcs=ft --variations=HV=-0.2:U+0048:[H]
+../fonts/TestGVAREight.ttf:--font-size=1000 --ned --font-funcs=ft --variations=HV=-0.4:U+0048:[H]
+../fonts/TestGVAREight.ttf:--font-size=1000 --ned --font-funcs=ft --variations=HV=-0.6:U+0048:[H]
+../fonts/TestGVAREight.ttf:--font-size=1000 --ned --font-funcs=ft --variations=HV=-0.8:U+0048:[H]
+../fonts/TestGVAREight.ttf:--font-size=1000 --ned --font-funcs=ft --variations=HV=-1.0:U+0048:[H]
diff --git a/test/shaping/data/text-rendering-tests/tests/GVAR-9.tests b/test/shaping/data/text-rendering-tests/tests/GVAR-9.tests
index e4f2d75..ababf5d 100644
--- a/test/shaping/data/text-rendering-tests/tests/GVAR-9.tests
+++ b/test/shaping/data/text-rendering-tests/tests/GVAR-9.tests
@@ -1,10 +1,10 @@
-../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041:[A]
-../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041:[A]
-../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041:[A]
-../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041:[A]
-../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041:[A]
-../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041:[A]
-../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041:[A]
-../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041:[A]
-../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041:[A]
-../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041:[A]
+../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=-1.0:U+0041:[A]
+../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=-0.5:U+0041:[A]
+../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=0.0:U+0041:[A]
+../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=0.5:U+0041:[A]
+../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=0.6:U+0041:[A]
+../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=0.7:U+0041:[A]
+../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=0.8:U+0041:[A]
+../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=0.9:U+0041:[A]
+../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=0.944444:U+0041:[A]
+../fonts/TestGVARNine.ttf:--font-size=1000 --ned --font-funcs=ft --variations=TEST=1.0:U+0041:[A]
diff --git a/test/shaping/data/text-rendering-tests/tests/HVAR-1.tests b/test/shaping/data/text-rendering-tests/tests/HVAR-1.tests
index d57e9a3..d5dea06 100644
--- a/test/shaping/data/text-rendering-tests/tests/HVAR-1.tests
+++ b/test/shaping/data/text-rendering-tests/tests/HVAR-1.tests
@@ -1,6 +1,6 @@
-../fonts/TestHVAROne.otf:--font-size=1000 --ned --font-funcs=ft:U+0041,U+0042,U+0043:[A|B@520,0|C@1094,0]
-../fonts/TestHVAROne.otf:--font-size=1000 --ned --font-funcs=ft:U+0041,U+0042,U+0043:[A|B@533,0|C@1115,0]
-../fonts/TestHVAROne.otf:--font-size=1000 --ned --font-funcs=ft:U+0041,U+0042,U+0043:[A|B@546,0|C@1135,0]
-../fonts/TestHVAROne.otf:--font-size=1000 --ned --font-funcs=ft:U+0041,U+0042,U+0043:[A|B@558,0|C@1155,0]
-../fonts/TestHVAROne.otf:--font-size=1000 --ned --font-funcs=ft:U+0041,U+0042,U+0043:[A|B@571,0|C@1175,0]
-../fonts/TestHVAROne.otf:--font-size=1000 --ned --font-funcs=ft:U+0041,U+0042,U+0043:[A|B@584,0|C@1196,0]
+../fonts/TestHVAROne.otf:--font-size=1000 --ned --font-funcs=ft --variations=wght=0:U+0041,U+0042,U+0043:[A|B@520,0|C@1094,0]
+../fonts/TestHVAROne.otf:--font-size=1000 --ned --font-funcs=ft --variations=wght=200:U+0041,U+0042,U+0043:[A|B@533,0|C@1115,0]
+../fonts/TestHVAROne.otf:--font-size=1000 --ned --font-funcs=ft --variations=wght=400:U+0041,U+0042,U+0043:[A|B@546,0|C@1135,0]
+../fonts/TestHVAROne.otf:--font-size=1000 --ned --font-funcs=ft --variations=wght=600:U+0041,U+0042,U+0043:[A|B@558,0|C@1155,0]
+../fonts/TestHVAROne.otf:--font-size=1000 --ned --font-funcs=ft --variations=wght=800:U+0041,U+0042,U+0043:[A|B@571,0|C@1175,0]
+../fonts/TestHVAROne.otf:--font-size=1000 --ned --font-funcs=ft --variations=wght=1000:U+0041,U+0042,U+0043:[A|B@584,0|C@1196,0]
diff --git a/test/shaping/data/text-rendering-tests/tests/HVAR-2.tests b/test/shaping/data/text-rendering-tests/tests/HVAR-2.tests
index 88d90b5..23113b0 100644
--- a/test/shaping/data/text-rendering-tests/tests/HVAR-2.tests
+++ b/test/shaping/data/text-rendering-tests/tests/HVAR-2.tests
@@ -1,6 +1,6 @@
-../fonts/TestHVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041,U+0042:[uni0041|uni0042@450,0]
-../fonts/TestHVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041,U+0042:[uni0041|uni0042@515,0]
-../fonts/TestHVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041,U+0042:[uni0041|uni0042@584,0]
-../fonts/TestHVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041,U+0042:[uni0041|uni0042@673,0]
-../fonts/TestHVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041,U+0042:[uni0041|uni0042@761,0]
-../fonts/TestHVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft:U+0041,U+0042:[uni0041|uni0042@850,0]
+../fonts/TestHVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=0:U+0041,U+0042:[uni0041|uni0042@450,0]
+../fonts/TestHVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=200:U+0041,U+0042:[uni0041|uni0042@515,0]
+../fonts/TestHVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=400:U+0041,U+0042:[uni0041|uni0042@584,0]
+../fonts/TestHVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=600:U+0041,U+0042:[uni0041|uni0042@673,0]
+../fonts/TestHVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=800:U+0041,U+0042:[uni0041|uni0042@761,0]
+../fonts/TestHVARTwo.ttf:--font-size=1000 --ned --font-funcs=ft --variations=wght=1000:U+0041,U+0042:[uni0041|uni0042@850,0]