diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index a456b22..a876e28 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -217,6 +217,7 @@
             <flag name="hasHintLabel" value="0x800" />
             <flag name="withIconLeft" value="0x1000" />
             <flag name="withIconRight" value="0x2000" />
+            <flag name="autoXScale" value="0x4000" />
         </attr>
         <!-- The icon to display on the key instead of the label. -->
         <attr name="keyIcon" format="enum">
diff --git a/java/res/xml-sw600dp/kbd_phone_shift.xml b/java/res/xml-sw600dp/kbd_phone_shift.xml
index 2b6936d..4c4f8ad 100644
--- a/java/res/xml-sw600dp/kbd_phone_shift.xml
+++ b/java/res/xml-sw600dp/kbd_phone_shift.xml
@@ -41,6 +41,7 @@
         <Key
             latin:code="44"
             latin:keyLabel="@string/label_pause_key"
+            latin:keyLabelOption="followKeyHintLabelRatio|autoXScale"
             latin:keyWidth="9.25%p" />
         <Key
             latin:keyStyle="num1KeyStyle"
@@ -69,6 +70,7 @@
         <Key
             latin:code="59"
             latin:keyLabel="@string/label_wait_key"
+            latin:keyLabelOption="followKeyHintLabelRatio|autoXScale"
             latin:keyWidth="9.25%p" />
         <Key
             latin:keyStyle="num4KeyStyle"
diff --git a/java/res/xml-sw768dp/kbd_phone_shift.xml b/java/res/xml-sw768dp/kbd_phone_shift.xml
index 646f0b8..46f67d3 100644
--- a/java/res/xml-sw768dp/kbd_phone_shift.xml
+++ b/java/res/xml-sw768dp/kbd_phone_shift.xml
@@ -43,6 +43,7 @@
         <Key
             latin:code="44"
             latin:keyLabel="@string/label_pause_key"
+            latin:keyLabelOption="followKeyHintLabelRatio|autoXScale"
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyStyle="num1KeyStyle"
@@ -72,6 +73,7 @@
         <Key
             latin:code="59"
             latin:keyLabel="@string/label_wait_key"
+            latin:keyLabelOption="followKeyHintLabelRatio|autoXScale"
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyStyle="num4KeyStyle"
diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml
index 12eab22..84b1900 100644
--- a/java/res/xml/kbd_key_styles.xml
+++ b/java/res/xml/kbd_key_styles.xml
@@ -101,6 +101,7 @@
                 latin:styleName="returnKeyStyle"
                 latin:code="@integer/key_return"
                 latin:keyLabel="@string/label_go_key"
+                latin:keyLabelOption="autoXScale"
                 latin:parentStyle="functionalKeyStyle" />
         </case>
         <case
@@ -110,6 +111,7 @@
                 latin:styleName="returnKeyStyle"
                 latin:code="@integer/key_return"
                 latin:keyLabel="@string/label_next_key"
+                latin:keyLabelOption="autoXScale"
                 latin:parentStyle="functionalKeyStyle" />
         </case>
         <case
@@ -119,6 +121,7 @@
                 latin:styleName="returnKeyStyle"
                 latin:code="@integer/key_return"
                 latin:keyLabel="@string/label_done_key"
+                latin:keyLabelOption="autoXScale"
                 latin:parentStyle="functionalKeyStyle" />
         </case>
         <case
@@ -128,6 +131,7 @@
                 latin:styleName="returnKeyStyle"
                 latin:code="@integer/key_return"
                 latin:keyLabel="@string/label_send_key"
+                latin:keyLabelOption="autoXScale"
                 latin:parentStyle="functionalKeyStyle" />
         </case>
         <case
diff --git a/java/res/xml/kbd_phone_shift.xml b/java/res/xml/kbd_phone_shift.xml
index 89a9bd0..5be9bf9 100644
--- a/java/res/xml/kbd_phone_shift.xml
+++ b/java/res/xml/kbd_phone_shift.xml
@@ -49,7 +49,7 @@
         <Key
             latin:code="44"
             latin:keyLabel="@string/label_pause_key"
