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

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

Merge "Implement getAxes() method."

parents a81f54b5 7a18b799
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -83,7 +83,8 @@ static void FontFamily_unref(jlong familyPtr) {
static void addSkTypeface(jlong builderPtr, sk_sp<SkTypeface> face, const void* fontData,
        size_t fontSize, int ttcIndex, jint givenWeight, jboolean givenItalic) {
    minikin::MinikinFont* minikinFont =
            new MinikinFontSkia(std::move(face), fontData, fontSize, ttcIndex);
            new MinikinFontSkia(std::move(face), fontData, fontSize, ttcIndex,
                    std::vector<minikin::FontVariation>());
    NativeFamilyBuilder* builder = reinterpret_cast<NativeFamilyBuilder*>(builderPtr);
    int weight = givenWeight / 100;
    bool italic = givenItalic;
@@ -208,7 +209,8 @@ static jboolean FontFamily_addFontWeightStyle(JNIEnv* env, jobject clazz, jlong
        return false;
    }
    minikin::MinikinFont* minikinFont =
            new MinikinFontSkia(std::move(face), fontPtr, fontSize, ttcIndex);
            new MinikinFontSkia(std::move(face), fontPtr, fontSize, ttcIndex,
                    std::vector<minikin::FontVariation>());
    NativeFamilyBuilder* builder = reinterpret_cast<NativeFamilyBuilder*>(builderPtr);
    builder->fonts.push_back(minikin::Font(minikinFont,
            minikin::FontStyle(weight / 100, isItalic)));
+7 −3
Original line number Diff line number Diff line
@@ -25,9 +25,9 @@
namespace android {

MinikinFontSkia::MinikinFontSkia(sk_sp<SkTypeface> typeface, const void* fontData, size_t fontSize,
        int ttcIndex) :
        int ttcIndex, const std::vector<minikin::FontVariation>& axes) :
    minikin::MinikinFont(typeface->uniqueID()), mTypeface(std::move(typeface)), mFontData(fontData),
    mFontSize(fontSize), mTtcIndex(ttcIndex) {
    mFontSize(fontSize), mTtcIndex(ttcIndex), mAxes(axes) {
}

static void MinikinFontSkia_SetSkiaPaint(const minikin::MinikinFont* font, SkPaint* skPaint,
@@ -87,6 +87,10 @@ int MinikinFontSkia::GetFontIndex() const {
    return mTtcIndex;
}

const std::vector<minikin::FontVariation>& MinikinFontSkia::GetAxes() const {
    return mAxes;
}

minikin::MinikinFont* MinikinFontSkia::createFontWithVariation(
        const std::vector<minikin::FontVariation>& variations) const {
    SkFontMgr::FontParameters params;
@@ -106,7 +110,7 @@ minikin::MinikinFont* MinikinFontSkia::createFontWithVariation(
    sk_sp<SkFontMgr> fm(SkFontMgr::RefDefault());
    sk_sp<SkTypeface> face(fm->createFromStream(stream, params));

    return new MinikinFontSkia(std::move(face), mFontData, mFontSize, ttcIndex);
    return new MinikinFontSkia(std::move(face), mFontData, mFontSize, ttcIndex, variations);
}

uint32_t MinikinFontSkia::packPaintFlags(const SkPaint* paint) {
+3 −1
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ namespace android {
class ANDROID_API MinikinFontSkia : public minikin::MinikinFont {
public:
    explicit MinikinFontSkia(sk_sp<SkTypeface> typeface, const void* fontData, size_t fontSize,
        int ttcIndex);
        int ttcIndex, const std::vector<minikin::FontVariation>& axes);

    float GetHorizontalAdvance(uint32_t glyph_id,
        const minikin::MinikinPaint &paint) const;
@@ -44,6 +44,7 @@ public:
    const void* GetFontData() const;
    size_t GetFontSize() const;
    int GetFontIndex() const;
    const std::vector<minikin::FontVariation>& GetAxes() const;
    minikin::MinikinFont* createFontWithVariation(
            const std::vector<minikin::FontVariation>&) const;

@@ -61,6 +62,7 @@ private:
    const void* mFontData;
    size_t mFontSize;
    int mTtcIndex;
    std::vector<minikin::FontVariation> mAxes;
};

}  // namespace android
+2 −1
Original line number Diff line number Diff line
@@ -150,7 +150,8 @@ void Typeface::setRobotoTypefaceForTest() {
    sk_sp<SkTypeface> typeface = SkTypeface::MakeFromStream(fontData.release());
    LOG_ALWAYS_FATAL_IF(typeface == nullptr, "Failed to make typeface from %s", kRobotoFont);

    minikin::MinikinFont* font = new MinikinFontSkia(std::move(typeface), data, st.st_size, 0);
    minikin::MinikinFont* font = new MinikinFontSkia(std::move(typeface), data, st.st_size, 0,
            std::vector<minikin::FontVariation>());
    minikin::FontFamily* family = new minikin::FontFamily(
                 std::vector<minikin::Font>({ minikin::Font(font, minikin::FontStyle()) }));
    font->Unref();