diff options
-rw-r--r-- | core/jni/android/graphics/TextLayoutCache.cpp | 28 | ||||
-rw-r--r-- | core/jni/android/graphics/TextLayoutCache.h | 9 |
2 files changed, 9 insertions, 28 deletions
diff --git a/core/jni/android/graphics/TextLayoutCache.cpp b/core/jni/android/graphics/TextLayoutCache.cpp index 1ace23e..17f205d 100644 --- a/core/jni/android/graphics/TextLayoutCache.cpp +++ b/core/jni/android/graphics/TextLayoutCache.cpp @@ -339,23 +339,11 @@ uint32_t TextLayoutValue::getElapsedTime() { } TextLayoutShaper::TextLayoutShaper() { - init(); - mBuffer = hb_buffer_create(); } -void TextLayoutShaper::init() { - mDefaultTypeface = SkFontHost::CreateTypeface(NULL, NULL, SkTypeface::kNormal); -} - -void TextLayoutShaper::unrefTypefaces() { - SkSafeUnref(mDefaultTypeface); -} - TextLayoutShaper::~TextLayoutShaper() { hb_buffer_destroy(mBuffer); - - unrefTypefaces(); } void TextLayoutShaper::computeValues(TextLayoutValue* value, const SkPaint* paint, const UChar* chars, @@ -839,23 +827,27 @@ size_t TextLayoutShaper::shapeFontRun(const SkPaint* paint) { } if (baseGlyphCount != 0) { + SkTypeface::Style style = SkTypeface::kNormal; + if (typeface != NULL) { + style = typeface->style(); + } typeface = typefaceForScript(paint, typeface, hb_buffer_get_script(mBuffer)); if (!typeface) { baseGlyphCount = 0; - typeface = mDefaultTypeface; - SkSafeRef(typeface); + typeface = SkFontHost::CreateTypeface(NULL, NULL, style); #if DEBUG_GLYPHS ALOGD("Using Default Typeface"); #endif } } else { if (!typeface) { - typeface = mDefaultTypeface; + typeface = SkFontHost::CreateTypeface(NULL, NULL, SkTypeface::kNormal); #if DEBUG_GLYPHS - ALOGD("Using Default Typeface"); + ALOGD("Using Default Typeface (normal style)"); #endif + } else { + SkSafeRef(typeface); } - SkSafeRef(typeface); } mShapingPaint.setTypeface(typeface); @@ -899,8 +891,6 @@ void TextLayoutShaper::purgeCaches() { hb_face_destroy(mCachedHBFaces.valueAt(i)); } mCachedHBFaces.clear(); - unrefTypefaces(); - init(); } TextLayoutEngine::TextLayoutEngine() { diff --git a/core/jni/android/graphics/TextLayoutCache.h b/core/jni/android/graphics/TextLayoutCache.h index f9b9900..5414a11 100644 --- a/core/jni/android/graphics/TextLayoutCache.h +++ b/core/jni/android/graphics/TextLayoutCache.h @@ -197,18 +197,10 @@ private: SkPaint mShapingPaint; /** - * Skia default typeface to be returned if we cannot resolve script - */ - SkTypeface* mDefaultTypeface; - - /** * Cache of Harfbuzz faces */ KeyedVector<SkFontID, hb_face_t*> mCachedHBFaces; - void init(); - void unrefTypefaces(); - SkTypeface* typefaceForScript(const SkPaint* paint, SkTypeface* typeface, hb_script_t script); @@ -228,7 +220,6 @@ private: hb_face_t* referenceCachedHBFace(SkTypeface* typeface); bool isComplexScript(hb_script_t script); - }; // TextLayoutShaper /** |