diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml
index ddf7f7f0b9b745d914b964f3ac38f67e17381974..a1546f11db08104a06ea0ccfda5fd8b7fe6a066a 100644
--- a/java/res/values-land/dimens.xml
+++ b/java/res/values-land/dimens.xml
@@ -55,10 +55,10 @@
     <fraction name="spacebar_text_ratio">40.000%</fraction>
     <dimen name="key_preview_offset">0.0dp</dimen>
 
-    <!-- For 5-rows keyboard -->
-    <fraction name="key_bottom_gap_5rows">3.20%p</fraction>
-    <fraction name="key_letter_ratio_5rows">78%</fraction>
-    <fraction name="key_uppercase_letter_ratio_5rows">48%</fraction>
+    <!-- For 5-row keyboard -->
+    <fraction name="key_bottom_gap_5row">3.20%p</fraction>
+    <fraction name="key_letter_ratio_5row">78%</fraction>
+    <fraction name="key_uppercase_letter_ratio_5row">48%</fraction>
 
     <dimen name="key_preview_offset_ics">1.6dp</dimen>
     <!-- popup_key_height x -0.5 -->
diff --git a/java/res/values-sw600dp-land/dimens.xml b/java/res/values-sw600dp-land/dimens.xml
index 4daa567d4465eb3c887996ff2e22ac937328b98a..9664bf9ed07d144e429b0271454b7e926073f96e 100644
--- a/java/res/values-sw600dp-land/dimens.xml
+++ b/java/res/values-sw600dp-land/dimens.xml
@@ -53,10 +53,10 @@
     <fraction name="spacebar_text_ratio">30.0%</fraction>
     <dimen name="key_uppercase_letter_padding">4dp</dimen>
 
-    <!-- For 50rows keyboard -->
-    <fraction name="key_bottom_gap_5rows">3.20%p</fraction>
-    <fraction name="key_letter_ratio_5rows">62%</fraction>
-    <fraction name="key_uppercase_letter_ratio_5rows">36%</fraction>
+    <!-- For 5-row keyboard -->
+    <fraction name="key_bottom_gap_5row">3.20%p</fraction>
+    <fraction name="key_letter_ratio_5row">62%</fraction>
+    <fraction name="key_uppercase_letter_ratio_5row">36%</fraction>
 
     <dimen name="suggestions_strip_padding">252.0dp</dimen>
     <integer name="max_more_suggestions_row">5</integer>
diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml
index e5c32a3de5c61060e0a90f3ff3170e70e768e318..e608f7d7bc01a4c1087284c62c45dc3bbb2901da 100644
--- a/java/res/values-sw600dp/dimens.xml
+++ b/java/res/values-sw600dp/dimens.xml
@@ -66,10 +66,10 @@
     <dimen name="key_preview_height">94.5dp</dimen>
     <dimen name="key_preview_offset">16.0dp</dimen>
 
-    <!-- For 50rows keyboard -->
-    <fraction name="key_bottom_gap_5rows">3.20%p</fraction>
-    <fraction name="key_letter_ratio_5rows">52%</fraction>
-    <fraction name="key_uppercase_letter_ratio_5rows">27%</fraction>
+    <!-- For 5-row keyboard -->
+    <fraction name="key_bottom_gap_5row">3.20%p</fraction>
+    <fraction name="key_letter_ratio_5row">52%</fraction>
+    <fraction name="key_uppercase_letter_ratio_5row">27%</fraction>
 
     <dimen name="key_preview_offset_ics">8.0dp</dimen>
     <!-- popup_key_height x -0.5 -->
diff --git a/java/res/values-sw768dp-land/dimens.xml b/java/res/values-sw768dp-land/dimens.xml
index 8f3de55b31fbf89718ab01cbd3e4888e5755f4aa..5112170683804526693612c4982243181aa20bc7 100644
--- a/java/res/values-sw768dp-land/dimens.xml
+++ b/java/res/values-sw768dp-land/dimens.xml
@@ -55,10 +55,10 @@
     <fraction name="spacebar_text_ratio">24.00%</fraction>
     <dimen name="key_preview_height">107.1dp</dimen>
 
-    <!-- For 5-rows keyboard -->
-    <fraction name="key_bottom_gap_5rows">2.65%p</fraction>
-    <fraction name="key_letter_ratio_5rows">53%</fraction>
-    <fraction name="key_uppercase_letter_ratio_5rows">30%</fraction>
+    <!-- For 5-row keyboard -->
+    <fraction name="key_bottom_gap_5row">2.65%p</fraction>
+    <fraction name="key_letter_ratio_5row">53%</fraction>
+    <fraction name="key_uppercase_letter_ratio_5row">30%</fraction>
 
     <dimen name="key_preview_offset_ics">8.0dp</dimen>
 
diff --git a/java/res/values-sw768dp/dimens.xml b/java/res/values-sw768dp/dimens.xml
index 7caa9843f6b0e6fe7a7eb8b1a0d5dd98cd9247e4..ec9d759881b4c427b1dc4acea41781a3ac4dbe9a 100644
--- a/java/res/values-sw768dp/dimens.xml
+++ b/java/res/values-sw768dp/dimens.xml
@@ -67,10 +67,10 @@
     <dimen name="key_preview_height">94.5dp</dimen>
     <dimen name="key_preview_offset">16.0dp</dimen>
 
-    <!-- For 5-rows keyboard -->
-    <fraction name="key_bottom_gap_5rows">2.95%p</fraction>
-    <fraction name="key_letter_ratio_5rows">51%</fraction>
-    <fraction name="key_uppercase_letter_ratio_5rows">33%</fraction>
+    <!-- For 5-row keyboard -->
+    <fraction name="key_bottom_gap_5row">2.95%p</fraction>
+    <fraction name="key_letter_ratio_5row">51%</fraction>
+    <fraction name="key_uppercase_letter_ratio_5row">33%</fraction>
 
     <dimen name="key_preview_offset_ics">8.0dp</dimen>
     <!-- popup_key_height x -0.5 -->
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index 22cd3255bafea51ef645db6b01a46f8f80da8f10..aa16c7770100c1a0b659828a80d5636be9a8c180 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -73,10 +73,10 @@
     <dimen name="key_popup_hint_letter_padding">2dp</dimen>
     <dimen name="key_uppercase_letter_padding">2dp</dimen>
 
-    <!-- For 5-rows keyboard -->
-    <fraction name="key_bottom_gap_5rows">3.20%p</fraction>
-    <fraction name="key_letter_ratio_5rows">64%</fraction>
-    <fraction name="key_uppercase_letter_ratio_5rows">41%</fraction>
+    <!-- For 5-row keyboard -->
+    <fraction name="key_bottom_gap_5row">3.20%p</fraction>
+    <fraction name="key_letter_ratio_5row">64%</fraction>
+    <fraction name="key_uppercase_letter_ratio_5row">41%</fraction>
 
     <dimen name="key_preview_offset_ics">8.0dp</dimen>
     <!-- popup_key_height x -0.5 -->
