From 6162876067cbaa93b870aee6e62c682104935fde Mon Sep 17 00:00:00 2001 From: Fabrice Di Meglio Date: Thu, 26 Apr 2012 14:24:48 -0700 Subject: [PATCH] Fix bug #6318791 Replace the Lohit Devanagari and Tamil with Droid versions - take care of ttf filename changes and regular/bold versions Change-Id: Ib71d2537df16ff954cef9619c12d611948d19efe --- core/jni/android/graphics/TextLayoutCache.cpp | 44 ++++++++++++++----- core/jni/android/graphics/TextLayoutCache.h | 5 ++- 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/core/jni/android/graphics/TextLayoutCache.cpp b/core/jni/android/graphics/TextLayoutCache.cpp index 2c388935148fe..16f377d35aaf1 100644 --- a/core/jni/android/graphics/TextLayoutCache.cpp +++ b/core/jni/android/graphics/TextLayoutCache.cpp @@ -34,8 +34,9 @@ namespace android { #define TYPE_FACE_HEBREW_REGULAR "/system/fonts/DroidSansHebrew-Regular.ttf" #define TYPE_FACE_HEBREW_BOLD "/system/fonts/DroidSansHebrew-Bold.ttf" #define TYPEFACE_BENGALI "/system/fonts/Lohit-Bengali.ttf" -#define TYPEFACE_DEVANAGARI "/system/fonts/Lohit-Devanagari.ttf" -#define TYPEFACE_TAMIL "/system/fonts/Lohit-Tamil.ttf" +#define TYPEFACE_DEVANAGARI_REGULAR "/system/fonts/DroidSansDevanagari-Regular.ttf" +#define TYPEFACE_TAMIL_REGULAR "/system/fonts/DroidSansTamil-Regular.ttf" +#define TYPEFACE_TAMIL_BOLD "/system/fonts/DroidSansTamil-Bold.ttf" #define TYPEFACE_THAI "/system/fonts/DroidSansThai.ttf" ANDROID_SINGLETON_STATIC_INSTANCE(TextLayoutEngine); @@ -337,8 +338,9 @@ TextLayoutShaper::TextLayoutShaper() : mShaperItemGlyphArraySize(0) { mHebrewBoldTypeface = NULL; mBengaliTypeface = NULL; mThaiTypeface = NULL; - mDevanagariTypeface = NULL; - mTamilTypeface = NULL; + mDevanagariRegularTypeface = NULL; + mTamilRegularTypeface = NULL; + mTamilBoldTypeface = NULL; mFontRec.klass = &harfbuzzSkiaClass; mFontRec.userData = 0; @@ -364,8 +366,9 @@ TextLayoutShaper::~TextLayoutShaper() { SkSafeUnref(mHebrewBoldTypeface); SkSafeUnref(mBengaliTypeface); SkSafeUnref(mThaiTypeface); - SkSafeUnref(mDevanagariTypeface); - SkSafeUnref(mTamilTypeface); + SkSafeUnref(mDevanagariRegularTypeface); + SkSafeUnref(mTamilRegularTypeface); + SkSafeUnref(mTamilBoldTypeface); deleteShaperItemGlyphArrays(); } @@ -801,17 +804,38 @@ SkTypeface* TextLayoutShaper::typefaceForUnichar(const SkPaint* paint, SkTypefac break; case HB_Script_Devanagari: - typeface = getCachedTypeface(&mDevanagariTypeface, TYPEFACE_DEVANAGARI); + typeface = getCachedTypeface(&mDevanagariRegularTypeface, TYPEFACE_DEVANAGARI_REGULAR); #if DEBUG_GLYPHS - ALOGD("Using Devanagari Typeface"); + ALOGD("Using Devanagari Regular Typeface"); #endif break; case HB_Script_Tamil: - typeface = getCachedTypeface(&mTamilTypeface, TYPEFACE_TAMIL); + if (typeface) { + switch (typeface->style()) { + case SkTypeface::kBold: + case SkTypeface::kBoldItalic: + typeface = getCachedTypeface(&mTamilBoldTypeface, TYPEFACE_TAMIL_BOLD); #if DEBUG_GLYPHS - ALOGD("Using Tamil Typeface"); + ALOGD("Using Tamil Bold Typeface"); #endif + break; + + case SkTypeface::kNormal: + case SkTypeface::kItalic: + default: + typeface = getCachedTypeface(&mTamilRegularTypeface, TYPEFACE_TAMIL_REGULAR); +#if DEBUG_GLYPHS + ALOGD("Using Tamil Regular Typeface"); +#endif + break; + } + } else { + typeface = getCachedTypeface(&mTamilRegularTypeface, TYPEFACE_TAMIL_REGULAR); +#if DEBUG_GLYPHS + ALOGD("Using Tamil Regular Typeface"); +#endif + } break; default: diff --git a/core/jni/android/graphics/TextLayoutCache.h b/core/jni/android/graphics/TextLayoutCache.h index 7d7caacadfa75..0be61c65e1666 100644 --- a/core/jni/android/graphics/TextLayoutCache.h +++ b/core/jni/android/graphics/TextLayoutCache.h @@ -194,8 +194,9 @@ private: SkTypeface* mHebrewBoldTypeface; SkTypeface* mBengaliTypeface; SkTypeface* mThaiTypeface; - SkTypeface* mDevanagariTypeface; - SkTypeface* mTamilTypeface; + SkTypeface* mDevanagariRegularTypeface; + SkTypeface* mTamilRegularTypeface; + SkTypeface* mTamilBoldTypeface; /** * Cache of Harfbuzz faces