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

Commit e40793f4 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Update the impl of wghtOverride and italOverride" into main

parents cf272d48 60d2dfc6
Loading
Loading
Loading
Loading
+33 −2
Original line number Diff line number Diff line
@@ -156,17 +156,48 @@ static jboolean TextShaper_Result_getFakeItalic(CRITICAL_JNI_PARAMS_COMMA jlong
    return layout->layout.getFakery(i).isFakeItalic();
}

float findValueFromVariationSettings(const minikin::FontFakery& fakery, minikin::AxisTag tag) {
    for (const minikin::FontVariation& fv : fakery.variationSettings()) {
        if (fv.axisTag == tag) {
            return fv.value;
        }
    }
    return std::numeric_limits<float>::quiet_NaN();
}

// CriticalNative
static jfloat TextShaper_Result_getWeightOverride(CRITICAL_JNI_PARAMS_COMMA jlong ptr, jint i) {
    const LayoutWrapper* layout = reinterpret_cast<LayoutWrapper*>(ptr);
    if (text_feature::typeface_redesign()) {
        float value =
                findValueFromVariationSettings(layout->layout.getFakery(i), minikin::TAG_wght);
        if (!std::isnan(value)) {
            return value;
        } else {
            const std::shared_ptr<minikin::Font>& font = layout->layout.getFontRef(i);
            return font->style().weight();
        }
    } else {
        return layout->layout.getFakery(i).wghtAdjustment();
    }
}

// CriticalNative
static jfloat TextShaper_Result_getItalicOverride(CRITICAL_JNI_PARAMS_COMMA jlong ptr, jint i) {
    const LayoutWrapper* layout = reinterpret_cast<LayoutWrapper*>(ptr);
    if (text_feature::typeface_redesign()) {
        float value =
                findValueFromVariationSettings(layout->layout.getFakery(i), minikin::TAG_ital);
        if (!std::isnan(value)) {
            return value;
        } else {
            const std::shared_ptr<minikin::Font>& font = layout->layout.getFontRef(i);
            return font->style().isItalic();
        }
    } else {
        return layout->layout.getFakery(i).italAdjustment();
    }
}

// CriticalNative
static jlong TextShaper_Result_getFont(CRITICAL_JNI_PARAMS_COMMA jlong ptr, jint i) {