diff --git a/java/res/xml-sw600dp-land/kbd_thai.xml b/java/res/xml-sw600dp-land/kbd_thai.xml
index e29ddb53194df9ebdba5c0d241beafe2836a30f5..b4a4a0b925d839ce0f45a3c244ac84135438c705 100644
--- a/java/res/xml-sw600dp-land/kbd_thai.xml
+++ b/java/res/xml-sw600dp-land/kbd_thai.xml
@@ -20,11 +20,10 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyTypeface="normal"
     latin:rowHeight="20%p"
-    latin:verticalGap="@fraction/key_bottom_gap_5rows"
-    latin:keyLetterSize="@fraction/key_letter_ratio_5rows"
-    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5rows"
+    latin:verticalGap="@fraction/key_bottom_gap_5row"
+    latin:keyLetterSize="@fraction/key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5row"
     latin:touchPositionCorrectionData="@null"
 >
     <include
diff --git a/java/res/xml-sw600dp/kbd_thai.xml b/java/res/xml-sw600dp/kbd_thai.xml
index e29ddb53194df9ebdba5c0d241beafe2836a30f5..b4a4a0b925d839ce0f45a3c244ac84135438c705 100644
--- a/java/res/xml-sw600dp/kbd_thai.xml
+++ b/java/res/xml-sw600dp/kbd_thai.xml
@@ -20,11 +20,10 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyTypeface="normal"
     latin:rowHeight="20%p"
-    latin:verticalGap="@fraction/key_bottom_gap_5rows"
-    latin:keyLetterSize="@fraction/key_letter_ratio_5rows"
-    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5rows"
+    latin:verticalGap="@fraction/key_bottom_gap_5row"
+    latin:keyLetterSize="@fraction/key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5row"
     latin:touchPositionCorrectionData="@null"
 >
     <include
diff --git a/java/res/xml-sw600dp/rowkeys_thai1.xml b/java/res/xml-sw600dp/rowkeys_thai1.xml
index 6aec7c2c5d1bed7fed095515e68365ece4462db2..842bf05eea8d67b4db3cfcd2be713a27a5d4c2b1 100644
--- a/java/res/xml-sw600dp/rowkeys_thai1.xml
+++ b/java/res/xml-sw600dp/rowkeys_thai1.xml
@@ -27,71 +27,104 @@
         >
             <!-- U+0E51: "๑" THAI DIGIT ONE -->
             <Key
-                latin:keyLabel="&#x0E51;" />
+                latin:keyLabel="&#x0E51;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E52: "๒" THAI DIGIT TWO -->
             <Key
-                latin:keyLabel="&#x0E52;" />
+                latin:keyLabel="&#x0E52;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E53: "๓" THAI DIGIT THREE -->
             <Key
-                latin:keyLabel="&#x0E53;" />
+                latin:keyLabel="&#x0E53;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E54: "๔" THAI DIGIT FOUR -->
             <Key
-                latin:keyLabel="&#x0E54;" />
-            <!-- U+0E39: " ู" THAI CHARACTER SARA UU -->
+                latin:keyLabel="&#x0E54;"
+                latin:keyLabelFlags="fontNormal" />
+            <!-- U+0020: " " SPACE
+                 U+0E39: " ู" THAI CHARACTER SARA UU -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x0E39;" />
+                latin:keyLabel="&#x20;&#x0E39;"
+                latin:code="0x0E39"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
             <!-- U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT -->
             <Key
-                latin:keyLabel="&#x0E3F;" />
+                latin:keyLabel="&#x0E3F;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E55: "๕" THAI DIGIT FIVE -->
             <Key
-                latin:keyLabel="&#x0E55;" />
+                latin:keyLabel="&#x0E55;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E56: "๖" THAI DIGIT SIX -->
             <Key
-                latin:keyLabel="&#x0E56;" />
+                latin:keyLabel="&#x0E56;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E57: "๗" THAI DIGIT SEVEN -->
             <Key
-                latin:keyLabel="&#x0E57;" />
+                latin:keyLabel="&#x0E57;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E58: "๘" THAI DIGIT EIGHT -->
             <Key
-                latin:keyLabel="&#x0E58;" />
+                latin:keyLabel="&#x0E58;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E59: "๙" THAI DIGIT NINE -->
             <Key
-                latin:keyLabel="&#x0E59;" />
+                latin:keyLabel="&#x0E59;"
+                latin:keyLabelFlags="fontNormal" />
         </case>
         <default>
             <!-- U+0E45: "ๅ" THAI CHARACTER LAKKHANGYAO -->
             <Key
-                latin:keyLabel="&#x0E45;" />
+                latin:keyLabel="&#x0E45;"
+                latin:keyLabelFlags="fontNormal" />
             <Key
                 latin:keyLabel="/" />
             <!-- U+0E20: "ภ" THAI CHARACTER PHO SAMPHAO -->
             <Key
-                latin:keyLabel="&#x0E20;" />
+                latin:keyLabel="&#x0E20;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E16: "ถ" THAI CHARACTER THO THUNG -->
             <Key
-                latin:keyLabel="&#x0E16;" />
-            <!-- U+0E38: " ุ" THAI CHARACTER SARA U -->
-            <Key
-                latin:keyLabel="&#x0E38;" />
-            <!-- U+0E36: " ึ" THAI CHARACTER SARA UE -->
-            <Key
-                latin:keyLabel="&#x0E36;" />
+                latin:keyLabel="&#x0E16;"
+                latin:keyLabelFlags="fontNormal" />
+            <!-- U+0020: " " SPACE
+                 U+0E38: " ุ" THAI CHARACTER SARA U -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
+            <Key
+                latin:keyLabel="&#x20;&#x0E38;"
+                latin:code="0x0E38"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+            <!-- U+0020: " " SPACE
+                 U+0E36: " ึ" THAI CHARACTER SARA UE -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
+            <Key
+                latin:keyLabel="&#x20;&#x0E36;"
+                latin:code="0x0E36"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
             <!-- U+0E04: "ค" THAI CHARACTER KHO KHWAI -->
             <Key
-                latin:keyLabel="&#x0E04;" />
+                latin:keyLabel="&#x0E04;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E15: "ต" THAI CHARACTER TO TAO -->
             <Key
-                latin:keyLabel="&#x0E15;" />
+                latin:keyLabel="&#x0E15;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E08: "จ" THAI CHARACTER CHO CHAN -->
             <Key
-                latin:keyLabel="&#x0E08;" />
+                latin:keyLabel="&#x0E08;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E02: "ข" THAI CHARACTER KHO KHAI -->
             <Key
-                latin:keyLabel="&#x0E02;" />
+                latin:keyLabel="&#x0E02;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E0A: "ช" THAI CHARACTER CHO CHANG -->
             <Key
-                latin:keyLabel="&#x0E0A;" />
+                latin:keyLabel="&#x0E0A;"
+                latin:keyLabelFlags="fontNormal" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml-sw600dp/rowkeys_thai2.xml b/java/res/xml-sw600dp/rowkeys_thai2.xml
index edb759a89c95d759c14f3923df2e5efc76e30fd9..71ab2c9dff8121e8e9ad9eeaed0f3a79210464fd 100644
--- a/java/res/xml-sw600dp/rowkeys_thai2.xml
+++ b/java/res/xml-sw600dp/rowkeys_thai2.xml
@@ -27,82 +27,122 @@
         >
             <!-- U+0E50: "๐" THAI DIGIT ZERO -->
             <Key
