summaryrefslogtreecommitdiffstats
path: root/core/jni
diff options
context:
space:
mode:
authorDerek Sollenberger <djsollen@google.com>2013-09-23 08:32:16 -0400
committerDerek Sollenberger <djsollen@google.com>2013-09-23 09:22:56 -0400
commitfe8e21fd80f0594f2be341643ef52d2095eda3b6 (patch)
treef085aecb048f346faa979b64ec28b7eafa4322ec /core/jni
parentf9b70ab87e8f26b57ac3d8dc3b77052e747cb888 (diff)
downloadframeworks_base-fe8e21fd80f0594f2be341643ef52d2095eda3b6.zip
frameworks_base-fe8e21fd80f0594f2be341643ef52d2095eda3b6.tar.gz
frameworks_base-fe8e21fd80f0594f2be341643ef52d2095eda3b6.tar.bz2
Fix Java API error where requesting another style for a provided family fails
Internally the API uses the same code path as SkTypeface::CreateFromName which returns NULL if the requested style is not supported by the existing family. However, the existing Java API expects that we return the default font in the requested style so this CL ensures that we do. bug: 10860066 Change-Id: Ide3a0cc24015e97fa35aef283b42e7d7d11edd9c
Diffstat (limited to 'core/jni')
-rw-r--r--core/jni/android/graphics/Typeface.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/core/jni/android/graphics/Typeface.cpp b/core/jni/android/graphics/Typeface.cpp
index ff62fff..a7a0bb2 100644
--- a/core/jni/android/graphics/Typeface.cpp
+++ b/core/jni/android/graphics/Typeface.cpp
@@ -44,7 +44,13 @@ static SkTypeface* Typeface_create(JNIEnv* env, jobject, jstring name,
}
static SkTypeface* Typeface_createFromTypeface(JNIEnv* env, jobject, SkTypeface* family, int style) {
- return SkTypeface::CreateFromTypeface(family, (SkTypeface::Style)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
+ if (NULL == face) {
+ face = SkTypeface::CreateFromName(NULL, (SkTypeface::Style)style);
+ }
+ return face;
}
static void Typeface_unref(JNIEnv* env, jobject obj, SkTypeface* face) {