usp10: Apply all the GSUB features specified in Microsofts Typesetting documentation for Arabic Shaping.
diff --git a/dlls/usp10/shape.c b/dlls/usp10/shape.c
index fe2ea53..0a4f5b9 100644
--- a/dlls/usp10/shape.c
+++ b/dlls/usp10/shape.c
@@ -194,6 +194,17 @@
     "medi"
 };
 
+static const char* arabic_GSUB_features[] =
+{
+    "rlig",
+    "calt",
+    "liga",
+    "dlig",
+    "cswh",
+    "mset",
+    NULL
+};
+
 static INT GSUB_is_glyph_covered(LPCVOID table , UINT glyph)
 {
     const GSUB_CoverageFormat1* cf1;
@@ -719,7 +730,12 @@
         }
     }
 
-    apply_GSUB_feature(hdc, psa, psc->GSUB_Table, pwOutGlyphs, dirL, pcGlyphs, "rlig");
+    i = 0;
+    while (arabic_GSUB_features[i] != NULL)
+    {
+        apply_GSUB_feature(hdc, psa, psc->GSUB_Table, pwOutGlyphs, dirL, pcGlyphs, arabic_GSUB_features[i]);
+        i++;
+    }
 
     HeapFree(GetProcessHeap(),0,context_shape);
     HeapFree(GetProcessHeap(),0,context_type);