-            latin:keyLabelOption="followKeyHintLabelRatio" />
+            latin:keyLabelOption="followKeyHintLabelRatio|autoXScale" />
         <Key
             latin:keyLabel=","
             latin:keyStyle="numKeyStyle" />
@@ -65,7 +65,7 @@
         <Key
             latin:code="59"
             latin:keyLabel="@string/label_wait_key"
-            latin:keyLabelOption="followKeyHintLabelRatio" />
+            latin:keyLabelOption="followKeyHintLabelRatio|autoXScale" />
         <Key
             latin:keyLabel="#"
             latin:keyStyle="numKeyStyle" />
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index 4ccb27e..06d248e 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -64,6 +64,7 @@
     private static final int LABEL_OPTION_HAS_HINT_LABEL = 0x800;
     private static final int LABEL_OPTION_WITH_ICON_LEFT = 0x1000;
     private static final int LABEL_OPTION_WITH_ICON_RIGHT = 0x2000;
+    private static final int LABEL_OPTION_AUTO_X_SCALE = 0x4000;
 
     /** Icon to display instead of a label. Icon takes precedence over a label */
     private Drawable mIcon;
@@ -439,6 +440,10 @@
         return (mLabelOption & LABEL_OPTION_WITH_ICON_RIGHT) != 0;
     }
 
+    public boolean needsXScale() {
+        return (mLabelOption & LABEL_OPTION_AUTO_X_SCALE) != 0;
+    }
+
     public Drawable getIcon() {
         return mIcon;
     }
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index acb76cc..5a44460 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -91,6 +91,9 @@
     // TODO: Use resource parameter for this value.
     private static final float LABEL_ICON_MARGIN = 0.05f;
 
+    // The maximum key label width in the proportion to the key width.
+    private static final float MAX_LABEL_RATIO = 0.90f;
+
     // Main keyboard
     private Keyboard mKeyboard;
     private final KeyDrawParams mKeyDrawParams;
@@ -572,18 +575,22 @@
                 paint.setTextAlign(Align.LEFT);
             } else if (key.hasLabelWithIconLeft() && icon != null) {
                 labelWidth = getLabelWidth(label, paint) + icon.getIntrinsicWidth()
-                        + (int)(LABEL_ICON_MARGIN * keyWidth);
+                        + LABEL_ICON_MARGIN * keyWidth;
                 positionX = centerX + labelWidth / 2;
                 paint.setTextAlign(Align.RIGHT);
             } else if (key.hasLabelWithIconRight() && icon != null) {
                 labelWidth = getLabelWidth(label, paint) + icon.getIntrinsicWidth()
-                        + (int)(LABEL_ICON_MARGIN * keyWidth);
+                        + LABEL_ICON_MARGIN * keyWidth;
                 positionX = centerX - labelWidth / 2;
                 paint.setTextAlign(Align.LEFT);
             } else {
                 positionX = centerX;
                 paint.setTextAlign(Align.CENTER);
             }
+            if (key.needsXScale()) {
+                paint.setTextScaleX(
+                        Math.min(1.0f, (keyWidth * MAX_LABEL_RATIO) / getLabelWidth(label, paint)));
+            }
 
             if (key.hasUppercaseLetter() && isManualTemporaryUpperCase) {
                 paint.setColor(params.mKeyTextInactivatedColor);
@@ -598,8 +605,9 @@
                 paint.setColor(Color.TRANSPARENT);
             }
             canvas.drawText(label, 0, label.length(), positionX, baseline, paint);
-            // Turn off drop shadow
+            // Turn off drop shadow and reset x-scale.
             paint.setShadowLayer(0, 0, 0, 0);
+            paint.setTextScaleX(1.0f);
 
             if (icon != null) {
                 final int iconWidth = icon.getIntrinsicWidth();
