diff --git a/java/res/drawable/btn_keyboard_key_honeycomb_popup.xml b/java/res/drawable/btn_keyboard_key_honeycomb_popup.xml
index 87e952c60fa36c8d6684bd1df8d0f065d81261a9..6c2713650da94856a96f6928de67a3691014b3d7 100644
--- a/java/res/drawable/btn_keyboard_key_honeycomb_popup.xml
+++ b/java/res/drawable/btn_keyboard_key_honeycomb_popup.xml
@@ -17,5 +17,4 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
           android:drawable="@drawable/btn_keyboard_key_popup_selected_holo" />
-    <item android:drawable="@drawable/btn_keyboard_key_light_popup_normal" />
 </selector>
diff --git a/java/res/layout-xlarge/keyboard_popup_honeycomb.xml b/java/res/layout-xlarge/keyboard_popup_honeycomb.xml
index 50e91f7ea75ffbf29be2df22a7916aa3b2cfd998..5a91dbeb0b2d1902a99608102303d17508897351 100644
--- a/java/res/layout-xlarge/keyboard_popup_honeycomb.xml
+++ b/java/res/layout-xlarge/keyboard_popup_honeycomb.xml
@@ -23,8 +23,8 @@
         android:layout_height="wrap_content"
         android:orientation="horizontal"
         android:background="@drawable/keyboard_popup_panel_background_holo"
-        android:paddingLeft="44dip"
-        android:paddingRight="32dip"
+        android:paddingLeft="40dip"
+        android:paddingRight="40dip"
         >
     <com.android.inputmethod.latin.BaseKeyboardView
             xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
diff --git a/java/res/layout/input_gingerbread.xml b/java/res/layout/input_gingerbread.xml
index 1991083ab8dc77ee75325505187e46eb03f181e5..fe31321f1a8fde4881a531817e8d8e60f20a8447 100644
--- a/java/res/layout/input_gingerbread.xml
+++ b/java/res/layout/input_gingerbread.xml
@@ -28,8 +28,7 @@
         android:paddingTop="@dimen/keyboard_top_padding"
         android:paddingBottom="@dimen/keyboard_bottom_padding"
         android:background="@drawable/keyboard_dark_background"
-        android:textStyle="bold"
 
         latin:keyBackground="@drawable/btn_keyboard_key_gingerbread"
-        latin:keyTextStyle="bold"
+        latin:keyLetterStyle="bold"
         />
diff --git a/java/res/layout/input_honeycomb.xml b/java/res/layout/input_honeycomb.xml
index 79eb7be964bd5106aaa391a3cff3dc589b8a303a..079e70c651fa58d410764001677165d66e5b6eee 100644
--- a/java/res/layout/input_honeycomb.xml
+++ b/java/res/layout/input_honeycomb.xml
@@ -28,10 +28,12 @@
         android:paddingTop="@dimen/keyboard_top_padding"
         android:paddingBottom="@dimen/keyboard_bottom_padding"
         android:background="@drawable/keyboard_background_holo"
-        android:textStyle="bold"
 
         latin:keyBackground="@drawable/btn_keyboard_key_honeycomb"
         latin:keyPreviewLayout="@layout/key_preview_honeycomb"
         latin:popupLayout="@layout/keyboard_popup_honeycomb"
-        latin:keyTextStyle="bold"
+        latin:keyTextColorDisabled="#FF353535"
+        latin:keyLetterStyle="bold"
+        latin:shadowColor="#00000000"
+        latin:shadowRadius="0.0"
         />
diff --git a/java/res/layout/input_stone_bold.xml b/java/res/layout/input_stone_bold.xml
index 2d4e0b205e969b3f1dbe69ace5b46c08bb99ec11..5fb439acbc4ff07b2ffdbb844d9d36df815c7ea3 100644
--- a/java/res/layout/input_stone_bold.xml
+++ b/java/res/layout/input_stone_bold.xml
@@ -26,12 +26,11 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:background="@drawable/keyboard_background"
-        android:textStyle="bold"
 
         latin:keyBackground="@drawable/btn_keyboard_key_stone"
         latin:keyTextColor="@color/latinkeyboard_key_color_black"
         latin:shadowColor="@color/latinkeyboard_key_color_white"
