Support Persian Keyboard

This is a first trial implementation based on Arabic layout.

Bug: 5456620
Change-Id: Ifa21d7fbd408853a44678623c13b9c078283732c
diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml
index f153a7d..7b526c0 100644
--- a/java/res/xml/key_styles_common.xml
+++ b/java/res/xml/key_styles_common.xml
@@ -108,6 +108,14 @@
         latin:keyActionFlags="noKeyPreview|enableLongPress"
         latin:backgroundType="functional" />
     <key-style
+        latin:styleName="zwnjKeyStyle"
+        latin:keyLabel="&#x200C;"
+        latin:moreKeys="&#x200D;"
+        latin:keyLabelFlags="hasPopupHint"
+        latin:altCode="@integer/key_space"
+        latin:keyActionFlags="altCodeWhileTyping"
+        latin:backgroundType="functional" />
+    <key-style
         latin:styleName="shortcutKeyStyle"
         latin:code="@integer/key_shortcut"
         latin:keyIcon="iconShortcutKey"
@@ -123,6 +131,8 @@
         latin:keyActionFlags="noKeyPreview|altCodeWhileTyping|enableLongPress"
         latin:altCode="@integer/key_space"
         latin:backgroundType="functional" />
+    <!-- U+200C: "" ZERO WIDTH NON-JOINER
+         U+200D: "" ZERO WIDTH JOINER -->
     <key-style
         latin:styleName="tabKeyStyle"
         latin:code="@integer/key_tab"
diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index f330b26..cdcea0e 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -33,6 +33,7 @@
     en_GB: English Great Britain/qwerty
     es: Spanish/spanish
     et: Estonian/nordic
+    fa: Persian/arabic
     fi: Finnish/nordic
     fr: French/azerty
     fr_CA: French Canada/qwerty
@@ -140,6 +141,12 @@
     />
     <subtype android:icon="@drawable/ic_subtype_keyboard"
             android:label="@string/subtype_generic"
+            android:imeSubtypeLocale="fa"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="SupportTouchPositionCorrection"
+    />
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:label="@string/subtype_generic"
             android:imeSubtypeLocale="fi"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection"
diff --git a/java/res/xml/row_qwerty4.xml b/java/res/xml/row_qwerty4.xml
index 0dd2177..b2b47e9 100644
--- a/java/res/xml/row_qwerty4.xml
+++ b/java/res/xml/row_qwerty4.xml
@@ -59,6 +59,28 @@
         </switch>
         <switch>
             <case
+                latin:languageCode="fa"
+                latin:languageSwitchKeyEnabled="true"
+            >
+                <Key
+                    latin:keyStyle="languageSwitchKeyStyle" />
+                <Key
+                    latin:keyStyle="spaceKeyStyle"
+                    latin:keyWidth="30%p" />
+                <Key
+                    latin:keyStyle="zwnjKeyStyle" />
+            </case>
+            <case
+                latin:languageCode="fa"
+                latin:languageSwitchKeyEnabled="false"
+            >
+                <Key
+                    latin:keyStyle="spaceKeyStyle"
+                    latin:keyWidth="40%p" />
+                <Key
+                    latin:keyStyle="zwnjKeyStyle" />
+            </case>
+            <case
                 latin:languageSwitchKeyEnabled="true"
             >
                 <Key