-                latin:keyLabel="&#x0E50;" />
+                latin:keyLabel="&#x0E50;"
+                latin:keyLabelFlags="fontNormal" />
             <Key
                 latin:keyLabel="&quot;" />
             <!-- U+0E0E: "ฎ" THAI CHARACTER DO CHADA -->
             <Key
-                latin:keyLabel="&#x0E0E;" />
+                latin:keyLabel="&#x0E0E;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E11: "ฑ" THAI CHARACTER THO NANGMONTHO -->
             <Key
-                latin:keyLabel="&#x0E11;" />
+                latin:keyLabel="&#x0E11;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E18: "ธ" THAI CHARACTER THO THONG -->
             <Key
-                latin:keyLabel="&#x0E18;" />
-            <!-- U+0E4D: " ํ" THAI CHARACTER THANTHAKHAT -->
-            <Key
-                latin:keyLabel="&#x0E4D;" />
-            <!-- U+0E4A: " ๊" THAI CHARACTER MAI TRI -->
-            <Key
-                latin:keyLabel="&#x0E4A;" />
+                latin:keyLabel="&#x0E18;"
+                latin:keyLabelFlags="fontNormal" />
+            <!-- U+0020: " " SPACE
+                 U+0E4D: " ํ" THAI CHARACTER THANTHAKHAT -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
+            <Key
+                latin:keyLabel="&#x20;&#x0E4D;"
+                latin:code="0x0E4D"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+            <!-- U+0020: " " SPACE
+                 U+0E4A: " ๊" THAI CHARACTER MAI TRI -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
+            <Key
+                latin:keyLabel="&#x20;&#x0E4A;"
+                latin:code="0x0E4A"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
             <!-- U+0E13: "ณ" THAI CHARACTER NO NEN -->
             <Key
-                latin:keyLabel="&#x0E13;" />
+                latin:keyLabel="&#x0E13;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E2F: "ฯ" THAI CHARACTER PAIYANNOI -->
             <Key
-                latin:keyLabel="&#x0E2F;" />
+                latin:keyLabel="&#x0E2F;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E0D: "ญ" THAI CHARACTER YO YING -->
             <Key
-                latin:keyLabel="&#x0E0D;" />
+                latin:keyLabel="&#x0E0D;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E10: "ฐ" THAI CHARACTER THO THAN -->
             <Key
-                latin:keyLabel="&#x0E10;" />
+                latin:keyLabel="&#x0E10;"
+                latin:keyLabelFlags="fontNormal" />
             <Key
                 latin:keyLabel="," />
             <!-- U+0E05: "ฅ" THAI CHARACTER KHO KHON -->
             <Key
-                latin:keyLabel="&#x0E05;" />
+                latin:keyLabel="&#x0E05;"
+                latin:keyLabelFlags="fontNormal" />
         </case>
         <default>
             <!-- U+0E46: "ๆ" THAI CHARACTER MAIYAMOK -->
             <Key
-                latin:keyLabel="&#x0E46;" />
+                latin:keyLabel="&#x0E46;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E44: "ไ" THAI CHARACTER SARA AI MAIMALAI -->
             <Key
-                latin:keyLabel="&#x0E44;" />
+                latin:keyLabel="&#x0E44;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E33: "ำ" THAI CHARACTER SARA AM -->
             <Key
-                latin:keyLabel="&#x0E33;" />
+                latin:keyLabel="&#x0E33;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E1E: "พ" THAI CHARACTER PHO PHAN -->
             <Key
-                latin:keyLabel="&#x0E1E;" />
+                latin:keyLabel="&#x0E1E;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E30: "ะ" THAI CHARACTER SARA A -->
             <Key
-                latin:keyLabel="&#x0E30;" />
-            <!-- U+0E31: " ั" THAI CHARACTER MAI HAN-AKAT -->
-            <Key
-                latin:keyLabel="&#x0E31;" />
-            <!-- U+0E35: " ี" HAI CHARACTER SARA II -->
-            <Key
-                latin:keyLabel="&#x0E35;" />
+                latin:keyLabel="&#x0E30;"
+                latin:keyLabelFlags="fontNormal" />
+            <!-- U+0020: " " SPACE
+                 U+0E31: " ั" THAI CHARACTER MAI HAN-AKAT -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
+            <Key
+                latin:keyLabel="&#x20;&#x0E31;"
+                latin:code="0x0E31"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+            <!-- U+0020: " " SPACE
+                 U+0E35: " ี" HAI CHARACTER SARA II -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
+            <Key
+                latin:keyLabel="&#x20;&#x0E35;"
+                latin:code="0x0E35"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
             <!-- U+0E23: "ร" THAI CHARACTER RO RUA -->
             <Key
-                latin:keyLabel="&#x0E23;" />
+                latin:keyLabel="&#x0E23;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E19: "น" THAI CHARACTER NO NU -->
             <Key
-                latin:keyLabel="&#x0E19;" />
+                latin:keyLabel="&#x0E19;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E22: "ย" THAI CHARACTER YO YAK -->
             <Key
-                latin:keyLabel="&#x0E22;" />
+                latin:keyLabel="&#x0E22;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E1A: "บ" THAI CHARACTER BO BAIMAI -->
             <Key
-                latin:keyLabel="&#x0E1A;" />
+                latin:keyLabel="&#x0E1A;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E25: "ล" THAI CHARACTER LO LING -->
             <Key
-                latin:keyLabel="&#x0E25;" />
+                latin:keyLabel="&#x0E25;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E03: "ฃ" THAI CHARACTER KHO KHUAT -->
             <Key
-                latin:keyLabel="&#x0E03;" />
+                latin:keyLabel="&#x0E03;"
+                latin:keyLabelFlags="fontNormal" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml-sw600dp/rowkeys_thai3.xml b/java/res/xml-sw600dp/rowkeys_thai3.xml
index 7507dde86e50bec4c85df4f226b5143b1dd4e657..b9d1475ab0589715eafb4a22db10c79194adb07d 100644
--- a/java/res/xml-sw600dp/rowkeys_thai3.xml
+++ b/java/res/xml-sw600dp/rowkeys_thai3.xml
@@ -27,71 +27,108 @@
         >
             <!-- U+0E24: "ฤ" THAI CHARACTER RU -->
             <Key
-                latin:keyLabel="&#x0E24;" />
+                latin:keyLabel="&#x0E24;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E06: "ฆ" THAI CHARACTER KHO RAKHANG -->
             <Key
-                latin:keyLabel="&#x0E06;" />
+                latin:keyLabel="&#x0E06;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E0F: "ฏ" THAI CHARACTER TO PATAK -->
             <Key
-                latin:keyLabel="&#x0E0F;" />
+                latin:keyLabel="&#x0E0F;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E42: "โ" THAI CHARACTER SARA O -->
             <Key
-                latin:keyLabel="&#x0E42;" />
+                latin:keyLabel="&#x0E42;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E0C: "ฌ" THAI CHARACTER CHO CHOE -->
             <Key
