diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 573ec68..4ec1843 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -275,10 +275,11 @@
             <flag name="alignLeft" value="0x01" />
             <flag name="alignRight" value="0x02" />
             <flag name="alignLeftOfCenter" value="0x08" />
-            <flag name="largeLetter" value="0x10" />
-            <flag name="fontNormal" value="0x20" />
-            <flag name="fontMonoSpace" value="0x40" />
+            <flag name="fontNormal" value="0x10" />
+            <flag name="fontMonoSpace" value="0x20" />
+            <flag name="followKeyLargeLetterRatio" value="0x40" />
             <flag name="followKeyLetterRatio" value="0x80" />
+            <flag name="followKeyLabelRatio" value="0xC0" />
             <flag name="followKeyHintLabelRatio" value="0x100" />
             <flag name="hasPopupHint" value="0x200" />
             <flag name="hasShiftedLetterHint" value="0x400" />
diff --git a/java/res/xml/key_styles_enter.xml b/java/res/xml/key_styles_enter.xml
index 04bd80d..f4c7ad4 100644
--- a/java/res/xml/key_styles_enter.xml
+++ b/java/res/xml/key_styles_enter.xml
@@ -94,7 +94,7 @@
         latin:styleName="defaultEnterKeyStyle"
         latin:code="!code/key_enter"
         latin:keyIcon="iconReturnKey"
-        latin:keyLabelFlags="autoXScale|preserveCase"
+        latin:keyLabelFlags="autoXScale|preserveCase|followKeyLabelRatio"
         latin:keyActionFlags="noKeyPreview"
         latin:backgroundType="functional"
         latin:parentStyle="navigateMoreKeysStyle" />
diff --git a/java/res/xml/key_styles_number.xml b/java/res/xml/key_styles_number.xml
index d796b92..16cfa84 100644
--- a/java/res/xml/key_styles_number.xml
+++ b/java/res/xml/key_styles_number.xml
@@ -26,7 +26,7 @@
         latin:keyActionFlags="noKeyPreview" />
     <key-style
         latin:styleName="numKeyStyle"
-        latin:keyLabelFlags="largeLetter|followKeyLetterRatio"
+        latin:keyLabelFlags="followKeyLargeLetterRatio"
         latin:parentStyle="numKeyBaseStyle" />
     <key-style
         latin:styleName="numModeKeyStyle"
@@ -34,7 +34,7 @@
         latin:parentStyle="numKeyBaseStyle" />
     <key-style
         latin:styleName="numFunctionalKeyStyle"
-        latin:keyLabelFlags="largeLetter|followKeyLetterRatio"
+        latin:keyLabelFlags="followKeyLargeLetterRatio"
         latin:backgroundType="functional"
         latin:parentStyle="numKeyBaseStyle" />
     <key-style
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index 254d2d6..fa7ec5c 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -60,10 +60,12 @@
     private static final int LABEL_FLAGS_ALIGN_LEFT = 0x01;
     private static final int LABEL_FLAGS_ALIGN_RIGHT = 0x02;
     private static final int LABEL_FLAGS_ALIGN_LEFT_OF_CENTER = 0x08;
-    private static final int LABEL_FLAGS_LARGE_LETTER = 0x10;
-    private static final int LABEL_FLAGS_FONT_NORMAL = 0x20;
-    private static final int LABEL_FLAGS_FONT_MONO_SPACE = 0x40;
-    public static final int LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO = 0x80;
+    private static final int LABEL_FLAGS_FONT_NORMAL = 0x10;
+    private static final int LABEL_FLAGS_FONT_MONO_SPACE = 0x20;
+    private static final int LABEL_FLAGS_FOLLOW_KEY_RATIO_MASK = 0x1C0;
+    private static final int LABEL_FLAGS_FOLLOW_KEY_LARGE_LETTER_RATIO = 0x40;
+    private static final int LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO = 0x80;
+    private static final int LABEL_FLAGS_FOLLOW_KEY_LABEL_RATIO = 0xC0;
     private static final int LABEL_FLAGS_FOLLOW_KEY_HINT_LABEL_RATIO = 0x100;
     private static final int LABEL_FLAGS_HAS_POPUP_HINT = 0x200;
     private static final int LABEL_FLAGS_HAS_SHIFTED_LETTER_HINT = 0x400;
@@ -498,16 +500,17 @@
     }
 
     public int selectTextSize(int letter, int largeLetter, int label, int hintLabel) {
-        if (StringUtils.codePointCount(mLabel) > 1
-                && (mLabelFlags & (LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO
-                        | LABEL_FLAGS_FOLLOW_KEY_HINT_LABEL_RATIO)) == 0) {
-            return label;
-        } else if ((mLabelFlags & LABEL_FLAGS_FOLLOW_KEY_HINT_LABEL_RATIO) != 0) {
-            return hintLabel;
-        } else if ((mLabelFlags & LABEL_FLAGS_LARGE_LETTER) != 0) {
+        switch (mLabelFlags & LABEL_FLAGS_FOLLOW_KEY_RATIO_MASK) {
+        case LABEL_FLAGS_FOLLOW_KEY_LARGE_LETTER_RATIO:
             return largeLetter;
-        } else {
+        case LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO:
             return letter;
+        case LABEL_FLAGS_FOLLOW_KEY_LABEL_RATIO:
+            return label;
+        case LABEL_FLAGS_FOLLOW_KEY_HINT_LABEL_RATIO:
+            return hintLabel;
+        default: // No follow key ratio flag specified.
+            return StringUtils.codePointCount(mLabel) == 1 ? letter : label;
         }
     }
 
@@ -563,6 +566,12 @@
         return (mMoreKeysColumnAndFlags & MORE_KEYS_FLAGS_HAS_LABELS) != 0;
     }
 
+    public int getMoreKeyLabelFlags() {
+        return hasLabelsInMoreKeys()
+                ? LABEL_FLAGS_FOLLOW_KEY_LABEL_RATIO
+                : LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO;
+    }
+
     public boolean needsDividersInMoreKeys() {
         return (mMoreKeysColumnAndFlags & MORE_KEYS_FLAGS_NEEDS_DIVIDERS) != 0;
     }
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
index f8682d8..7154086 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
@@ -332,10 +332,7 @@
         @Override
         public MoreKeysKeyboard build() {
             final MoreKeysKeyboardParams params = mParams;
-            // moreKeyFlags == 0 means that the rendered text size will be determined by its
-            // label's code point count.
-            final int moreKeyFlags = mParentKey.hasLabelsInMoreKeys() ? 0
-                    : Key.LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO;
+            final int moreKeyFlags = mParentKey.getMoreKeyLabelFlags();
             final MoreKeySpec[] moreKeys = mParentKey.mMoreKeys;
             for (int n = 0; n < moreKeys.length; n++) {
                 final MoreKeySpec moreKeySpec = moreKeys[n];
