summaryrefslogtreecommitdiffstats
path: root/core/jni/android
diff options
context:
space:
mode:
authorVictoria Lease <violets@google.com>2013-11-06 11:39:58 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2013-11-06 11:39:58 -0800
commitd0d4b00ac5010bd3ea309a9a99147cf318a66cb7 (patch)
tree5ae78bf2f0b6a29276f6d26a78afa6ec95f1a2aa /core/jni/android
parentb52856129ced3faf9686fcb767c4924c6a869bdd (diff)
parentdd3776d673776785f32aa7d813871a38de906c5d (diff)
downloadframeworks_base-d0d4b00ac5010bd3ea309a9a99147cf318a66cb7.zip
frameworks_base-d0d4b00ac5010bd3ea309a9a99147cf318a66cb7.tar.gz
frameworks_base-d0d4b00ac5010bd3ea309a9a99147cf318a66cb7.tar.bz2
am dd3776d6: am 30a3ef6c: am c89eaf91: Merge "Fix for Typeface.create(Typeface, style) semantics changed in KK" into klp-dev
* commit 'dd3776d673776785f32aa7d813871a38de906c5d': Fix for Typeface.create(Typeface, style) semantics changed in KK
Diffstat (limited to 'core/jni/android')
-rw-r--r--core/jni/android/graphics/Typeface.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/core/jni/android/graphics/Typeface.cpp b/core/jni/android/graphics/Typeface.cpp
index a7a0bb2..ccd75d5 100644
--- a/core/jni/android/graphics/Typeface.cpp
+++ b/core/jni/android/graphics/Typeface.cpp
@@ -34,6 +34,13 @@ static SkTypeface* Typeface_create(JNIEnv* env, jobject, jstring name,
if (NULL != name) {
AutoJavaStringToUTF8 str(env, name);
face = SkTypeface::CreateFromName(str.c_str(), style);
+ // Try to find the closest matching font, using the standard heuristic
+ if (NULL == face) {
+ face = SkTypeface::CreateFromName(str.c_str(), (SkTypeface::Style)(style ^ SkTypeface::kItalic));
+ }
+ for (int i = 0; NULL == face && i < 4; i++) {
+ face = SkTypeface::CreateFromName(str.c_str(), (SkTypeface::Style)i);
+ }
}
// return the default font at the best style if no exact match exists
@@ -45,8 +52,13 @@ static SkTypeface* Typeface_create(JNIEnv* env, jobject, jstring name,
static SkTypeface* Typeface_createFromTypeface(JNIEnv* env, jobject, SkTypeface* family, int style) {
SkTypeface* face = SkTypeface::CreateFromTypeface(family, (SkTypeface::Style)style);
- // return the default font at the best style if the requested style does not
- // exist in the provided family
+ // Try to find the closest matching font, using the standard heuristic
+ if (NULL == face) {
+ face = SkTypeface::CreateFromTypeface(family, (SkTypeface::Style)(style ^ SkTypeface::kItalic));
+ }
+ for (int i = 0; NULL == face && i < 4; i++) {
+ face = SkTypeface::CreateFromTypeface(family, (SkTypeface::Style)i);
+ }
if (NULL == face) {
face = SkTypeface::CreateFromName(NULL, (SkTypeface::Style)style);
}