-                latin:keyLabel="&#x0E0C;" />
-            <!-- U+0E47: " ็" THAI CHARACTER MAITAIKHU -->
-            <Key
-                latin:keyLabel="&#x0E47;" />
-            <!-- U+0E4B: " ๋" THAI CHARACTER MAI CHATTAWA -->
-            <Key
-                latin:keyLabel="&#x0E4B;" />
+                latin:keyLabel="&#x0E0C;"
+                latin:keyLabelFlags="fontNormal" />
+            <!-- U+0020: " " SPACE
+                 U+0E47: " ็" THAI CHARACTER MAITAIKHU -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
+            <Key
+                latin:keyLabel="&#x20;&#x0E47;"
+                latin:code="0x0E47"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+            <!-- U+0020: " " SPACE
+                 U+0E4B: " ๋" THAI CHARACTER MAI CHATTAWA -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
+            <Key
+                latin:keyLabel="&#x20;&#x0E4B;"
+                latin:code="0x0E4B"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
             <!-- U+0E29: "ษ" THAI CHARACTER SO RUSI -->
             <Key
-                latin:keyLabel="&#x0E29;" />
+                latin:keyLabel="&#x0E29;"
+                latin:keyLabelFlags="fontNormal" />
             <!--  U+0E28: "ศ" THAI CHARACTER SO SALA -->
             <Key
-                latin:keyLabel="&#x0E28;" />
+                latin:keyLabel="&#x0E28;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E0B: "ซ" THAI CHARACTER SO SO -->
             <Key
-                latin:keyLabel="&#x0E0B;" />
+                latin:keyLabel="&#x0E0B;"
+                latin:keyLabelFlags="fontNormal" />
             <Key
                 latin:keyLabel="." />
         </case>
         <default>
             <!-- U+0E1F: "ฟ" THAI CHARACTER FO FAN -->
             <Key
-                latin:keyLabel="&#x0E1F;" />
+                latin:keyLabel="&#x0E1F;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E2B: "ห" THAI CHARACTER HO HIP -->
             <Key
-                latin:keyLabel="&#x0E2B;" />
+                latin:keyLabel="&#x0E2B;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E01: "ก" THAI CHARACTER KO KAI -->
             <Key
-                latin:keyLabel="&#x0E01;" />
+                latin:keyLabel="&#x0E01;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E14: "ด" THAI CHARACTER DO DEK -->
             <Key
-                latin:keyLabel="&#x0E14;" />
+                latin:keyLabel="&#x0E14;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E40: "เ" THAI CHARACTER SARA E -->
             <Key
-                latin:keyLabel="&#x0E40;" />
-            <!-- U+0E49: " ้" THAI CHARACTER MAI THO -->
-            <Key
-                latin:keyLabel="&#x0E49;" />
-            <!-- U+0E48: " ฺ" THAI CHARACTER MAI EK -->
-            <Key
-                latin:keyLabel="&#x0E48;" />
+                latin:keyLabel="&#x0E40;"
+                latin:keyLabelFlags="fontNormal" />
+            <!-- U+0020: " " SPACE
+                 U+0E49: " ้" THAI CHARACTER MAI THO -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
+            <Key
+                latin:keyLabel="&#x20;&#x0E49;"
+                latin:code="0x0E49"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+            <!-- U+0020: " " SPACE
+                 U+0E48: " ฺ" THAI CHARACTER MAI EK -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
+            <Key
+                latin:keyLabel="&#x20;&#x0E48;"
+                latin:code="0x0E48"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
             <!-- U+0E32: "า" THAI CHARACTER SARA AA -->
             <Key
-                latin:keyLabel="&#x0E32;" />
+                latin:keyLabel="&#x0E32;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E2A: "ส" THAI CHARACTER SO SUA -->
             <Key
-                latin:keyLabel="&#x0E2A;" />
+                latin:keyLabel="&#x0E2A;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E27: "ว" THAI CHARACTER WO WAEN -->
             <Key
-                latin:keyLabel="&#x0E27;" />
+                latin:keyLabel="&#x0E27;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E07: "ง" THAI CHARACTER NGO NGU -->
             <Key
-                latin:keyLabel="&#x0E07;" />
+                latin:keyLabel="&#x0E07;"
+                latin:keyLabelFlags="fontNormal" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml-sw600dp/rowkeys_thai4.xml b/java/res/xml-sw600dp/rowkeys_thai4.xml
index 64549bdce5ac909f49dfcb8a20416a6ea0b7a5b0..8a784242c58f063eb9db564fe2797ea508bf722a 100644
--- a/java/res/xml-sw600dp/rowkeys_thai4.xml
+++ b/java/res/xml-sw600dp/rowkeys_thai4.xml
@@ -31,59 +31,92 @@
                 latin:keyLabel=")" />
             <!-- U+0E09: "ฉ" THAI CHARACTER CHO CHING -->
             <Key
-                latin:keyLabel="&#x0E09;" />
+                latin:keyLabel="&#x0E09;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E2E: "ฮ" THAI CHARACTER HO NOKHUK -->
             <Key
-                latin:keyLabel="&#x0E2E;" />
-            <!-- U+0E3A: " ฺ" THAI CHARACTER PHINTHU -->
-            <Key
-                latin:keyLabel="&#x0E3A;" />
-            <!-- U+0E4C: " ์" THAI CHARACTER THANTHAKHAT -->
-            <Key
-                latin:keyLabel="&#x0E4C;" />
+                latin:keyLabel="&#x0E2E;"
+                latin:keyLabelFlags="fontNormal" />
+            <!-- U+0020: " " SPACE
+                 U+0E3A: " ฺ" THAI CHARACTER PHINTHU -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
+            <Key
+                latin:keyLabel="&#x20;&#x0E3A;"
+                latin:code="0x0E3A"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+            <!-- U+0020: " " SPACE
+                 U+0E4C: " ์" THAI CHARACTER THANTHAKHAT -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
+            <Key
+                latin:keyLabel="&#x20;&#x0E4C;"
+                latin:code="0x0E4C"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
             <Key
                 latin:keyLabel="\?" />
             <!-- U+0E12: "ฒ" THAI CHARACTER THO PHUTHAO -->
             <Key
-                latin:keyLabel="&#x0E12;" />
+                latin:keyLabel="&#x0E12;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E2C: "ฬ" THAI CHARACTER LO CHULA -->
             <Key
-                latin:keyLabel="&#x0E2C;" />
+                latin:keyLabel="&#x0E2C;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E26: "ฦ" THAI CHARACTER LU -->
             <Key
-                latin:keyLabel="&#x0E26;" />
+                latin:keyLabel="&#x0E26;"
+                latin:keyLabelFlags="fontNormal" />
         </case>
         <default>
             <!-- U+0E1C: "ผ" THAI CHARACTER PHO PHUNG -->
             <Key
-                latin:keyLabel="&#x0E1C;" />
+                latin:keyLabel="&#x0E1C;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E1B: "ป" THAI CHARACTER PO PLA -->
             <Key
-                latin:keyLabel="&#x0E1B;" />
+                latin:keyLabel="&#x0E1B;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E41: "แ" THAI CHARACTER SARA AE -->
             <Key
-                latin:keyLabel="&#x0E41;" />
+                latin:keyLabel="&#x0E41;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E2D: "อ" THAI CHARACTER O ANG -->
             <Key
