diff --git a/core/java/android/text/style/StyleSpan.java b/core/java/android/text/style/StyleSpan.java index 8e6147c8f91b6..deed73789ecb7 100644 --- a/core/java/android/text/style/StyleSpan.java +++ b/core/java/android/text/style/StyleSpan.java @@ -98,6 +98,7 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan { } 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 ecbf4bc0522bb..abd02cf41caed 100644 --- a/core/java/android/text/style/TextAppearanceSpan.java +++ b/core/java/android/text/style/TextAppearanceSpan.java @@ -235,6 +235,7 @@ public class TextAppearanceSpan extends MetricAffectingSpan implements Parcelabl } 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 f19406007111e..3d74ed044047c 100644 --- a/core/java/android/text/style/TypefaceSpan.java +++ b/core/java/android/text/style/TypefaceSpan.java @@ -82,6 +82,7 @@ public class TypefaceSpan extends MetricAffectingSpan implements ParcelableSpan 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 471f259cc9541..39bc7c2fc1f32 100644 --- a/core/java/android/widget/Switch.java +++ b/core/java/android/widget/Switch.java @@ -259,10 +259,12 @@ public class Switch extends CompoundButton { // 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 01617da73b9a5..464a527a6025c 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -1237,10 +1237,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener // 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); }