diff options
| -rw-r--r-- | core/jni/android/graphics/FontFamily.cpp | 28 | ||||
| -rw-r--r-- | core/jni/android/graphics/Paint.cpp | 2 | ||||
| -rw-r--r-- | libs/hwui/hwui/Typeface.cpp | 6 | ||||
| -rw-r--r-- | libs/hwui/tests/unit/TypefaceTests.cpp | 2 |
4 files changed, 13 insertions, 25 deletions
diff --git a/core/jni/android/graphics/FontFamily.cpp b/core/jni/android/graphics/FontFamily.cpp index 937b3ffb9d60..48aef4a8b320 100644 --- a/core/jni/android/graphics/FontFamily.cpp +++ b/core/jni/android/graphics/FontFamily.cpp @@ -90,7 +90,7 @@ static void FontFamily_unref(jlong familyPtr) { } static bool addSkTypeface(NativeFamilyBuilder* builder, sk_sp<SkData>&& data, int ttcIndex, - jint givenWeight, jint givenItalic) { + jint weight, jint italic) { uirenderer::FatVector<SkFontArguments::Axis, 2> skiaAxes; for (const auto& axis : builder->axes) { skiaAxes.emplace_back(SkFontArguments::Axis{axis.axisTag, axis.value}); @@ -114,27 +114,15 @@ static bool addSkTypeface(NativeFamilyBuilder* builder, sk_sp<SkData>&& data, in std::shared_ptr<minikin::MinikinFont> minikinFont = std::make_shared<MinikinFontSkia>(std::move(face), fontPtr, fontSize, ttcIndex, builder->axes); + minikin::Font::Builder fontBuilder(minikinFont); - int weight = givenWeight; - bool italic = givenItalic == 1; - if (givenWeight == RESOLVE_BY_FONT_TABLE || givenItalic == RESOLVE_BY_FONT_TABLE) { - int os2Weight; - bool os2Italic; - if (!minikin::FontFamily::analyzeStyle(minikinFont, &os2Weight, &os2Italic)) { - ALOGE("analyzeStyle failed. Using default style"); - os2Weight = 400; - os2Italic = false; - } - if (givenWeight == RESOLVE_BY_FONT_TABLE) { - weight = os2Weight; - } - if (givenItalic == RESOLVE_BY_FONT_TABLE) { - italic = os2Italic; - } + if (weight != RESOLVE_BY_FONT_TABLE) { + fontBuilder.setWeight(weight); } - - builder->fonts.push_back(minikin::Font(minikinFont, - minikin::FontStyle(weight, static_cast<minikin::FontStyle::Slant>(italic)))); + if (italic != RESOLVE_BY_FONT_TABLE) { + fontBuilder.setSlant(static_cast<minikin::FontStyle::Slant>(italic != 0)); + } + builder->fonts.push_back(fontBuilder.build()); builder->axes.clear(); return true; } diff --git a/core/jni/android/graphics/Paint.cpp b/core/jni/android/graphics/Paint.cpp index 115d0d5a608b..482d028a67f3 100644 --- a/core/jni/android/graphics/Paint.cpp +++ b/core/jni/android/graphics/Paint.cpp @@ -576,7 +576,7 @@ namespace PaintGlue { minikin::FakedFont baseFont = typeface->fFontCollection->baseFontFaked(typeface->fStyle); float saveSkewX = paint->getTextSkewX(); bool savefakeBold = paint->isFakeBoldText(); - MinikinFontSkia::populateSkPaint(paint, baseFont.font, baseFont.fakery); + MinikinFontSkia::populateSkPaint(paint, baseFont.font->typeface().get(), baseFont.fakery); SkScalar spacing = paint->getFontMetrics(metrics); // The populateSkPaint call may have changed fake bold / text skew // because we want to measure with those effects applied, so now diff --git a/libs/hwui/hwui/Typeface.cpp b/libs/hwui/hwui/Typeface.cpp index 091b5267881d..dca9ef5559a6 100644 --- a/libs/hwui/hwui/Typeface.cpp +++ b/libs/hwui/hwui/Typeface.cpp @@ -132,8 +132,8 @@ Typeface* Typeface::createFromFamilies(std::vector<std::shared_ptr<minikin::Font bool italicFromFont; const minikin::FontStyle defaultStyle; - const minikin::MinikinFont* mf = - families.empty() ? nullptr : families[0]->getClosestMatch(defaultStyle).font; + const minikin::MinikinFont* mf = families.empty() ? nullptr + : families[0]->getClosestMatch(defaultStyle).font->typeface().get(); if (mf != nullptr) { SkTypeface* skTypeface = reinterpret_cast<const MinikinFontSkia*>(mf)->GetSkTypeface(); const SkFontStyle& style = skTypeface->fontStyle(); @@ -183,7 +183,7 @@ void Typeface::setRobotoTypefaceForTest() { std::shared_ptr<minikin::MinikinFont> font = std::make_shared<MinikinFontSkia>( std::move(typeface), data, st.st_size, 0, std::vector<minikin::FontVariation>()); std::vector<minikin::Font> fonts; - fonts.push_back(minikin::Font(std::move(font), minikin::FontStyle())); + fonts.push_back(minikin::Font::Builder(font).build()); std::shared_ptr<minikin::FontCollection> collection = std::make_shared<minikin::FontCollection>( std::make_shared<minikin::FontFamily>(std::move(fonts))); diff --git a/libs/hwui/tests/unit/TypefaceTests.cpp b/libs/hwui/tests/unit/TypefaceTests.cpp index 2232c25de345..e424a266bf72 100644 --- a/libs/hwui/tests/unit/TypefaceTests.cpp +++ b/libs/hwui/tests/unit/TypefaceTests.cpp @@ -57,7 +57,7 @@ std::shared_ptr<minikin::FontFamily> buildFamily(const char* fileName) { std::shared_ptr<minikin::MinikinFont> font = std::make_shared<MinikinFontSkia>( std::move(typeface), data, st.st_size, 0, std::vector<minikin::FontVariation>()); std::vector<minikin::Font> fonts; - fonts.push_back(minikin::Font(std::move(font), minikin::FontStyle())); + fonts.push_back(minikin::Font::Builder(font).build()); return std::make_shared<minikin::FontFamily>(std::move(fonts)); } |