-                latin:keyLabel="&#x0E2D;" />
-            <!-- U+0E34: " ิ" THAI CHARACTER SARA I -->
-            <Key
-                latin:keyLabel="&#x0E34;" />
-            <!-- U+0E37: " ื" THAI CHARACTER SARA UEE -->
-            <Key
-                latin:keyLabel="&#x0E37;" />
+                latin:keyLabel="&#x0E2D;"
+                latin:keyLabelFlags="fontNormal" />
+            <!-- U+0020: " " SPACE
+                 U+0E34: " ิ" THAI CHARACTER SARA I -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
+            <Key
+                latin:keyLabel="&#x20;&#x0E34;"
+                latin:code="0x0E34"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+            <!-- U+0020: " " SPACE
+                 U+0E37: " ื" THAI CHARACTER SARA UEE -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
+            <Key
+                latin:keyLabel="&#x20;&#x0E37;"
+                latin:code="0x0E37"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
             <!-- U+0E17: "ท" THAI CHARACTER THO THAHAN -->
             <Key
-                latin:keyLabel="&#x0E17;" />
+                latin:keyLabel="&#x0E17;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E21: "ม" THAI CHARACTER MO MA -->
             <Key
-                latin:keyLabel="&#x0E21;" />
+                latin:keyLabel="&#x0E21;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E43: "ใ" THAI CHARACTER SARA AI MAIMUAN -->
             <Key
-                latin:keyLabel="&#x0E43;" />
+                latin:keyLabel="&#x0E43;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E1D: "ฝ" THAI CHARACTER FO FA -->
             <Key
-                latin:keyLabel="&#x0E1D;" />
+                latin:keyLabel="&#x0E1D;"
+                latin:keyLabelFlags="fontNormal" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml-sw768dp-land/kbd_thai.xml b/java/res/xml-sw768dp-land/kbd_thai.xml
index e29ddb53194df9ebdba5c0d241beafe2836a30f5..b4a4a0b925d839ce0f45a3c244ac84135438c705 100644
--- a/java/res/xml-sw768dp-land/kbd_thai.xml
+++ b/java/res/xml-sw768dp-land/kbd_thai.xml
@@ -20,11 +20,10 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyTypeface="normal"
     latin:rowHeight="20%p"
-    latin:verticalGap="@fraction/key_bottom_gap_5rows"
-    latin:keyLetterSize="@fraction/key_letter_ratio_5rows"
-    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5rows"
+    latin:verticalGap="@fraction/key_bottom_gap_5row"
+    latin:keyLetterSize="@fraction/key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5row"
     latin:touchPositionCorrectionData="@null"
 >
     <include
diff --git a/java/res/xml-sw768dp-land/kbd_thai_symbols.xml b/java/res/xml-sw768dp-land/kbd_thai_symbols.xml
index a5bb3eed957d2ad13697d9a007a6b441825e4f7c..0cd9a61ea861e872446d96965adb021764fb570e 100644
--- a/java/res/xml-sw768dp-land/kbd_thai_symbols.xml
+++ b/java/res/xml-sw768dp-land/kbd_thai_symbols.xml
@@ -21,9 +21,9 @@
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     latin:rowHeight="20%p"
-    latin:verticalGap="@fraction/key_bottom_gap_5rows"
-    latin:keyLetterSize="@fraction/key_letter_ratio_5rows"
-    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5rows"
+    latin:verticalGap="@fraction/key_bottom_gap_5row"
+    latin:keyLetterSize="@fraction/key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5row"
     latin:touchPositionCorrectionData="@null"
 >
     <include
diff --git a/java/res/xml-sw768dp-land/kbd_thai_symbols_shift.xml b/java/res/xml-sw768dp-land/kbd_thai_symbols_shift.xml
index d011dff6942060d70150103f7a73df72ac093151..a68fec458bc0eb041324e59b81857730e7e4c61a 100644
--- a/java/res/xml-sw768dp-land/kbd_thai_symbols_shift.xml
+++ b/java/res/xml-sw768dp-land/kbd_thai_symbols_shift.xml
@@ -21,9 +21,9 @@
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     latin:rowHeight="20%p"
-    latin:verticalGap="@fraction/key_bottom_gap_5rows"
-    latin:keyLetterSize="@fraction/key_letter_ratio_5rows"
-    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5rows"
+    latin:verticalGap="@fraction/key_bottom_gap_5row"
+    latin:keyLetterSize="@fraction/key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5row"
     latin:touchPositionCorrectionData="@null"
 >
     <include
diff --git a/java/res/xml-sw768dp/kbd_thai.xml b/java/res/xml-sw768dp/kbd_thai.xml
index e29ddb53194df9ebdba5c0d241beafe2836a30f5..b4a4a0b925d839ce0f45a3c244ac84135438c705 100644
--- a/java/res/xml-sw768dp/kbd_thai.xml
+++ b/java/res/xml-sw768dp/kbd_thai.xml
@@ -20,11 +20,10 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyTypeface="normal"
     latin:rowHeight="20%p"
-    latin:verticalGap="@fraction/key_bottom_gap_5rows"
-    latin:keyLetterSize="@fraction/key_letter_ratio_5rows"
-    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5rows"
+    latin:verticalGap="@fraction/key_bottom_gap_5row"
+    latin:keyLetterSize="@fraction/key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5row"
     latin:touchPositionCorrectionData="@null"
 >
     <include
diff --git a/java/res/xml-sw768dp/kbd_thai_symbols.xml b/java/res/xml-sw768dp/kbd_thai_symbols.xml
index a5bb3eed957d2ad13697d9a007a6b441825e4f7c..0cd9a61ea861e872446d96965adb021764fb570e 100644
--- a/java/res/xml-sw768dp/kbd_thai_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_thai_symbols.xml
@@ -21,9 +21,9 @@
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     latin:rowHeight="20%p"
-    latin:verticalGap="@fraction/key_bottom_gap_5rows"
-    latin:keyLetterSize="@fraction/key_letter_ratio_5rows"
-    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5rows"
+    latin:verticalGap="@fraction/key_bottom_gap_5row"
+    latin:keyLetterSize="@fraction/key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5row"
     latin:touchPositionCorrectionData="@null"
 >
     <include
diff --git a/java/res/xml-sw768dp/kbd_thai_symbols_shift.xml b/java/res/xml-sw768dp/kbd_thai_symbols_shift.xml
index d011dff6942060d70150103f7a73df72ac093151..a68fec458bc0eb041324e59b81857730e7e4c61a 100644
--- a/java/res/xml-sw768dp/kbd_thai_symbols_shift.xml
+++ b/java/res/xml-sw768dp/kbd_thai_symbols_shift.xml
@@ -21,9 +21,9 @@
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     latin:rowHeight="20%p"
-    latin:verticalGap="@fraction/key_bottom_gap_5rows"
-    latin:keyLetterSize="@fraction/key_letter_ratio_5rows"
-    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5rows"
+    latin:verticalGap="@fraction/key_bottom_gap_5row"
+    latin:keyLetterSize="@fraction/key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5row"
     latin:touchPositionCorrectionData="@null"
 >
     <include
