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.