-        latin:keyTextStyle="bold"
+        latin:keyLetterStyle="bold"
         latin:colorScheme="black"
         latin:popupLayout="@layout/input_stone_popup"
         />
diff --git a/java/res/values-xlarge-land/dimens.xml b/java/res/values-xlarge-land/dimens.xml
new file mode 100644
index 0000000000000000000000000000000000000000..45d6dfa933870ea525a98517453887b3c7ce8260
--- /dev/null
+++ b/java/res/values-xlarge-land/dimens.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources>
+    <dimen name="key_label_text_size">18dip</dimen>
+    <!-- left or right padding of label alignment -->
+    <dimen name="key_label_horizontal_alignment_padding">18dip</dimen>
+</resources>
diff --git a/java/res/values-xlarge/dimens.xml b/java/res/values-xlarge/dimens.xml
index 58fea4edf63a4e490577410910a5835b7a010875..ecf87098f83718384ef9b8131d103d4786c2d2ad 100644
--- a/java/res/values-xlarge/dimens.xml
+++ b/java/res/values-xlarge/dimens.xml
@@ -23,7 +23,7 @@
     <dimen name="key_height">13.0mm</dimen>
     <dimen name="key_bottom_gap">1.5mm</dimen>
     <dimen name="key_horizontal_gap">2.0mm</dimen>
-    <dimen name="popup_key_height">15.0mm</dimen>
+    <dimen name="popup_key_height">13.0mm</dimen>
     <dimen name="keyboard_top_padding">1.0mm</dimen>
     <dimen name="keyboard_bottom_padding">1.0mm</dimen>
     <!-- key_height x 1.0 -->
@@ -34,11 +34,11 @@
     <!-- popup_key_height x -1.0 -->
     <dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen>
 
-    <dimen name="key_text_size">24dip</dimen>
-    <dimen name="key_label_text_size">18dip</dimen>
+    <dimen name="key_letter_size">24dip</dimen>
+    <dimen name="key_label_text_size">14dip</dimen>
     <dimen name="key_preview_text_size_large">24dip</dimen>
-    <!-- left or right padding for of label alignment -->
-    <dimen name="key_label_horizontal_alignment_padding">18dip</dimen>
+    <!-- left or right padding of label alignment -->
+    <dimen name="key_label_horizontal_alignment_padding">4dip</dimen>
 
     <dimen name="candidate_strip_height">46dip</dimen>
 </resources>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index ee4ec051778b453f2485c3650e1135f5621d95d3..ef7a968c980420521fbf9e6eb218e969f6630122 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -25,8 +25,8 @@
              checkable+checked+pressed. -->
         <attr name="keyBackground" format="reference" />
 
-        <!-- Size of the text for character keys. -->
-        <attr name="keyTextSize" format="dimension" />
+        <!-- Size of the text for one letter character keys. -->
+        <attr name="keyLetterSize" format="dimension" />
 
         <!-- Size of the text for custom keys with some text and no icon. -->
         <attr name="labelTextSize" format="dimension" />
@@ -34,6 +34,9 @@
         <!-- Color to use for the label in a key. -->
         <attr name="keyTextColor" format="color" />
 
+        <!-- Color to use for the label in a key when in disabled state. -->
+        <attr name="keyTextColorDisabled" format="color" />
+
         <!-- Layout resource for key press feedback.-->
         <attr name="keyPreviewLayout" format="reference" />
 
@@ -56,10 +59,12 @@
         <attr name="shadowRadius" format="float" />
         <attr name="backgroundDimAmount" format="float" />
 
-        <attr name="keyTextStyle">
+        <attr name="keyLetterStyle">
+            <!-- This should be aligned with Typeface.NORMAL etc. -->
             <enum name="normal" value="0" />
             <enum name="bold" value="1" />
             <enum name="italic" value="2" />
