Loading core/api/system-current.txt +10 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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; Loading @@ -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 { core/api/test-current.txt +10 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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; Loading @@ -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); Loading core/java/android/text/FontConfig.java +136 −21 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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. * Loading @@ -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. * Loading Loading @@ -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); } Loading @@ -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 Loading Loading @@ -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; Loading Loading @@ -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; } Loading @@ -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; } /** Loading @@ -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); } Loading @@ -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 Loading Loading @@ -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 + '\'' + '}'; } } } core/tests/coretests/assets/fonts/a3em.ttf −24 B (1.72 KiB) File changed.No diff preview for this file type. View original file View changed file core/tests/coretests/assets/fonts/a3em.ttx +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
core/api/system-current.txt +10 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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; Loading @@ -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 {
core/api/test-current.txt +10 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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; Loading @@ -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); Loading
core/java/android/text/FontConfig.java +136 −21 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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. * Loading @@ -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. * Loading Loading @@ -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); } Loading @@ -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 Loading Loading @@ -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; Loading Loading @@ -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; } Loading @@ -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; } /** Loading @@ -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); } Loading @@ -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 Loading Loading @@ -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 + '\'' + '}'; } } }
core/tests/coretests/assets/fonts/a3em.ttf −24 B (1.72 KiB) File changed.No diff preview for this file type. View original file View changed file
core/tests/coretests/assets/fonts/a3em.ttx +1 −1 Original line number Diff line number Diff line Loading @@ -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