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

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

Merge "[2nd attempt] Cache the layout result if the font feature is specified" into main

parents 461801b7 9bda91a8
Loading
Loading
Loading
Loading
+15 −11
Original line number Diff line number Diff line
@@ -17,19 +17,19 @@
#ifndef ANDROID_GRAPHICS_PAINT_H_
#define ANDROID_GRAPHICS_PAINT_H_

#include "Typeface.h"

#include <cutils/compiler.h>

#include <SkFont.h>
#include <SkPaint.h>
#include <SkSamplingOptions.h>
#include <string>

#include <minikin/FontFamily.h>
#include <cutils/compiler.h>
#include <minikin/FamilyVariant.h>
#include <minikin/FontFamily.h>
#include <minikin/FontFeature.h>
#include <minikin/Hyphenator.h>

#include <string>

#include "Typeface.h"

namespace android {

class BlurDrawLooper;
@@ -82,11 +82,15 @@ public:

    float getWordSpacing() const { return mWordSpacing; }

    void setFontFeatureSettings(const std::string& fontFeatureSettings) {
        mFontFeatureSettings = fontFeatureSettings;
    void setFontFeatureSettings(std::string_view fontFeatures) {
        mFontFeatureSettings = minikin::FontFeature::parse(fontFeatures);
    }

    std::string getFontFeatureSettings() const { return mFontFeatureSettings; }
    void resetFontFeatures() { mFontFeatureSettings.clear(); }

    const std::vector<minikin::FontFeature>& getFontFeatureSettings() const {
        return mFontFeatureSettings;
    }

    void setMinikinLocaleListId(uint32_t minikinLocaleListId) {
        mMinikinLocaleListId = minikinLocaleListId;
@@ -170,7 +174,7 @@ private:

    float mLetterSpacing = 0;
    float mWordSpacing = 0;
    std::string mFontFeatureSettings;
    std::vector<minikin::FontFeature> mFontFeatureSettings;
    uint32_t mMinikinLocaleListId;
    std::optional<minikin::FamilyVariant> mFamilyVariant;
    uint32_t mHyphenEdit = 0;
+4 −2
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@
#include <cassert>
#include <cstring>
#include <memory>
#include <string_view>
#include <vector>

#include "ColorFilter.h"
@@ -690,10 +691,11 @@ namespace PaintGlue {
                                       jstring settings) {
        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
        if (!settings) {
            paint->setFontFeatureSettings(std::string());
            paint->resetFontFeatures();
        } else {
            ScopedUtfChars settingsChars(env, settings);
            paint->setFontFeatureSettings(std::string(settingsChars.c_str(), settingsChars.size()));
            paint->setFontFeatureSettings(
                    std::string_view(settingsChars.c_str(), settingsChars.size()));
        }
    }