Loading core/api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -16896,6 +16896,7 @@ package android.graphics { method public android.graphics.Paint.FontMetricsInt getFontMetricsInt(); method @FlaggedApi("com.android.text.flags.fix_line_height_for_locale") public void getFontMetricsIntForLocale(@NonNull android.graphics.Paint.FontMetricsInt); method public float getFontSpacing(); method @FlaggedApi("com.android.text.flags.typeface_redesign_readonly") @Nullable public String getFontVariationOverride(); method public String getFontVariationSettings(); method public int getHinting(); method public float getLetterSpacing(); Loading Loading @@ -16974,6 +16975,7 @@ package android.graphics { method public void setFilterBitmap(boolean); method public void setFlags(int); method public void setFontFeatureSettings(String); method @FlaggedApi("com.android.text.flags.typeface_redesign_readonly") public boolean setFontVariationOverride(@Nullable String); method public boolean setFontVariationSettings(String); method public void setHinting(int); method public void setLetterSpacing(float); graphics/java/android/graphics/Paint.java +71 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.graphics; import static com.android.text.flags.Flags.FLAG_DEPRECATE_ELEGANT_TEXT_HEIGHT_API; import static com.android.text.flags.Flags.FLAG_FIX_LINE_HEIGHT_FOR_LOCALE; import static com.android.text.flags.Flags.FLAG_LETTER_SPACING_JUSTIFICATION; import static com.android.text.flags.Flags.FLAG_TYPEFACE_REDESIGN_READONLY; import static com.android.text.flags.Flags.FLAG_VERTICAL_TEXT_LAYOUT; import android.annotation.ColorInt; Loading Loading @@ -57,6 +58,7 @@ import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Objects; Loading Loading @@ -96,6 +98,7 @@ public class Paint { private LocaleList mLocales; private String mFontFeatureSettings; private String mFontVariationSettings; private String mFontVariationOverride; private float mShadowLayerRadius; private float mShadowLayerDx; Loading Loading @@ -2140,6 +2143,12 @@ public class Paint { * @see #getFontVariationSettings() * @see FontVariationAxis */ // Add following API description once the setFontVariationOverride becomes public. // This method generates new variation instance of the {@link Typeface} instance and set it to // this object. Therefore, subsequent {@link #setTypeface(Typeface)} call will clear the font // variation settings. Also, creating variation instance of the Typeface requires non trivial // amount of time and memories, therefore consider using // {@link #setFontVariationOverride(String, int)} for better performance. public boolean setFontVariationSettings(String fontVariationSettings) { final String settings = TextUtils.nullIfEmpty(fontVariationSettings); if (settings == mFontVariationSettings Loading Loading @@ -2173,6 +2182,68 @@ public class Paint { return true; } /** * Sets TrueType or OpenType font variation settings for overriding. * * The settings string is constructed from multiple pairs of axis tag and style values. The axis * tag must contain four ASCII characters and must be wrapped with single quotes (U+0027) or * double quotes (U+0022). Axis strings that are longer or shorter than four characters, or * contain characters outside of U+0020..U+007E are invalid. * * If invalid font variation settings is provided, this method does nothing and returning false * with printing error message to the logcat. * * Different from {@link #setFontVariationSettings(String)}, this overrides the font variation * settings which is already assigned to the font instance. For example, if the underlying font * is configured as {@code 'wght' 500, 'ital' 1}, and if the override is specified as * {@code 'wght' 700, `wdth` 150}, then the effective font variation setting is * {@code `wght' 700, 'ital' 1, 'wdth' 150}. The `wght` value is updated by override, 'ital' * value is preserved because no overrides, and `wdth` value is added by override. * * @param fontVariationOverride font variation settings. You can pass null or empty string as * no variation settings. * * @return true if the provided font variation settings is valid. Otherwise returns false. * * @see #getFontVariationSettings() * @see #setFontVariationSettings(String) * @see #getFontVariationOverride() * @see FontVariationAxis */ @FlaggedApi(FLAG_TYPEFACE_REDESIGN_READONLY) public boolean setFontVariationOverride(@Nullable String fontVariationOverride) { if (Objects.equals(fontVariationOverride, mFontVariationOverride)) { return true; } List<FontVariationAxis> axes; try { axes = FontVariationAxis.fromFontVariationSettingsForList(fontVariationOverride); } catch (IllegalArgumentException e) { Log.i(TAG, "failed to parse font variation settings.", e); return false; } long builderPtr = nCreateFontVariationBuilder(axes.size()); for (int i = 0; i < axes.size(); ++i) { FontVariationAxis axis = axes.get(i); nAddFontVariationToBuilder( builderPtr, axis.getOpenTypeTagValue(), axis.getStyleValue()); } nSetFontVariationOverride(mNativePaint, builderPtr); mFontVariationOverride = fontVariationOverride; return true; } /** * Gets the current font variation override value. * * @return a current font variation override value. */ @FlaggedApi(FLAG_TYPEFACE_REDESIGN_READONLY) public @Nullable String getFontVariationOverride() { return mFontVariationOverride; } /** * Get the current value of start hyphen edit. * Loading Loading
core/api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -16896,6 +16896,7 @@ package android.graphics { method public android.graphics.Paint.FontMetricsInt getFontMetricsInt(); method @FlaggedApi("com.android.text.flags.fix_line_height_for_locale") public void getFontMetricsIntForLocale(@NonNull android.graphics.Paint.FontMetricsInt); method public float getFontSpacing(); method @FlaggedApi("com.android.text.flags.typeface_redesign_readonly") @Nullable public String getFontVariationOverride(); method public String getFontVariationSettings(); method public int getHinting(); method public float getLetterSpacing(); Loading Loading @@ -16974,6 +16975,7 @@ package android.graphics { method public void setFilterBitmap(boolean); method public void setFlags(int); method public void setFontFeatureSettings(String); method @FlaggedApi("com.android.text.flags.typeface_redesign_readonly") public boolean setFontVariationOverride(@Nullable String); method public boolean setFontVariationSettings(String); method public void setHinting(int); method public void setLetterSpacing(float);
graphics/java/android/graphics/Paint.java +71 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.graphics; import static com.android.text.flags.Flags.FLAG_DEPRECATE_ELEGANT_TEXT_HEIGHT_API; import static com.android.text.flags.Flags.FLAG_FIX_LINE_HEIGHT_FOR_LOCALE; import static com.android.text.flags.Flags.FLAG_LETTER_SPACING_JUSTIFICATION; import static com.android.text.flags.Flags.FLAG_TYPEFACE_REDESIGN_READONLY; import static com.android.text.flags.Flags.FLAG_VERTICAL_TEXT_LAYOUT; import android.annotation.ColorInt; Loading Loading @@ -57,6 +58,7 @@ import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Objects; Loading Loading @@ -96,6 +98,7 @@ public class Paint { private LocaleList mLocales; private String mFontFeatureSettings; private String mFontVariationSettings; private String mFontVariationOverride; private float mShadowLayerRadius; private float mShadowLayerDx; Loading Loading @@ -2140,6 +2143,12 @@ public class Paint { * @see #getFontVariationSettings() * @see FontVariationAxis */ // Add following API description once the setFontVariationOverride becomes public. // This method generates new variation instance of the {@link Typeface} instance and set it to // this object. Therefore, subsequent {@link #setTypeface(Typeface)} call will clear the font // variation settings. Also, creating variation instance of the Typeface requires non trivial // amount of time and memories, therefore consider using // {@link #setFontVariationOverride(String, int)} for better performance. public boolean setFontVariationSettings(String fontVariationSettings) { final String settings = TextUtils.nullIfEmpty(fontVariationSettings); if (settings == mFontVariationSettings Loading Loading @@ -2173,6 +2182,68 @@ public class Paint { return true; } /** * Sets TrueType or OpenType font variation settings for overriding. * * The settings string is constructed from multiple pairs of axis tag and style values. The axis * tag must contain four ASCII characters and must be wrapped with single quotes (U+0027) or * double quotes (U+0022). Axis strings that are longer or shorter than four characters, or * contain characters outside of U+0020..U+007E are invalid. * * If invalid font variation settings is provided, this method does nothing and returning false * with printing error message to the logcat. * * Different from {@link #setFontVariationSettings(String)}, this overrides the font variation * settings which is already assigned to the font instance. For example, if the underlying font * is configured as {@code 'wght' 500, 'ital' 1}, and if the override is specified as * {@code 'wght' 700, `wdth` 150}, then the effective font variation setting is * {@code `wght' 700, 'ital' 1, 'wdth' 150}. The `wght` value is updated by override, 'ital' * value is preserved because no overrides, and `wdth` value is added by override. * * @param fontVariationOverride font variation settings. You can pass null or empty string as * no variation settings. * * @return true if the provided font variation settings is valid. Otherwise returns false. * * @see #getFontVariationSettings() * @see #setFontVariationSettings(String) * @see #getFontVariationOverride() * @see FontVariationAxis */ @FlaggedApi(FLAG_TYPEFACE_REDESIGN_READONLY) public boolean setFontVariationOverride(@Nullable String fontVariationOverride) { if (Objects.equals(fontVariationOverride, mFontVariationOverride)) { return true; } List<FontVariationAxis> axes; try { axes = FontVariationAxis.fromFontVariationSettingsForList(fontVariationOverride); } catch (IllegalArgumentException e) { Log.i(TAG, "failed to parse font variation settings.", e); return false; } long builderPtr = nCreateFontVariationBuilder(axes.size()); for (int i = 0; i < axes.size(); ++i) { FontVariationAxis axis = axes.get(i); nAddFontVariationToBuilder( builderPtr, axis.getOpenTypeTagValue(), axis.getStyleValue()); } nSetFontVariationOverride(mNativePaint, builderPtr); mFontVariationOverride = fontVariationOverride; return true; } /** * Gets the current font variation override value. * * @return a current font variation override value. */ @FlaggedApi(FLAG_TYPEFACE_REDESIGN_READONLY) public @Nullable String getFontVariationOverride() { return mFontVariationOverride; } /** * Get the current value of start hyphen edit. * Loading