From 5b6347a6af668ba47b3fab14cefbe03cc440c3a4 Mon Sep 17 00:00:00 2001 From: Seigo Nonaka Date: Fri, 31 Mar 2017 14:30:05 -0700 Subject: Introduce setFallbackTypeface setFallbackTypeface is returned by Builder.build() method when the provided font is not loaded due to some reasons. The fallback family is resolved with width/italic passed to Builder. Bug: 36794225 Test: android.graphics.cts.TypefaceTest passes Change-Id: I65e220aca823fd815a52437b11c8e6dc952de8e2 --- libs/hwui/hwui/Typeface.cpp | 12 ++++++++++++ libs/hwui/hwui/Typeface.h | 2 ++ 2 files changed, 14 insertions(+) (limited to 'libs/hwui') diff --git a/libs/hwui/hwui/Typeface.cpp b/libs/hwui/hwui/Typeface.cpp index 4b8575adb32b..86709ee3a1fa 100644 --- a/libs/hwui/hwui/Typeface.cpp +++ b/libs/hwui/hwui/Typeface.cpp @@ -71,6 +71,18 @@ Typeface* Typeface::createFromTypeface(Typeface* src, SkTypeface::Style style) { return result; } +Typeface* Typeface::createFromTypefaceWithStyle(Typeface* base, int weight, bool italic) { + Typeface* resolvedFace = Typeface::resolveDefault(base); + Typeface* result = new Typeface(); + if (result != nullptr) { + result->fFontCollection = resolvedFace->fFontCollection; + result->fBaseWeight = weight; + result->fStyle = minikin::FontStyle(weight / 100, italic); + result->fSkiaStyle = resolvedFace->fSkiaStyle; + } + return result; +} + Typeface* Typeface::createFromTypefaceWithVariation(Typeface* src, const std::vector& variations) { Typeface* resolvedFace = Typeface::resolveDefault(src); diff --git a/libs/hwui/hwui/Typeface.h b/libs/hwui/hwui/Typeface.h index 19a4f6c5acd5..27ee4a2a35aa 100644 --- a/libs/hwui/hwui/Typeface.h +++ b/libs/hwui/hwui/Typeface.h @@ -42,6 +42,8 @@ struct ANDROID_API Typeface { static Typeface* createFromTypeface(Typeface* src, SkTypeface::Style style); + static Typeface* createFromTypefaceWithStyle(Typeface* base, int weight, bool italic); + static Typeface* createFromTypefaceWithVariation(Typeface* src, const std::vector& variations); -- cgit v1.2.3-59-g8ed1b