diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java index b5b9fdbee878a..e3b47405e0d4e 100644 --- a/graphics/java/android/graphics/Paint.java +++ b/graphics/java/android/graphics/Paint.java @@ -1596,10 +1596,13 @@ public class Paint { return true; } + // The null typeface is valid and it is equivalent to Typeface.DEFAULT. + // To call isSupportedAxes method, use Typeface.DEFAULT instance. + Typeface targetTypeface = mTypeface == null ? Typeface.DEFAULT : mTypeface; FontVariationAxis[] axes = FontVariationAxis.fromFontVariationSettings(settings); final ArrayList filteredAxes = new ArrayList(); for (final FontVariationAxis axis : axes) { - if (mTypeface.isSupportedAxes(axis.getOpenTypeTagValue())) { + if (targetTypeface.isSupportedAxes(axis.getOpenTypeTagValue())) { filteredAxes.add(axis); } } @@ -1607,7 +1610,7 @@ public class Paint { return false; } mFontVariationSettings = settings; - setTypeface(Typeface.createFromTypefaceWithVariation(mTypeface, filteredAxes)); + setTypeface(Typeface.createFromTypefaceWithVariation(targetTypeface, filteredAxes)); return true; } diff --git a/graphics/java/android/graphics/Typeface.java b/graphics/java/android/graphics/Typeface.java index 5a56f53353733..c4b56c333c646 100644 --- a/graphics/java/android/graphics/Typeface.java +++ b/graphics/java/android/graphics/Typeface.java @@ -725,8 +725,8 @@ public class Typeface { } /** @hide */ - public static Typeface createFromTypefaceWithVariation(Typeface family, - List axes) { + public static Typeface createFromTypefaceWithVariation(@Nullable Typeface family, + @NonNull List axes) { final long ni = family == null ? 0 : family.native_instance; return new Typeface(nativeCreateFromTypefaceWithVariation(ni, axes)); } @@ -1056,7 +1056,7 @@ public class Typeface { } } } - return Arrays.binarySearch(mSupportedAxes, axis) > 0; + return Arrays.binarySearch(mSupportedAxes, axis) >= 0; } private static native long nativeCreateFromTypeface(long native_instance, int style);