Add boolean method for knowing the buildVariableFamily result
This is for addressing API council feedback.
Bug: 331421459
Test: TreeHugger
Change-Id: Iae04103d6df80f62cd974d89b56f726c680da34a
diff --git a/core/api/current.txt b/core/api/current.txt
index ce66a4f..ee13fe4 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -17987,6 +17987,7 @@
method @NonNull public android.graphics.fonts.FontFamily.Builder addFont(@NonNull android.graphics.fonts.Font);
method @NonNull public android.graphics.fonts.FontFamily build();
method @FlaggedApi("com.android.text.flags.new_fonts_fallback_xml") @Nullable public android.graphics.fonts.FontFamily buildVariableFamily();
+ method @FlaggedApi("com.android.text.flags.new_fonts_fallback_xml") public boolean canBuildVariableFamily();
}
public final class FontStyle {
diff --git a/graphics/java/android/graphics/fonts/FontFamily.java b/graphics/java/android/graphics/fonts/FontFamily.java
index 685fd82..e441c53 100644
--- a/graphics/java/android/graphics/fonts/FontFamily.java
+++ b/graphics/java/android/graphics/fonts/FontFamily.java
@@ -120,6 +120,24 @@
}
/**
+ * Returns true if the passed font files can be used for building a variable font family
+ * that automatically adjust the `wght` and `ital` axes value for the requested
+ * weight/italic style values.
+ *
+ * This method can be used for checking that the provided font files can be used for
+ * building a variable font family created with {@link #buildVariableFamily()}.
+ * If this function returns false, the {@link #buildVariableFamily()} will fail and
+ * return null.
+ *
+ * @return true if a variable font can be built from the given fonts. Otherwise, false.
+ */
+ @FlaggedApi(FLAG_NEW_FONTS_FALLBACK_XML)
+ public boolean canBuildVariableFamily() {
+ int variableFamilyType = analyzeAndResolveVariableType(mFonts);
+ return variableFamilyType != VARIABLE_FONT_FAMILY_TYPE_UNKNOWN;
+ }
+
+ /**
* Build a variable font family that automatically adjust the `wght` and `ital` axes value
* for the requested weight/italic style values.
*
@@ -140,7 +158,9 @@
* value of the supported `wght`axis, the maximum supported `wght` value is used. The weight
* value of the font is ignored.
*
- * If none of the above conditions are met, this function return {@code null}.
+ * If none of the above conditions are met, this function return {@code null}. Please check
+ * that your font files meet the above requirements or consider using the {@link #build()}
+ * method.
*
* @return A variable font family. null if a variable font cannot be built from the given
* fonts.