diff --git a/java/res/xml-sw768dp/rowkeys_thai_digits.xml b/java/res/xml-sw768dp/rowkeys_thai_digits.xml
index 5122830967bc03e0e9e59c69828a9c21b4985969..55196ebc396d40295ae7e0c6a76e7b16d00e0352 100644
--- a/java/res/xml-sw768dp/rowkeys_thai_digits.xml
+++ b/java/res/xml-sw768dp/rowkeys_thai_digits.xml
@@ -23,32 +23,42 @@
 >
     <!-- U+0E51: "๑" THAI DIGIT ONE -->
     <Key
-        latin:keyLabel="&#x0E51;" />
+        latin:keyLabel="&#x0E51;"
+        latin:keyLabelFlags="fontNormal" />
     <!-- U+0E52: "๒" THAI DIGIT TWO -->
     <Key
-        latin:keyLabel="&#x0E52;" />
+        latin:keyLabel="&#x0E52;"
+        latin:keyLabelFlags="fontNormal" />
     <!-- U+0E53: "๓" THAI DIGIT THREE -->
     <Key
-        latin:keyLabel="&#x0E53;" />
+        latin:keyLabel="&#x0E53;"
+        latin:keyLabelFlags="fontNormal" />
     <!-- U+0E54: "๔" THAI DIGIT FOUR -->
     <Key
-        latin:keyLabel="&#x0E54;" />
+        latin:keyLabel="&#x0E54;"
+        latin:keyLabelFlags="fontNormal" />
     <!-- U+0E55: "๕" THAI DIGIT FIVE -->
     <Key
-        latin:keyLabel="&#x0E55;" />
+        latin:keyLabel="&#x0E55;"
+        latin:keyLabelFlags="fontNormal" />
     <!-- U+0E56: "๖" THAI DIGIT SIX -->
     <Key
-        latin:keyLabel="&#x0E56;" />
+        latin:keyLabel="&#x0E56;"
+        latin:keyLabelFlags="fontNormal" />
     <!-- U+0E57: "๗" THAI DIGIT SEVEN -->
     <Key
-        latin:keyLabel="&#x0E57;" />
+        latin:keyLabel="&#x0E57;"
+        latin:keyLabelFlags="fontNormal" />
     <!-- U+0E58: "๘" THAI DIGIT EIGHT -->
     <Key
-        latin:keyLabel="&#x0E58;" />
+        latin:keyLabel="&#x0E58;"
+        latin:keyLabelFlags="fontNormal" />
     <!-- U+0E59: "๙" THAI DIGIT NINE -->
     <Key
-        latin:keyLabel="&#x0E59;" />
+        latin:keyLabel="&#x0E59;"
+        latin:keyLabelFlags="fontNormal" />
     <!-- U+0E50: "๐" THAI DIGIT ZERO -->
     <Key
-        latin:keyLabel="&#x0E50;" />
+        latin:keyLabel="&#x0E50;"
+        latin:keyLabelFlags="fontNormal" />
 </merge>
diff --git a/java/res/xml/kbd_pcqwerty.xml b/java/res/xml/kbd_pcqwerty.xml
index a6ab2baff5801bb597283c4fd7fdc990adbf6644..777c71af33ab497dce468d3a38bca9e5e42adf83 100644
--- a/java/res/xml/kbd_pcqwerty.xml
+++ b/java/res/xml/kbd_pcqwerty.xml
@@ -21,9 +21,9 @@
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     latin:rowHeight="20%p"
-    latin:verticalGap="@fraction/key_bottom_gap_5rows"
-    latin:keyLetterSize="@fraction/key_letter_ratio_5rows"
-    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5rows"
+    latin:verticalGap="@fraction/key_bottom_gap_5row"
+    latin:keyLetterSize="@fraction/key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5row"
     latin:touchPositionCorrectionData="@null"
 >
     <include
diff --git a/java/res/xml/kbd_pcqwerty_symbols.xml b/java/res/xml/kbd_pcqwerty_symbols.xml
index e86274809f352fe18f14a1c8b7a5bfad86bc4fd9..a2297f702647a42f497a87bccbf95c14f98a9196 100644
--- a/java/res/xml/kbd_pcqwerty_symbols.xml
+++ b/java/res/xml/kbd_pcqwerty_symbols.xml
@@ -21,9 +21,9 @@
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     latin:rowHeight="20%p"
-    latin:verticalGap="@fraction/key_bottom_gap_5rows"
-    latin:keyLetterSize="@fraction/key_letter_ratio_5rows"
-    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5rows"
+    latin:verticalGap="@fraction/key_bottom_gap_5row"
+    latin:keyLetterSize="@fraction/key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5row"
     latin:touchPositionCorrectionData="@null"
 >
     <include
diff --git a/java/res/xml/kbd_thai.xml b/java/res/xml/kbd_thai.xml
index b015d70632d5acaeccc91f60a874574b608cd086..058ca16a3ee7d5079e97caa36db2101d467d998c 100644
--- a/java/res/xml/kbd_thai.xml
+++ b/java/res/xml/kbd_thai.xml
@@ -20,7 +20,6 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyTypeface="normal"
 >
     <include
         latin:keyboardLayout="@xml/rows_thai" />
diff --git a/java/res/xml/rowkeys_thai1.xml b/java/res/xml/rowkeys_thai1.xml
index 4b49da171910dbcf28c0cde71625d51e06ca6d41..e175befb3b1bbf6a8487f494999c09395056e8e2 100644
--- a/java/res/xml/rowkeys_thai1.xml
+++ b/java/res/xml/rowkeys_thai1.xml
@@ -27,28 +27,36 @@
         >
             <!-- U+0E0E: "ฎ" THAI CHARACTER DO CHADA -->
             <Key
-                latin:keyLabel="&#x0E0E;" />
+                latin:keyLabel="&#x0E0E;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E11: "ฑ" THAI CHARACTER THO NANGMONTHO -->
             <Key
-                latin:keyLabel="&#x0E11;" />
+                latin:keyLabel="&#x0E11;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E18: "ธ" THAI CHARACTER THO THONG -->
             <Key
-                latin:keyLabel="&#x0E18;" />
+                latin:keyLabel="&#x0E18;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E13: "ณ" THAI CHARACTER NO NEN -->
             <Key
-                latin:keyLabel="&#x0E13;" />
+                latin:keyLabel="&#x0E13;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E0D: "ญ" THAI CHARACTER YO YING -->
             <Key
-                latin:keyLabel="&#x0E0D;" />
+                latin:keyLabel="&#x0E0D;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E10: "ฐ" THAI CHARACTER THO THAN -->
             <Key
-                latin:keyLabel="&#x0E10;" />
+                latin:keyLabel="&#x0E10;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E03: "ฃ" THAI CHARACTER KHO KHUAT -->
             <Key
-                latin:keyLabel="&#x0E03;" />
+                latin:keyLabel="&#x0E03;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E05: "ฅ" THAI CHARACTER KHO KHON -->
             <Key
-                latin:keyLabel="&#x0E05;" />
+                latin:keyLabel="&#x0E05;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E51: "๑" THAI DIGIT ONE
                  U+0E52: "๒" THAI DIGIT TWO
                  U+0E53: "๓" THAI DIGIT THREE
