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

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

Merge "Add family-list tag element to fonts_customization.xml"

parents 83184875 9e233cd5
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -16247,6 +16247,7 @@ package android.text {
    method @IntRange(from=0) public int getConfigVersion();
    method @NonNull public java.util.List<android.text.FontConfig.FontFamily> getFontFamilies();
    method public long getLastModifiedTimeMillis();
    method @NonNull public java.util.List<android.text.FontConfig.NamedFamilyList> getNamedFamilyLists();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.text.FontConfig> CREATOR;
  }
@@ -16276,7 +16277,7 @@ package android.text {
    method public int describeContents();
    method @NonNull public java.util.List<android.text.FontConfig.Font> getFontList();
    method @NonNull public android.os.LocaleList getLocaleList();
    method @Nullable public String getName();
    method @Deprecated @Nullable public String getName();
    method public int getVariant();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.text.FontConfig.FontFamily> CREATOR;
@@ -16285,6 +16286,14 @@ package android.text {
    field public static final int VARIANT_ELEGANT = 2; // 0x2
  }
  public static final class FontConfig.NamedFamilyList implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.List<android.text.FontConfig.FontFamily> getFamilies();
    method @NonNull public String getName();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.text.FontConfig.NamedFamilyList> CREATOR;
  }
}
package android.util {
+10 −1
Original line number Diff line number Diff line
@@ -2744,6 +2744,7 @@ package android.text {
    method @IntRange(from=0) public int getConfigVersion();
    method @NonNull public java.util.List<android.text.FontConfig.FontFamily> getFontFamilies();
    method public long getLastModifiedTimeMillis();
    method @NonNull public java.util.List<android.text.FontConfig.NamedFamilyList> getNamedFamilyLists();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.text.FontConfig> CREATOR;
  }
@@ -2773,7 +2774,7 @@ package android.text {
    method public int describeContents();
    method @NonNull public java.util.List<android.text.FontConfig.Font> getFontList();
    method @NonNull public android.os.LocaleList getLocaleList();
    method @Nullable public String getName();
    method @Deprecated @Nullable public String getName();
    method public int getVariant();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.text.FontConfig.FontFamily> CREATOR;
@@ -2782,6 +2783,14 @@ package android.text {
    field public static final int VARIANT_ELEGANT = 2; // 0x2
  }

  public static final class FontConfig.NamedFamilyList implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.List<android.text.FontConfig.FontFamily> getFamilies();
    method @NonNull public String getName();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.text.FontConfig.NamedFamilyList> CREATOR;
  }

  public static final class Selection.MemoryTextWatcher implements android.text.TextWatcher {
    ctor public Selection.MemoryTextWatcher();
    method public void afterTextChanged(android.text.Editable);
+136 −21
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.os.Parcelable;
import java.io.File;
import java.lang.annotation.Retention;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;

@@ -55,6 +56,7 @@ import java.util.Objects;
public final class FontConfig implements Parcelable {
    private final @NonNull List<FontFamily> mFamilies;
    private final @NonNull List<Alias> mAliases;
    private final @NonNull List<NamedFamilyList> mNamedFamilyLists;
    private final long mLastModifiedTimeMillis;
    private final int mConfigVersion;

@@ -67,13 +69,24 @@ public final class FontConfig implements Parcelable {
     * @hide Only system server can create this instance and passed via IPC.
     */
    public FontConfig(@NonNull List<FontFamily> families, @NonNull List<Alias> aliases,
            @NonNull List<NamedFamilyList> namedFamilyLists,
            long lastModifiedTimeMillis, @IntRange(from = 0) int configVersion) {
        mFamilies = families;
        mAliases = aliases;
        mNamedFamilyLists = namedFamilyLists;
        mLastModifiedTimeMillis = lastModifiedTimeMillis;
        mConfigVersion = configVersion;
    }

    /**
     * @hide Keep this constructor for reoborectric.
     */
    public FontConfig(@NonNull List<FontFamily> families, @NonNull List<Alias> aliases,
            long lastModifiedTimeMillis, @IntRange(from = 0) int configVersion) {
        this(families, aliases, Collections.emptyList(), lastModifiedTimeMillis, configVersion);
    }


    /**
     * Returns the ordered list of font families available in the system.
     *
@@ -94,6 +107,10 @@ public final class FontConfig implements Parcelable {
        return mAliases;
    }

    public @NonNull List<NamedFamilyList> getNamedFamilyLists() {
        return mNamedFamilyLists;
    }

    /**
     * Returns the last modified time in milliseconds.
     *
@@ -133,8 +150,9 @@ public final class FontConfig implements Parcelable {

    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeParcelableList(mFamilies, flags);
        dest.writeParcelableList(mAliases, flags);
        dest.writeTypedList(mFamilies, flags);
        dest.writeTypedList(mAliases, flags);
        dest.writeTypedList(mNamedFamilyLists, flags);
        dest.writeLong(mLastModifiedTimeMillis);
        dest.writeInt(mConfigVersion);
    }
@@ -142,13 +160,15 @@ public final class FontConfig implements Parcelable {
    public static final @NonNull Creator<FontConfig> CREATOR = new Creator<FontConfig>() {
        @Override
        public FontConfig createFromParcel(Parcel source) {
            List<FontFamily> families = source.readParcelableList(new ArrayList<>(),
                    FontFamily.class.getClassLoader(), android.text.FontConfig.FontFamily.class);
            List<Alias> aliases = source.readParcelableList(new ArrayList<>(),
                    Alias.class.getClassLoader(), android.text.FontConfig.Alias.class);
            final List<FontFamily> families = new ArrayList<>();
            source.readTypedList(families, FontFamily.CREATOR);
            final List<Alias> aliases = new ArrayList<>();
            source.readTypedList(aliases, Alias.CREATOR);
            final List<NamedFamilyList> familyLists = new ArrayList<>();
            source.readTypedList(familyLists, NamedFamilyList.CREATOR);
            long lastModifiedDate = source.readLong();
            int configVersion = source.readInt();
            return new FontConfig(families, aliases, lastModifiedDate, configVersion);
            return new FontConfig(families, aliases, familyLists, lastModifiedDate, configVersion);
        }

        @Override
@@ -506,7 +526,6 @@ public final class FontConfig implements Parcelable {
     */
    public static final class FontFamily implements Parcelable {
        private final @NonNull List<Font> mFonts;
        private final @Nullable String mName;
        private final @NonNull LocaleList mLocaleList;
        private final @Variant int mVariant;

@@ -547,10 +566,9 @@ public final class FontConfig implements Parcelable {
         *
         * @hide Only system server can create this instance and passed via IPC.
         */
        public FontFamily(@NonNull List<Font> fonts, @Nullable String name,
                @NonNull LocaleList localeList, @Variant int variant) {
        public FontFamily(@NonNull List<Font> fonts, @NonNull LocaleList localeList,
                @Variant int variant) {
            mFonts = fonts;
            mName = name;
            mLocaleList = localeList;
            mVariant = variant;
        }
@@ -577,9 +595,13 @@ public final class FontConfig implements Parcelable {
         *
         * When the name of a {@link FontFamily} is null, it will be appended to all of the
         * {@code Fallback List}s.
         *
         * @deprecated From API 34, this function always returns null. All font families which have
         *             name attribute will be reported as a {@link NamedFamilyList}.
         */
        @Deprecated
        public @Nullable String getName() {
            return mName;
            return null;
        }

        /**
@@ -606,8 +628,7 @@ public final class FontConfig implements Parcelable {

        @Override
        public void writeToParcel(@NonNull Parcel dest, int flags) {
            dest.writeParcelableList(mFonts, flags);
            dest.writeString8(mName);
            dest.writeTypedList(mFonts, flags);
            dest.writeString8(mLocaleList.toLanguageTags());
            dest.writeInt(mVariant);
        }
@@ -616,13 +637,12 @@ public final class FontConfig implements Parcelable {

            @Override
            public FontFamily createFromParcel(Parcel source) {
                List<Font> fonts = source.readParcelableList(
                        new ArrayList<>(), Font.class.getClassLoader(), android.text.FontConfig.Font.class);
                String name = source.readString8();
                List<Font> fonts = new ArrayList<>();
                source.readTypedList(fonts, Font.CREATOR);
                String langTags = source.readString8();
                int variant = source.readInt();

                return new FontFamily(fonts, name, LocaleList.forLanguageTags(langTags), variant);
                return new FontFamily(fonts, LocaleList.forLanguageTags(langTags), variant);
            }

            @Override
@@ -659,23 +679,118 @@ public final class FontConfig implements Parcelable {
            FontFamily that = (FontFamily) o;
            return mVariant == that.mVariant
                    && Objects.equals(mFonts, that.mFonts)
                    && Objects.equals(mName, that.mName)
                    && Objects.equals(mLocaleList, that.mLocaleList);
        }

        @Override
        public int hashCode() {
            return Objects.hash(mFonts, mName, mLocaleList, mVariant);
            return Objects.hash(mFonts, mLocaleList, mVariant);
        }

        @Override
        public String toString() {
            return "FontFamily{"
                    + "mFonts=" + mFonts
                    + ", mName='" + mName + '\''
                    + ", mLocaleList=" + mLocaleList
                    + ", mVariant=" + mVariant
                    + '}';
        }
    }

    /**
     * Represents list of font family in the system font configuration.
     *
     * In the fonts_customization.xml, it can define the list of FontFamily as a named family. The
     * list of FontFamily is treated as a fallback list when drawing.
     *
     * @see android.graphics.fonts.FontFamily
     */
    public static final class NamedFamilyList implements Parcelable {
        private final List<FontFamily> mFamilies;
        private final String mName;

        /** @hide */
        public NamedFamilyList(@NonNull List<FontFamily> families, @NonNull String name) {
            mFamilies = families;
            mName = name;
        }

        /** @hide */
        public NamedFamilyList(@NonNull FontFamily family) {
            mFamilies = new ArrayList<>();
            mFamilies.add(family);
            mName = family.getName();
        }

        /**
         * A list of font families.
         *
         * @return a list of font families.
         */
        public @NonNull List<FontFamily> getFamilies() {
            return mFamilies;
        }

        /**
         * Returns the name of the {@link FontFamily}.
         *
         * This name is used to create a new {@code Fallback List}.
         *
         * For example, if the {@link FontFamily} has the name "serif", then the system will create
         * a “serif” {@code Fallback List} and it can be used by creating a Typeface via
         * {@code Typeface.create("serif", Typeface.NORMAL);}
         */
        public @NonNull String getName() {
            return mName;
        }

        @Override
        public int describeContents() {
            return 0;
        }

        @Override
        public void writeToParcel(@androidx.annotation.NonNull Parcel dest, int flags) {
            dest.writeTypedList(mFamilies, flags);
            dest.writeString8(mName);
        }

        public static final @NonNull Creator<NamedFamilyList> CREATOR = new Creator<>() {

            @Override
            public NamedFamilyList createFromParcel(Parcel source) {
                final List<FontFamily> families = new ArrayList<>();
                source.readTypedList(families, FontFamily.CREATOR);
                String name = source.readString8();
                return new NamedFamilyList(families, name);
            }

            @Override
            public NamedFamilyList[] newArray(int size) {
                return new NamedFamilyList[size];
            }
        };

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            NamedFamilyList that = (NamedFamilyList) o;
            return Objects.equals(mFamilies, that.mFamilies) && Objects.equals(mName,
                    that.mName);
        }

        @Override
        public int hashCode() {
            return Objects.hash(mFamilies, mName);
        }

        @Override
        public String toString() {
            return "NamedFamilyList{"
                    + "mFamilies=" + mFamilies
                    + ", mName='" + mName + '\''
                    + '}';
        }
    }
}
−24 B (1.72 KiB)

File changed.

No diff preview for this file type.

+1 −1
Original line number Diff line number Diff line
@@ -156,7 +156,7 @@
      Sample Font
    </namerecord>
    <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
      SampleFont-Regular
      a3em
    </namerecord>
    <namerecord nameID="13" platformID="3" platEncID="1" langID="0x409">
      Licensed under the Apache License, Version 2.0 (the "License");
Loading