+            <enum name="boldItalic" value="3" />
         </attr>
 
         <attr name="colorScheme">
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index f29bc4d113a77e38d811e76babf913665e53d0af..3839ff064b1af31734b5377c492a1eb6b0a91fd7 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -34,10 +34,10 @@
     <!-- popup_key_height x -1.0 -->
     <dimen name="mini_keyboard_vertical_correction">-0.325in</dimen>
 
-    <dimen name="key_text_size">0.13in</dimen>
+    <dimen name="key_letter_size">0.13in</dimen>
     <dimen name="key_label_text_size">0.083in</dimen>
     <dimen name="key_preview_text_size_large">40sp</dimen>
-    <!-- left or right padding for of label alignment -->
+    <!-- left or right padding of label alignment -->
     <dimen name="key_label_horizontal_alignment_padding">0.13in</dimen>
     <dimen name="key_preview_offset">0.000in</dimen>
     <!-- We use "inch", not "dip" because this value tries dealing with physical distance related
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index 6ab4dedc89829ae47d3c7aee1790d0ce40ec06da..02d21b43ba3e7a5d83437b9edd484ce0a850178e 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -19,8 +19,10 @@
         <item name="android:background">@drawable/keyboard_background</item>
 
         <item name="keyBackground">@drawable/btn_keyboard_key</item>
-        <item name="keyTextSize">@dimen/key_text_size</item>
+        <item name="keyLetterSize">@dimen/key_letter_size</item>
+        <item name="keyLetterStyle">normal</item>
         <item name="keyTextColor">#FFFFFFFF</item>
+        <item name="keyTextColorDisabled">#FFFFFFFF</item>
         <item name="keyPreviewLayout">@layout/key_preview</item>
         <item name="keyPreviewOffset">@dimen/key_preview_offset</item>
         <item name="keyPreviewHeight">@dimen/key_preview_height</item>
diff --git a/java/res/xml-xlarge-land/kbd_popup_template.xml b/java/res/xml-xlarge-land/kbd_popup_template.xml
index 5fe9f67d9dfefeba183d2aa29ad63d1752efabc0..fd348f225b66d7e000281c5594fbdd298da0f47f 100644
--- a/java/res/xml-xlarge-land/kbd_popup_template.xml
+++ b/java/res/xml-xlarge-land/kbd_popup_template.xml
@@ -19,9 +19,9 @@
 -->
 
 <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="5.0%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
+    latin:keyWidth="3.5%p"
+    latin:horizontalGap="0px"
     latin:verticalGap="0px"
-    latin:keyHeight="@dimen/key_height"
+    latin:keyHeight="@dimen/popup_key_height"
     >
 </Keyboard>
diff --git a/java/res/xml-xlarge-land/popup_domains.xml b/java/res/xml-xlarge-land/popup_domains.xml
index 9ed79c8a57c62124d46c6b295eccc686ac7b1c6d..deedba4511c85b1efefb4c4a2097cfdd6e8c230b 100644
--- a/java/res/xml-xlarge-land/popup_domains.xml
+++ b/java/res/xml-xlarge-land/popup_domains.xml
@@ -20,7 +20,7 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="5.0%p"
+    latin:keyWidth="4.0%p"
     latin:horizontalGap="0px"
     latin:verticalGap="0px"
     latin:keyHeight="@dimen/popup_key_height"
diff --git a/java/res/xml-xlarge-land/popup_smileys.xml b/java/res/xml-xlarge-land/popup_smileys.xml
index bdd6805daef0c166af0d586bb77d11aea0c1f4d8..e882a5071abe7940a76e765c38c5e2365772e425 100644
--- a/java/res/xml-xlarge-land/popup_smileys.xml
+++ b/java/res/xml-xlarge-land/popup_smileys.xml
@@ -20,7 +20,7 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="5.0%p"
+    latin:keyWidth="4.0%p"
     latin:horizontalGap="0px"
     latin:verticalGap="0px"
     latin:keyHeight="@dimen/popup_key_height"