@@ -56,7 +64,8 @@
                  U+0E55: "๕" THAI DIGIT FIVE -->
             <Key
                 latin:keyLabel="&#x0E51;"
-                latin:moreKeys="!fixedColumnOrder!4,&#x0E52;,&#x0E53;,&#x0E54;,&#x0E55;" />
+                latin:moreKeys="!fixedColumnOrder!4,&#x0E52;,&#x0E53;,&#x0E54;,&#x0E55;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E56: "๖" THAI DIGIT SIX
                  U+0E57: "๗" THAI DIGIT SEVEN
                  U+0E58: "๘" THAI DIGIT EIGHT
@@ -64,61 +73,72 @@
                  U+0E50: "๐" THAI DIGIT ZERO -->
             <Key
                 latin:keyLabel="&#x0E56;"
-                latin:moreKeys="!fixedColumnOrder!4,&#x0E57;,&#x0E58;,&#x0E59;,&#x0E50;" />
+                latin:moreKeys="!fixedColumnOrder!4,&#x0E57;,&#x0E58;,&#x0E59;,&#x0E50;"
+                latin:keyLabelFlags="fontNormal" />
         </case>
         <default>
             <!-- U+0E20: "ภ" THAI CHARACTER PHO SAMPHAO -->
             <Key
                 latin:keyLabel="&#x0E20;"
                 latin:keyHintLabel="1"
-                latin:additionalMoreKeys="1,&#x0E51;" />
+                latin:additionalMoreKeys="1,&#x0E51;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E16: "ถ" THAI CHARACTER THO THUNG -->
             <Key
                 latin:keyLabel="&#x0E16;"
                 latin:keyHintLabel="2"
-                latin:additionalMoreKeys="2,&#x0E52;" />
+                latin:additionalMoreKeys="2,&#x0E52;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E04: "ค" THAI CHARACTER KHO KHWAI -->
             <Key
                 latin:keyLabel="&#x0E04;"
                 latin:keyHintLabel="3"
-                latin:additionalMoreKeys="3,&#x0E53;" />
+                latin:additionalMoreKeys="3,&#x0E53;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E15: "ต" THAI CHARACTER TO TAO -->
             <Key
                 latin:keyLabel="&#x0E15;"
                 latin:keyHintLabel="4"
-                latin:additionalMoreKeys="4,&#x0E54;" />
+                latin:additionalMoreKeys="4,&#x0E54;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E08: "จ" THAI CHARACTER CHO CHAN -->
             <Key
                 latin:keyLabel="&#x0E08;"
                 latin:keyHintLabel="5"
-                latin:additionalMoreKeys="5,&#x0E55;" />
+                latin:additionalMoreKeys="5,&#x0E55;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E02: "ข" THAI CHARACTER KHO KHAI -->
             <Key
                 latin:keyLabel="&#x0E02;"
                 latin:keyHintLabel="6"
-                latin:additionalMoreKeys="6,&#x0E56;" />
+                latin:additionalMoreKeys="6,&#x0E56;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E0A: "ช" THAI CHARACTER CHO CHANG -->
             <Key
                 latin:keyLabel="&#x0E0A;"
                 latin:keyHintLabel="7"
-                latin:additionalMoreKeys="7,&#x0E57;" />
+                latin:additionalMoreKeys="7,&#x0E57;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E23: "ร" THAI CHARACTER RO RUA
                  U+0E25: "ล" THAI CHARACTER LO LING -->
             <Key
                 latin:keyLabel="&#x0E23;"
                 latin:moreKeys="&#x0E25;"
                 latin:keyHintLabel="8"
-                latin:additionalMoreKeys="8,&#x0E58;" />
+                latin:additionalMoreKeys="8,&#x0E58;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E19: "น" THAI CHARACTER NO NU -->
             <Key
                 latin:keyLabel="&#x0E19;"
                 latin:keyHintLabel="9"
-                latin:additionalMoreKeys="9,&#x0E59;" />
+                latin:additionalMoreKeys="9,&#x0E59;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E22: "ย" THAI CHARACTER YO YAK -->
             <Key
                 latin:keyLabel="&#x0E22;"
                 latin:keyHintLabel="0"
-                latin:additionalMoreKeys="0,&#x0E50;" />
+                latin:additionalMoreKeys="0,&#x0E50;"
+                latin:keyLabelFlags="fontNormal" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_thai2.xml b/java/res/xml/rowkeys_thai2.xml
index 80e3563f87a5257e3a85747e32f3bfb0752e4b5f..f5fd405e4cdb7d4ec1db7776d3c4049fb04c6501 100644
--- a/java/res/xml/rowkeys_thai2.xml
+++ b/java/res/xml/rowkeys_thai2.xml
@@ -27,60 +27,76 @@
         >
             <!-- U+0E24: "ฤ" THAI CHARACTER RU -->
             <Key
-                latin:keyLabel="&#x0E24;" />
+                latin:keyLabel="&#x0E24;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E06: "ฆ" THAI CHARACTER KHO RAKHANG -->
             <Key
-                latin:keyLabel="&#x0E06;" />
+                latin:keyLabel="&#x0E06;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E0F: "ฏ" THAI CHARACTER TO PATAK -->
             <Key
-                latin:keyLabel="&#x0E0F;" />
+                latin:keyLabel="&#x0E0F;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E0C: "ฌ" THAI CHARACTER CHO CHOE -->
             <Key
-                latin:keyLabel="&#x0E0C;" />
+                latin:keyLabel="&#x0E0C;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E29: "ษ" THAI CHARACTER SO RUSI -->
             <Key
-                latin:keyLabel="&#x0E29;" />
+                latin:keyLabel="&#x0E29;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E28: "ศ" THAI CHARACTER SO SALA -->
             <Key
-                latin:keyLabel="&#x0E28;" />
+                latin:keyLabel="&#x0E28;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E0B: "ซ" THAI CHARACTER SO SO -->
             <Key
-                latin:keyLabel="&#x0E0B;" />
+                latin:keyLabel="&#x0E0B;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
                  U+0E45: "ๅ" THAI CHARACTER LAKKHANGYAO -->
             <Key
                 latin:keyLabel="&#x0E3F;"
-                latin:moreKeys="&#x0E45;" />
+                latin:moreKeys="&#x0E45;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E46: "ๆ" THAI CHARACTER MAIYAMOK
                  U+0E2F: "ฯ" THAI CHARACTER PAIYANNOI -->
             <Key
                 latin:keyLabel="&#x0E46;"
-                latin:moreKeys="&#x0E2F;" />
+                latin:moreKeys="&#x0E2F;"
+                latin:keyLabelFlags="fontNormal" />
         </case>
         <default>
             <!-- U+0E1F: "ฟ" THAI CHARACTER FO FAN
                  U+0E1E: "พ" THAI CHARACTER PHO PHAN -->
             <Key
                 latin:keyLabel="&#x0E1F;"
-                latin:moreKeys="&#x0E1E;" />
+                latin:moreKeys="&#x0E1E;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E2B: "ห" THAI CHARACTER HO HIP -->
             <Key
-                latin:keyLabel="&#x0E2B;" />
+                latin:keyLabel="&#x0E2B;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E01: "ก" THAI CHARACTER KO KAI -->
             <Key
