summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorVictoria Lease <violets@google.com>2012-06-08 10:25:19 -0700
committerVictoria Lease <violets@google.com>2012-06-08 13:52:17 -0700
commitb26fa0ce68d3311b2fdffb930b27d897e481dd5a (patch)
treeee41733ac06cadb6bf72b58bc099a633075559ab /core/java/android
parentf27f2f8f71f584471fe558845c24121e957b2cf2 (diff)
Fix fake bold for fallback fonts in frameworks.
This change is analogous to Ic0e9f1bbd8cae9fdd3a6d1d015bb9224c8be545c in WebView, and depends upon the same Skia change that that CL makes use of. This flips the "fake bold" flag on for bold fonts in TextView.setTypeface(), with the expectation that Skia will ignore the flag if the final typeface used to render the glyphs is already bold. It also does the same for StyleSpans, TextAppearanceSpans, TypefaceSpans, and the Switch widget. With this, fake bold should work uniformly across all scripts - if fake bold works for a primary typeface, it should also work for all fallback typefaces. Bug: 6629786 Change-Id: Id3b8639ab0df83052ffd82809cb12adaacc1d46b
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/text/style/StyleSpan.java1
-rw-r--r--core/java/android/text/style/TextAppearanceSpan.java1
-rw-r--r--core/java/android/text/style/TypefaceSpan.java1
-rw-r--r--core/java/android/widget/Switch.java4
-rw-r--r--core/java/android/widget/TextView.java4
5 files changed, 9 insertions, 2 deletions
diff --git a/core/java/android/text/style/StyleSpan.java b/core/java/android/text/style/StyleSpan.java
index 8e6147c8f91b..deed73789ecb 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 ecbf4bc0522b..abd02cf41cae 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 f19406007111..3d74ed044047 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 471f259cc954..39bc7c2fc1f3 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 01617da73b9a..464a527a6025 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);
}