diff --git a/java/res/xml-xlarge/kbd_phone.xml b/java/res/xml-xlarge/kbd_phone.xml
index 483b022a52ff230e86c7403f5dc03c05b320ddd5..1e66102a7ebe08809d664b375e90f1a4dd761526 100644
--- a/java/res/xml-xlarge/kbd_phone.xml
+++ b/java/res/xml-xlarge/kbd_phone.xml
@@ -65,7 +65,6 @@
     <Row>
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyLabelOption="alignLeft"
             latin:keyEdgeFlags="left" />
         <!-- To match one character label size with "More", I placed spaces around the char ','
              and '.'. -->
diff --git a/java/res/xml-xlarge/kbd_phone_symbols.xml b/java/res/xml-xlarge/kbd_phone_symbols.xml
index 09eb403c86af69639cf9ba3fb17e94d9b911fa6b..7eadb966fe1ca5a2d0d9c039905a1fd4b328ecdd 100644
--- a/java/res/xml-xlarge/kbd_phone_symbols.xml
+++ b/java/res/xml-xlarge/kbd_phone_symbols.xml
@@ -69,7 +69,6 @@
     <Row>
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyLabelOption="alignLeft"
             latin:keyEdgeFlags="left" />
         <Spacer
             latin:horizontalGap="4.458%p" />
diff --git a/java/res/xml-xlarge/kbd_popup_template.xml b/java/res/xml-xlarge/kbd_popup_template.xml
index 55ebda5e468e91869cb7f075d51c9fcfcff43139..aa99cee03aff7077fc7e872180ae5e22d2b3403a 100644
--- a/java/res/xml-xlarge/kbd_popup_template.xml
+++ b/java/res/xml-xlarge/kbd_popup_template.xml
@@ -19,9 +19,9 @@
 -->
 
 <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="7.5%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
+    latin:keyWidth="5.0%p"
+    latin:horizontalGap="0px"
     latin:verticalGap="0px"
-    latin:keyHeight="@dimen/key_height"
+    latin:keyHeight="@dimen/popup_key_height"
     >
 </Keyboard>
diff --git a/java/res/xml-xlarge/kbd_symbols.xml b/java/res/xml-xlarge/kbd_symbols.xml
index 7197115d68e8b025d981d350f9910344e9fe1d20..85deb8799fbd2bef4b9a98a7131d90a6d4c542c6 100644
--- a/java/res/xml-xlarge/kbd_symbols.xml
+++ b/java/res/xml-xlarge/kbd_symbols.xml
@@ -124,7 +124,6 @@
     >
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyLabelOption="alignLeft"
             latin:keyWidth="15.192%p"
             latin:keyEdgeFlags="left" />
         <Key
@@ -155,7 +154,6 @@
             latin:popupCharacters="¿" />
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyLabelOption="alignRight"
             latin:keyWidth="12.530%p"
             latin:keyEdgeFlags="right" />
     </Row>
diff --git a/java/res/xml-xlarge/kbd_symbols_shift.xml b/java/res/xml-xlarge/kbd_symbols_shift.xml
index 4742967326f91f8c8f0291a03c3151930f5adbaf..5620e1db533f3ed74a44935743f1cd60a48f6342 100644
--- a/java/res/xml-xlarge/kbd_symbols_shift.xml
+++ b/java/res/xml-xlarge/kbd_symbols_shift.xml
@@ -104,7 +104,6 @@
     >
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyLabelOption="alignLeft"
             latin:keyWidth="15.192%p"
             latin:keyEdgeFlags="left" />
         <Key
@@ -131,7 +130,6 @@
             latin:keyLabel="¿" />
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyLabelOption="alignRight"
             latin:keyWidth="12.530%p"
             latin:keyEdgeFlags="right" />
     </Row>
diff --git a/java/res/xml-xlarge/popup_domains.xml b/java/res/xml-xlarge/popup_domains.xml
index d20bcb116c0816afb15f345bdc45d421702fd543..be0c9181049b0ef8d97c2f462092deb6a26dd743 100644
--- a/java/res/xml-xlarge/popup_domains.xml
+++ b/java/res/xml-xlarge/popup_domains.xml
@@ -20,7 +20,7 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="15%p"
+    latin:keyWidth="5.5%p"
     latin:horizontalGap="0px"
     latin:verticalGap="0px"
     latin:keyHeight="@dimen/popup_key_height"
