Merge "Fix fake bold for fallback fonts in frameworks." into jb-dev
diff --git a/core/java/android/text/style/StyleSpan.java b/core/java/android/text/style/StyleSpan.java
index 8e6147c..deed737 100644
--- a/core/java/android/text/style/StyleSpan.java
+++ b/core/java/android/text/style/StyleSpan.java
@@ -98,6 +98,7 @@
         }
 
         int fake = want & ~tf.getStyle();
+        fake |= tf.getStyle() & Typeface.BOLD;
 
         if ((fake & Typeface.BOLD) != 0) {
             paint.setFakeBoldText(true);
diff --git a/core/java/android/text/style/TextAppearanceSpan.java b/core/java/android/text/style/TextAppearanceSpan.java
index ecbf4bc..abd02cf 100644
--- a/core/java/android/text/style/TextAppearanceSpan.java
+++ b/core/java/android/text/style/TextAppearanceSpan.java
@@ -235,6 +235,7 @@
             }
 
             int fake = style & ~tf.getStyle();
+            fake |= tf.getStyle() & Typeface.BOLD;
 
             if ((fake & Typeface.BOLD) != 0) {
                 ds.setFakeBoldText(true);
diff --git a/core/java/android/text/style/TypefaceSpan.java b/core/java/android/text/style/TypefaceSpan.java
index f194060..3d74ed0 100644
--- a/core/java/android/text/style/TypefaceSpan.java
+++ b/core/java/android/text/style/TypefaceSpan.java
@@ -82,6 +82,7 @@
 
         Typeface tf = Typeface.create(family, oldStyle);
         int fake = oldStyle & ~tf.getStyle();
+        fake |= tf.getStyle() & Typeface.BOLD;
 
         if ((fake & Typeface.BOLD) != 0) {
             paint.setFakeBoldText(true);
diff --git a/core/java/android/widget/Switch.java b/core/java/android/widget/Switch.java
index 471f259..39bc7c2 100644
--- a/core/java/android/widget/Switch.java
+++ b/core/java/android/widget/Switch.java
@@ -259,10 +259,12 @@
             // now compute what (if any) algorithmic styling is needed
             int typefaceStyle = tf != null ? tf.getStyle() : 0;
             int need = style & ~typefaceStyle;
+            need |= typefaceStyle & Typeface.BOLD;
             mTextPaint.setFakeBoldText((need & Typeface.BOLD) != 0);
             mTextPaint.setTextSkewX((need & Typeface.ITALIC) != 0 ? -0.25f : 0);
         } else {
-            mTextPaint.setFakeBoldText(false);
+            int typefaceStyle = tf != null ? tf.getStyle() : 0;
+            mTextPaint.setFakeBoldText((typefaceStyle & Typeface.BOLD) != 0);
             mTextPaint.setTextSkewX(0);
             setSwitchTypeface(tf);
         }
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 01617da..464a527 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -1237,10 +1237,12 @@
             // now compute what (if any) algorithmic styling is needed
             int typefaceStyle = tf != null ? tf.getStyle() : 0;
             int need = style & ~typefaceStyle;
+            need |= typefaceStyle & Typeface.BOLD; // keep bold in
             mTextPaint.setFakeBoldText((need & Typeface.BOLD) != 0);
             mTextPaint.setTextSkewX((need & Typeface.ITALIC) != 0 ? -0.25f : 0);
         } else {
-            mTextPaint.setFakeBoldText(false);
+            int typefaceStyle = tf != null ? tf.getStyle() : 0;
+            mTextPaint.setFakeBoldText((typefaceStyle & Typeface.BOLD) != 0);
             mTextPaint.setTextSkewX(0);
             setTypeface(tf);
         }