From 212ef7a5d592a11522f73d858bf98f5201631b70 Mon Sep 17 00:00:00 2001 From: Billy Hewlett Date: Thu, 21 Jun 2012 09:58:17 -0700 Subject: Revert "Revert "Use Elegant fonts for Webkit, Compact fonts for Textview"" This reverts commit 81957ccb58db76c172e195dc3e31eba85d3e4ac9 --- include/core/SkFontHost.h | 9 ++++++++ include/core/SkPaint.h | 20 +++++++++++++++++ include/core/SkScalerContext.h | 4 +++- include/ports/SkTypeface_android.h | 45 ++++++++------------------------------ 4 files changed, 41 insertions(+), 37 deletions(-) (limited to 'include') diff --git a/include/core/SkFontHost.h b/include/core/SkFontHost.h index 25c9ecb..ace08d8 100644 --- a/include/core/SkFontHost.h +++ b/include/core/SkFontHost.h @@ -154,6 +154,15 @@ public: */ static SkFontID NextLogicalFont(SkFontID currFontID, SkFontID origFontID); +#ifdef SK_BUILD_FOR_ANDROID + /* + * This Android-only version of NextLogicalFont allows us to pass in an + * entire Rec structure so that a caller can change fallback behavior + */ + static SkFontID NextLogicalFont(const SkScalerContext::Rec& rec); +#endif + + /////////////////////////////////////////////////////////////////////////// /** Given a filled-out rec, the fonthost may decide to modify it to reflect diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h index 30ff663..1715013 100644 --- a/include/core/SkPaint.h +++ b/include/core/SkPaint.h @@ -665,6 +665,25 @@ public: @param locale set the paint's locale value for drawing text. */ void setTextLocale(const SkString& locale); + + + enum FontVariant { + kDefault_Variant, // Currently setting yourself to Default gives you Compact Variant + kCompact_Variant, + kElegant_Variant, + kLast_Variant = kElegant_Variant, + }; + + /** Return the font variant + @return the font variant used by this paint object + */ + FontVariant getFontVariant() const { return fFontVariant; } + + + /** Set the font variant + @param fontVariant set the paint's font variant for choosing fonts + */ + void setFontVariant(FontVariant fontVariant); #endif /** Return the paint's text size. @@ -906,6 +925,7 @@ private: unsigned fHinting : 2; #ifdef SK_BUILD_FOR_ANDROID SkString fTextLocale; + FontVariant fFontVariant; #endif SkDrawCacheProc getDrawCacheProc() const; diff --git a/include/core/SkScalerContext.h b/include/core/SkScalerContext.h index 9bcf601..33c3c3d 100644 --- a/include/core/SkScalerContext.h +++ b/include/core/SkScalerContext.h @@ -210,6 +210,9 @@ public: #ifdef SK_USE_COLOR_LUMINANCE uint32_t fLumBits; #endif +#ifdef SK_BUILD_FOR_ANDROID + SkPaint::FontVariant fFontVariant; +#endif uint8_t fMaskFormat; uint8_t fStrokeJoin; uint16_t fFlags; @@ -234,7 +237,6 @@ public: SkMask::Format getFormat() const { return static_cast(fMaskFormat); } - #ifdef SK_USE_COLOR_LUMINANCE SkColor getLuminanceColor() const { return fLumBits; diff --git a/include/ports/SkTypeface_android.h b/include/ports/SkTypeface_android.h index 3471a94..c3eb3d1 100644 --- a/include/ports/SkTypeface_android.h +++ b/include/ports/SkTypeface_android.h @@ -10,47 +10,20 @@ #define SkTypeface_android_DEFINED #include "SkTypeface.h" +#include "SkPaint.h" -enum FallbackScripts { - kArabic_FallbackScript, - kArmenian_FallbackScript, - kBengali_FallbackScript, - kDevanagari_FallbackScript, - kEthiopic_FallbackScript, - kGeorgian_FallbackScript, - kHebrewRegular_FallbackScript, - kHebrewBold_FallbackScript, - kKannada_FallbackScript, - kMalayalam_FallbackScript, - kTamilRegular_FallbackScript, - kTamilBold_FallbackScript, - kThai_FallbackScript, - kTelugu_FallbackScript, - kFallbackScriptNumber -}; - -#define SkTypeface_ValidScript(s) (s >= 0 && s < kFallbackScriptNumber) +#include "../harfbuzz/src/harfbuzz-shaper.h" /** * Return a new typeface for a fallback script. If the script is * not valid, or can not map to a font, returns null. - * @param script The script id. - * @return reference to the matching typeface. Caller must call - * unref() when they are done. - */ -SK_API SkTypeface* SkCreateTypefaceForScript(FallbackScripts script); - -/** - * Return the string representation for the fallback script on Android. - * If the script is not valid, returns null. - */ -SK_API const char* SkGetFallbackScriptID(FallbackScripts script); - -/** - * Return the fallback script enum for the ID on Android. - * If the ID is not valid, or can not map to a fallback - * script, returns kFallbackScriptNumber. + * @param script The harfbuzz script id. + * @param style The font style, for example bold + * @param elegant true if we want the web friendly elegant version of the font + * @return reference to the matching typeface. Caller must call + * unref() when they are done. */ -SK_API FallbackScripts SkGetFallbackScriptFromID(const char* id); +SK_API SkTypeface* SkCreateTypefaceForScript(HB_Script script, SkTypeface::Style style, + SkPaint::FontVariant fontVariant = SkPaint::kDefault_Variant); #endif -- cgit v1.1