diff --git a/java/res/xml-xlarge/popup_smileys.xml b/java/res/xml-xlarge/popup_smileys.xml
index 2cfcf741ddc75b8fa94feff4a05ac44c1849df67..bdd6805daef0c166af0d586bb77d11aea0c1f4d8 100644
--- a/java/res/xml-xlarge/popup_smileys.xml
+++ b/java/res/xml-xlarge/popup_smileys.xml
@@ -20,7 +20,7 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="7.5%p"
+    latin:keyWidth="5.0%p"
     latin:horizontalGap="0px"
     latin:verticalGap="0px"
     latin:keyHeight="@dimen/popup_key_height"
diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboard.java b/java/src/com/android/inputmethod/latin/BaseKeyboard.java
index 00ed453c4e843892e5808d958db8efabbc4def2d..e2331f33405f2008c1cce49e2cf81fcd3e86025d 100644
--- a/java/src/com/android/inputmethod/latin/BaseKeyboard.java
+++ b/java/src/com/android/inputmethod/latin/BaseKeyboard.java
@@ -537,7 +537,8 @@ public class BaseKeyboard {
                 column = 0;
             }
             final Key key = new Key(row);
-            key.x = x;
+            // Horizontal gap is divided equally to both sides of the key.
+            key.x = x + key.gap / 2;
             key.y = y;
             key.label = String.valueOf(c);
             key.codes = new int[] { c };
diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboardView.java b/java/src/com/android/inputmethod/latin/BaseKeyboardView.java
index 954f264bdd8fb5c871a1e21956e8083ac92335b9..3193cd46e2225f075442068b2d2a65762945bd35 100644
--- a/java/src/com/android/inputmethod/latin/BaseKeyboardView.java
+++ b/java/src/com/android/inputmethod/latin/BaseKeyboardView.java
@@ -170,9 +170,10 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy {
     private static final int HINT_ICON_VERTICAL_ADJUSTMENT_PIXEL = -1;
 
     // XML attribute
-    private int mKeyTextSize;
+    private int mKeyLetterSize;
     private int mKeyTextColor;
-    private Typeface mKeyTextStyle = Typeface.DEFAULT;
+    private int mKeyTextColorDisabled;
+    private Typeface mKeyLetterStyle = Typeface.DEFAULT;
     private int mLabelTextSize;
     private int mColorScheme = COLOR_SCHEME_WHITE;
     private int mShadowColor;
@@ -455,12 +456,15 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy {
             case R.styleable.BaseKeyboardView_keyPreviewHeight:
                 mPreviewHeight = a.getDimensionPixelSize(attr, 80);
                 break;
-            case R.styleable.BaseKeyboardView_keyTextSize:
-                mKeyTextSize = a.getDimensionPixelSize(attr, 18);
+            case R.styleable.BaseKeyboardView_keyLetterSize:
+                mKeyLetterSize = a.getDimensionPixelSize(attr, 18);
                 break;
             case R.styleable.BaseKeyboardView_keyTextColor:
                 mKeyTextColor = a.getColor(attr, 0xFF000000);
                 break;
+            case R.styleable.BaseKeyboardView_keyTextColorDisabled:
+                mKeyTextColorDisabled = a.getColor(attr, 0xFF000000);
+                break;
             case R.styleable.BaseKeyboardView_labelTextSize:
                 mLabelTextSize = a.getDimensionPixelSize(attr, 14);
                 break;
@@ -477,20 +481,8 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy {
             case R.styleable.BaseKeyboardView_backgroundDimAmount:
                 mBackgroundDimAmount = a.getFloat(attr, 0.5f);
                 break;
-            //case android.R.styleable.
-            case R.styleable.BaseKeyboardView_keyTextStyle:
-                int textStyle = a.getInt(attr, 0);
-                switch (textStyle) {
-                    case 0:
-                        mKeyTextStyle = Typeface.DEFAULT;
-                        break;
-                    case 1:
-                        mKeyTextStyle = Typeface.DEFAULT_BOLD;
-                        break;
-                    default:
-                        mKeyTextStyle = Typeface.defaultFromStyle(textStyle);
-                        break;
-                }
+            case R.styleable.BaseKeyboardView_keyLetterStyle:
+                mKeyLetterStyle = Typeface.defaultFromStyle(a.getInt(attr, Typeface.NORMAL));
                 break;
             case R.styleable.BaseKeyboardView_colorScheme:
                 mColorScheme = a.getInt(attr, COLOR_SCHEME_WHITE);
@@ -787,7 +779,6 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy {
         final boolean isManualTemporaryUpperCase = (mKeyboard instanceof LatinKeyboard
                 && ((LatinKeyboard)mKeyboard).isManualTemporaryUpperCase());
 
-        paint.setColor(mKeyTextColor);
         boolean drawSingleKey = false;
         if (invalidKey != null && canvas.getClipBounds(clipRegion)) {
             // TODO we should use Rect.inset and Rect.contains here.
@@ -820,7 +811,6 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy {
             keyBackground.draw(canvas);
 
             final int rowHeight = padding.top + key.height;
-            boolean drawHintIcon = true;
             // Draw key label
             if (label != null) {
                 // For characters, use large font. For labels like "Done", use small font.
@@ -858,6 +848,11 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy {
                     if (DEBUG_SHOW_ALIGN && label.length() > 1)
                         drawVerticalLine(canvas, positionX, rowHeight, 0xc0008080, new Paint());
                 }
+                if (key.manualTemporaryUpperCaseHintIcon != null && isManualTemporaryUpperCase) {
+                    paint.setColor(mKeyTextColorDisabled);
+                } else {
+                    paint.setColor(mKeyTextColor);
+                }
                 // Set a drop shadow for the text
                 paint.setShadowLayer(mShadowRadius, 0, 0, mShadowColor);
                 canvas.drawText(label, positionX, baseline, paint);
@@ -892,7 +887,7 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy {
                     drawRectangle(canvas, drawableX, drawableY, drawableWidth, drawableHeight,
                             0x80c00000, new Paint());
             }
-            if (key.hintIcon != null && drawHintIcon) {
+            if (key.hintIcon != null) {
                 final int drawableWidth = key.width;
                 final int drawableHeight = key.height;
                 final int drawableX = 0;
@@ -954,18 +949,20 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy {
     private int getLabelSizeAndSetPaint(CharSequence label, Key key, Paint paint) {
         // For characters, use large font. For labels like "Done", use small font.
         final int labelSize;
+        final Typeface labelStyle;
         if (label.length() > 1 && key.codes.length < 2) {
             labelSize = mLabelTextSize;
             if ((key.labelOption & KEY_LABEL_OPTION_FONT_NORMAL) != 0) {
-                paint.setTypeface(Typeface.DEFAULT);
+                labelStyle = Typeface.DEFAULT;
             } else {
-                paint.setTypeface(Typeface.DEFAULT_BOLD);
+                labelStyle = Typeface.DEFAULT_BOLD;
             }
         } else {
-            labelSize = mKeyTextSize;
-            paint.setTypeface(mKeyTextStyle);
+            labelSize = mKeyLetterSize;
+            labelStyle = mKeyLetterStyle;
         }
         paint.setTextSize(labelSize);
+        paint.setTypeface(labelStyle);
         return labelSize;
     }
 
@@ -1061,11 +1058,11 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy {
             mPreviewText.setCompoundDrawables(null, null, null, null);
             mPreviewText.setText(adjustCase(tracker.getPreviewText(key)));
             if (key.label.length() > 1 && key.codes.length < 2) {
-                mPreviewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mKeyTextSize);
+                mPreviewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mKeyLetterSize);
                 mPreviewText.setTypeface(Typeface.DEFAULT_BOLD);
             } else {
                 mPreviewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mPreviewTextSizeLarge);
-                mPreviewText.setTypeface(mKeyTextStyle);
+                mPreviewText.setTypeface(mKeyLetterStyle);
             }
         } else {
             mPreviewText.setCompoundDrawables(null, null, null,