summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/api/system-current.txt9
-rw-r--r--core/java/android/graphics/fonts/FontFamilyUpdateRequest.java73
2 files changed, 71 insertions, 11 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 930c2986a329..bdb63388bf9e 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -3005,12 +3005,19 @@ package android.graphics.fonts {
}
public static final class FontFamilyUpdateRequest.Font {
- ctor public FontFamilyUpdateRequest.Font(@NonNull String, @NonNull android.graphics.fonts.FontStyle, @NonNull java.util.List<android.graphics.fonts.FontVariationAxis>);
method @NonNull public java.util.List<android.graphics.fonts.FontVariationAxis> getAxes();
+ method @IntRange(from=0) public int getIndex();
method @NonNull public String getPostScriptName();
method @NonNull public android.graphics.fonts.FontStyle getStyle();
}
+ public static final class FontFamilyUpdateRequest.Font.Builder {
+ ctor public FontFamilyUpdateRequest.Font.Builder(@NonNull String, @NonNull android.graphics.fonts.FontStyle);
+ method @NonNull public android.graphics.fonts.FontFamilyUpdateRequest.Font build();
+ method @NonNull public android.graphics.fonts.FontFamilyUpdateRequest.Font.Builder setAxes(@NonNull java.util.List<android.graphics.fonts.FontVariationAxis>);
+ method @NonNull public android.graphics.fonts.FontFamilyUpdateRequest.Font.Builder setIndex(@IntRange(from=0) int);
+ }
+
public static final class FontFamilyUpdateRequest.FontFamily {
method @NonNull public java.util.List<android.graphics.fonts.FontFamilyUpdateRequest.Font> getFonts();
method @NonNull public String getName();
diff --git a/core/java/android/graphics/fonts/FontFamilyUpdateRequest.java b/core/java/android/graphics/fonts/FontFamilyUpdateRequest.java
index fbc951e2f6e6..92904971aa15 100644
--- a/core/java/android/graphics/fonts/FontFamilyUpdateRequest.java
+++ b/core/java/android/graphics/fonts/FontFamilyUpdateRequest.java
@@ -23,6 +23,7 @@ import android.annotation.SystemApi;
import com.android.internal.util.Preconditions;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Objects;
@@ -157,6 +158,61 @@ public final class FontFamilyUpdateRequest {
*/
public static final class Font {
+ /**
+ * Builds a {@link Font}.
+ */
+ public static final class Builder {
+ private final@NonNull String mPostScriptName;
+ private final @NonNull FontStyle mStyle;
+ private @NonNull List<FontVariationAxis> mAxes = Collections.emptyList();
+ private @IntRange(from = 0) int mIndex = 0;
+
+ /**
+ * Construct a {@link Font.Builder}
+ *
+ * @param postScriptName The PostScript name of the font file to use. PostScript name is
+ * in Name ID 6 field in 'name' table, as specified by OpenType
+ * specification.
+ * @param style The style for this font.
+ */
+ public Builder(@NonNull String postScriptName, @NonNull FontStyle style) {
+ Objects.requireNonNull(postScriptName);
+ Preconditions.checkStringNotEmpty(postScriptName);
+ Objects.requireNonNull(style);
+ mPostScriptName = postScriptName;
+ mStyle = style;
+ }
+
+ /**
+ * A list of {@link FontVariationAxis} to specify axis tags and values for variable
+ * fonts.
+ */
+ public @NonNull Builder setAxes(@NonNull List<FontVariationAxis> axes) {
+ Objects.requireNonNull(axes);
+ Preconditions.checkCollectionElementsNotNull(axes, "axes");
+ mAxes = axes;
+ return this;
+ }
+
+ /**
+ * Sets font collection index for the Font.
+ *
+ * @see {@link android.R.attr#ttcIndex}.
+ */
+ public @NonNull Builder setIndex(@IntRange(from = 0) int index) {
+ Preconditions.checkArgumentNonnegative(index);
+ mIndex = index;
+ return this;
+ }
+
+ /**
+ * Build a {@link Font} instance.
+ */
+ public @NonNull Font build() {
+ return new Font(mPostScriptName, mStyle, mIndex, mAxes);
+ }
+ }
+
@NonNull
private final String mPostScriptName;
@NonNull
@@ -164,6 +220,8 @@ public final class FontFamilyUpdateRequest {
@NonNull
private final List<FontVariationAxis> mAxes;
+ private final @IntRange(from = 0) int mIndex;
+
/**
* Constructs a FontStyleVariation.
*
@@ -176,18 +234,15 @@ public final class FontFamilyUpdateRequest {
* Name ID 6 field in 'name' table, as specified by OpenType
* specification.
* @param style The style for this font.
+ * @param index The index of the font in the collection.
* @param axes A list of {@link FontVariationAxis} to specify axis tags and values
* for variable fonts.
*/
- public Font(@NonNull String postScriptName, @NonNull FontStyle style,
- @NonNull List<FontVariationAxis> axes) {
- Objects.requireNonNull(postScriptName);
- Preconditions.checkStringNotEmpty(postScriptName);
- Objects.requireNonNull(style);
- Objects.requireNonNull(axes);
- Preconditions.checkCollectionElementsNotNull(axes, "axes");
+ private Font(@NonNull String postScriptName, @NonNull FontStyle style,
+ @IntRange(from = 0) int index, @NonNull List<FontVariationAxis> axes) {
mPostScriptName = postScriptName;
mStyle = style;
+ mIndex = index;
mAxes = axes;
}
@@ -207,6 +262,7 @@ public final class FontFamilyUpdateRequest {
return mStyle;
}
+
/**
* Returns the list of {@link FontVariationAxis}.
*/
@@ -217,9 +273,6 @@ public final class FontFamilyUpdateRequest {
/**
* Returns the index of collection
- *
- * TODO(183752879): Make font index configurable and make this SystemApi.
- * @hide
*/
public @IntRange(from = 0) int getIndex() {
return 0;