Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0606a887 authored by Seigo Nonaka's avatar Seigo Nonaka
Browse files

Use new minikin::Font constructor

This is 2nd attempt of I4d7af881ed1a6c

Bug: 37567215
Test: minikin_tests
Test: hwui_unit_tests
Test: atest CtsTextTestCases \
      CtsWidgetTestCases:EditTextTest \
      CtsWidgetTestCases:TextViewFadingEdgeTest \
      FrameworksCoreTests:TextViewFallbackLineSpacingTest \
      FrameworksCoreTests:TextViewTest FrameworksCoreTests:TypefaceTest \
      CtsGraphicsTestCases:TypefaceTest CtsWidgetTestCases:TextViewTest
Test: bit  FrameworksCoreTests:android.text.

Change-Id: I596c67b9453688f998a88031b9724425e2305b20
parent ea8feabe
Loading
Loading
Loading
Loading
+8 −20
Original line number Diff line number Diff line
@@ -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 (weight != RESOLVE_BY_FONT_TABLE) {
        fontBuilder.setWeight(weight);
    }
        if (givenWeight == RESOLVE_BY_FONT_TABLE) {
            weight = os2Weight;
    if (italic != RESOLVE_BY_FONT_TABLE) {
        fontBuilder.setSlant(static_cast<minikin::FontStyle::Slant>(italic != 0));
    }
        if (givenItalic == RESOLVE_BY_FONT_TABLE) {
            italic = os2Italic;
        }
    }

    builder->fonts.push_back(minikin::Font(minikinFont,
            minikin::FontStyle(weight, static_cast<minikin::FontStyle::Slant>(italic))));
    builder->fonts.push_back(fontBuilder.build());
    builder->axes.clear();
    return true;
}
+1 −1
Original line number Diff line number Diff line
@@ -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
+3 −3
Original line number Diff line number Diff line
@@ -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)));
+1 −1
Original line number Diff line number Diff line
@@ -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));
}