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

Commit d9398d29 authored by Seigo Nonaka's avatar Seigo Nonaka Committed by Android (Google) Code Review
Browse files

Merge "Cache the layout result if the font feature is specified" into main

parents f6be0714 525e7e40
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -75,3 +75,10 @@ flag {
  description: "A feature flag that implements line break word style auto."
  bug: "280005585"
}

flag {
  name: "inter_character_justification"
  namespace: "text"
  description: "A feature flag that implement inter character justification."
  bug: "283193133"
}
+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()));
        }
    }