-                latin:keyLabel="&#x0E01;" />
+                latin:keyLabel="&#x0E01;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E14: "ด" THAI CHARACTER DO DEK -->
             <Key
-                latin:keyLabel="&#x0E14;" />
+                latin:keyLabel="&#x0E14;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E2A: "ส" THAI CHARACTER SO SUA -->
             <Key
-                latin:keyLabel="&#x0E2A;" />
+                latin:keyLabel="&#x0E2A;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E27: "ว" THAI CHARACTER WO WAEN -->
             <Key
-                latin:keyLabel="&#x0E27;" />
+                latin:keyLabel="&#x0E27;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E07: "ง" THAI CHARACTER NGO NGU -->
             <Key
-                latin:keyLabel="&#x0E07;" />
+                latin:keyLabel="&#x0E07;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E30: "ะ" THAI CHARACTER SARA A
                  U+0E32: "า" THAI CHARACTER SARA AA
                  U+0E33: " ำ" THAI CHARACTER SARA AM
@@ -91,17 +107,23 @@
                  U+0E42: "โ" THAI CHARACTER SARA O -->
             <Key
                 latin:keyLabel="&#x0E30;"
-                latin:moreKeys="&#x0E32;,&#x0E33;,&#x0E40;,&#x0E41;,&#x0E43;,&#x0E44;,&#x0E42;" />
-            <!-- U+0E31: " ั" THAI CHARACTER MAI HAN-AKAT
+                latin:moreKeys="&#x0E32;,&#x0E33;,&#x0E40;,&#x0E41;,&#x0E43;,&#x0E44;,&#x0E42;"
+                latin:keyLabelFlags="fontNormal" />
+            <!-- U+0020: " " SPACE
+                 U+0E31: " ั" THAI CHARACTER MAI HAN-AKAT
                  U+0E34: " ิ" THAI CHARACTER SARA I
                  U+0E35: " ี" THAI CHARACTER SARA II
                  U+0E36: " ึ" THAI CHARACTER SARA UE
                  U+0E37: " ื" THAI CHARACTER SARA UEE
                  U+0E38: " ุ" THAI CHARACTER SARA U
                  U+0E39: " ู" THAI CHARACTER SARA UU -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x0E31;"
-                latin:moreKeys="&#x0E34;,&#x0E35;,&#x0E36;,&#x0E37;,&#x0E38;,&#x0E39;" />
+                latin:keyLabel="&#x20;&#x0E31;"
+                latin:code="0x0E31"
+                latin:moreKeys="&#x0E34;,&#x0E35;,&#x0E36;,&#x0E37;,&#x0E38;,&#x0E39;"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_thai3.xml b/java/res/xml/rowkeys_thai3.xml
index b8338073c05c34cf071e602c8906717b2505fd85..2fcc0068a7b9c32ccb6b22f0ea13cc71b6e554d6 100644
--- a/java/res/xml/rowkeys_thai3.xml
+++ b/java/res/xml/rowkeys_thai3.xml
@@ -27,57 +27,83 @@
         >
             <!-- U+0E09: "ฉ" THAI CHARACTER CHO CHING -->
             <Key
-                latin:keyLabel="&#x0E09;" />
+                latin:keyLabel="&#x0E09;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E2E: "ฮ" THAI CHARACTER HO NOKHUK -->
             <Key
-                latin:keyLabel="&#x0E2E;" />
+                latin:keyLabel="&#x0E2E;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E12: "ฒ" THAI CHARACTER THO PHUTHAO -->
             <Key
-                latin:keyLabel="&#x0E12;" />
+                latin:keyLabel="&#x0E12;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E2C: "ฬ" THAI CHARACTER LO CHULA -->
             <Key
-                latin:keyLabel="&#x0E2C;" />
+                latin:keyLabel="&#x0E2C;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E26: "ฦ" THAI CHARACTER LU -->
             <Key
-                latin:keyLabel="&#x0E26;" />
-            <!-- U+0E4C: " ์" THAI CHARACTER THANTHAKHAT
+                latin:keyLabel="&#x0E26;"
+                latin:keyLabelFlags="fontNormal" />
+            <!-- U+0020: " " SPACE
+                 U+0E4C: " ์" THAI CHARACTER THANTHAKHAT
                  U+0E4D: " ํ" THAI CHARACTER NIKHAHIT
                  U+0E3A: " ฺ" THAI CHARACTER PHINTHU -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x0E4C;"
-                latin:moreKeys="&#x0E4D;,&#x0E3A;" />
-            <!-- U+0E47: " ็" THAI CHARACTER MAITAIKHU -->
+                latin:keyLabel="&#x20;&#x0E4C;"
+                latin:code="0x0E4C"
+                latin:moreKeys="&#x0E4D;,&#x0E3A;"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+            <!-- U+0020: " " SPACE
+                 U+0E47: " ็" THAI CHARACTER MAITAIKHU -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x0E47;" />
+                latin:keyLabel="&#x20;&#x0E47;"
+                latin:code="0x0E47"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
         </case>
         <default>
             <!-- U+0E1C: "ผ" THAI CHARACTER PHO PHUNG -->
             <Key
-                latin:keyLabel="&#x0E1C;" />
+                latin:keyLabel="&#x0E1C;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E1B: "ป" THAI CHARACTER PO PLA
                  U+0E1A: "บ" THAI CHARACTER BO BAIMAI -->
             <Key
                 latin:keyLabel="&#x0E1B;"
-                latin:moreKeys="&#x0E1A;" />
+                latin:moreKeys="&#x0E1A;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E2D: "อ" THAI CHARACTER O ANG -->
             <Key
-                latin:keyLabel="&#x0E2D;" />
+                latin:keyLabel="&#x0E2D;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E17: "ท" THAI CHARACTER THO THAHAN -->
             <Key
-                latin:keyLabel="&#x0E17;" />
+                latin:keyLabel="&#x0E17;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E21: "ม" THAI CHARACTER MO MA -->
             <Key
-                latin:keyLabel="&#x0E21;" />
+                latin:keyLabel="&#x0E21;"
+                latin:keyLabelFlags="fontNormal" />
             <!-- U+0E1D: "ฝ" THAI CHARACTER FO FA -->
             <Key
-                latin:keyLabel="&#x0E1D;" />
-            <!-- U+0E48: " ่" THAI CHARACTER MAI EK
+                latin:keyLabel="&#x0E1D;"
+                latin:keyLabelFlags="fontNormal" />
+            <!-- U+0020: " " SPACE
+                 U+0E48: " ่" THAI CHARACTER MAI EK
                  U+0E49: " ้" THAI CHARACTER MAI THO
                  U+0E4A: " ๊" THAI CHARACTER MAI TRI
                  U+0E4B: " ๋" THAI CHARACTER MAI CHATTAWA -->
+            <!-- Note: The space character is needed as a preceding letter to draw some Thai
+                 composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x0E48;"
-                latin:moreKeys="&#x0E49;,&#x0E4A;,&#x0E4B;" />
+                latin:keyLabel="&#x20;&#x0E48;"
+                latin:code="0x0E48"
+                latin:moreKeys="&#x0E49;,&#x0E4A;,&#x0E4B;"
+                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
         </default>
     </switch>
 </merge>