Loading core/api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -45818,8 +45818,10 @@ package android.text.style { public class StyleSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan { ctor public StyleSpan(int); ctor public StyleSpan(int, int); ctor public StyleSpan(@NonNull android.os.Parcel); method public int describeContents(); method public int getFontWeightAdjustment(); method public int getSpanTypeId(); method public int getStyle(); method public void updateDrawState(android.text.TextPaint); core/java/android/content/res/StringBlock.java +6 −2 Original line number Diff line number Diff line Loading @@ -16,8 +16,9 @@ package android.content.res; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityThread; import android.app.Application; import android.compat.annotation.UnsupportedAppUsage; import android.graphics.Color; import android.graphics.Paint; Loading Loading @@ -238,7 +239,10 @@ public final class StringBlock implements Closeable { if (type == ids.boldId) { buffer.setSpan(new StyleSpan(Typeface.BOLD), Application application = ActivityThread.currentApplication(); int fontWeightAdjustment = application.getResources().getConfiguration().fontWeightAdjustment; buffer.setSpan(new StyleSpan(Typeface.BOLD, fontWeightAdjustment), style[i+1], style[i+2]+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } else if (type == ids.italicId) { Loading core/java/android/text/Html.java +14 −3 Original line number Diff line number Diff line Loading @@ -858,9 +858,17 @@ class HtmlToSpannedConverter implements ContentHandler { } else if (tag.equalsIgnoreCase("span")) { endCssStyle(mSpannableStringBuilder); } else if (tag.equalsIgnoreCase("strong")) { end(mSpannableStringBuilder, Bold.class, new StyleSpan(Typeface.BOLD)); Application application = ActivityThread.currentApplication(); int fontWeightAdjustment = application.getResources().getConfiguration().fontWeightAdjustment; end(mSpannableStringBuilder, Bold.class, new StyleSpan(Typeface.BOLD, fontWeightAdjustment)); } else if (tag.equalsIgnoreCase("b")) { end(mSpannableStringBuilder, Bold.class, new StyleSpan(Typeface.BOLD)); Application application = ActivityThread.currentApplication(); int fontWeightAdjustment = application.getResources().getConfiguration().fontWeightAdjustment; end(mSpannableStringBuilder, Bold.class, new StyleSpan(Typeface.BOLD, fontWeightAdjustment)); } else if (tag.equalsIgnoreCase("em")) { end(mSpannableStringBuilder, Italic.class, new StyleSpan(Typeface.ITALIC)); } else if (tag.equalsIgnoreCase("cite")) { Loading Loading @@ -1028,8 +1036,11 @@ class HtmlToSpannedConverter implements ContentHandler { // Their ranges should not include the newlines at the end Heading h = getLast(text, Heading.class); if (h != null) { Application application = ActivityThread.currentApplication(); int fontWeightAdjustment = application.getResources().getConfiguration().fontWeightAdjustment; setSpanFromMark(text, h, new RelativeSizeSpan(HEADING_SIZES[h.mLevel]), new StyleSpan(Typeface.BOLD)); new StyleSpan(Typeface.BOLD, fontWeightAdjustment)); } endBlockElement(text); Loading core/java/android/text/style/StyleSpan.java +43 −3 Original line number Diff line number Diff line Loading @@ -17,8 +17,10 @@ package android.text.style; import android.annotation.NonNull; import android.content.res.Configuration; import android.graphics.Paint; import android.graphics.Typeface; import android.graphics.fonts.FontStyle; import android.os.Parcel; import android.text.ParcelableSpan; import android.text.TextPaint; Loading @@ -45,6 +47,7 @@ import android.text.TextUtils; public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan { private final int mStyle; private final int mFontWeightAdjustment; /** * Creates a {@link StyleSpan} from a style. Loading @@ -54,7 +57,23 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan { * in {@link Typeface}. */ public StyleSpan(int style) { this(style, Configuration.FONT_WEIGHT_ADJUSTMENT_UNDEFINED); } /** * Creates a {@link StyleSpan} from a style and font weight adjustment. * * @param style An integer constant describing the style for this span. Examples * include bold, italic, and normal. Values are constants defined * in {@link Typeface}. * @param fontWeightAdjustment An integer describing the adjustment to be made to the font * weight. * @see Configuration#fontWeightAdjustment This is the adjustment in text font weight * that is used to reflect the current user's preference for increasing font weight. */ public StyleSpan(@Typeface.Style int style, int fontWeightAdjustment) { mStyle = style; mFontWeightAdjustment = fontWeightAdjustment; } /** Loading @@ -64,6 +83,7 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan { */ public StyleSpan(@NonNull Parcel src) { mStyle = src.readInt(); mFontWeightAdjustment = src.readInt(); } @Override Loading Loading @@ -91,6 +111,7 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan { @Override public void writeToParcelInternal(@NonNull Parcel dest, int flags) { dest.writeInt(mStyle); dest.writeInt(mFontWeightAdjustment); } /** Loading @@ -100,17 +121,24 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan { return mStyle; } /** * Returns the font weight adjustment specified by this span. */ public int getFontWeightAdjustment() { return mFontWeightAdjustment; } @Override public void updateDrawState(TextPaint ds) { apply(ds, mStyle); apply(ds, mStyle, mFontWeightAdjustment); } @Override public void updateMeasureState(TextPaint paint) { apply(paint, mStyle); apply(paint, mStyle, mFontWeightAdjustment); } private static void apply(Paint paint, int style) { private static void apply(Paint paint, int style, int fontWeightAdjustment) { int oldStyle; Typeface old = paint.getTypeface(); Loading @@ -129,6 +157,18 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan { tf = Typeface.create(old, want); } // Base typeface may already be bolded by auto bold. Bold further. if ((style & Typeface.BOLD) != 0) { if (fontWeightAdjustment != 0 && fontWeightAdjustment != Configuration.FONT_WEIGHT_ADJUSTMENT_UNDEFINED) { int newWeight = Math.min( Math.max(tf.getWeight() + fontWeightAdjustment, FontStyle.FONT_WEIGHT_MIN), FontStyle.FONT_WEIGHT_MAX); boolean italic = (want & Typeface.ITALIC) != 0; tf = Typeface.create(tf, newWeight, italic); } } int fake = want & ~tf.getStyle(); if ((fake & Typeface.BOLD) != 0) { Loading Loading
core/api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -45818,8 +45818,10 @@ package android.text.style { public class StyleSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan { ctor public StyleSpan(int); ctor public StyleSpan(int, int); ctor public StyleSpan(@NonNull android.os.Parcel); method public int describeContents(); method public int getFontWeightAdjustment(); method public int getSpanTypeId(); method public int getStyle(); method public void updateDrawState(android.text.TextPaint);
core/java/android/content/res/StringBlock.java +6 −2 Original line number Diff line number Diff line Loading @@ -16,8 +16,9 @@ package android.content.res; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityThread; import android.app.Application; import android.compat.annotation.UnsupportedAppUsage; import android.graphics.Color; import android.graphics.Paint; Loading Loading @@ -238,7 +239,10 @@ public final class StringBlock implements Closeable { if (type == ids.boldId) { buffer.setSpan(new StyleSpan(Typeface.BOLD), Application application = ActivityThread.currentApplication(); int fontWeightAdjustment = application.getResources().getConfiguration().fontWeightAdjustment; buffer.setSpan(new StyleSpan(Typeface.BOLD, fontWeightAdjustment), style[i+1], style[i+2]+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } else if (type == ids.italicId) { Loading
core/java/android/text/Html.java +14 −3 Original line number Diff line number Diff line Loading @@ -858,9 +858,17 @@ class HtmlToSpannedConverter implements ContentHandler { } else if (tag.equalsIgnoreCase("span")) { endCssStyle(mSpannableStringBuilder); } else if (tag.equalsIgnoreCase("strong")) { end(mSpannableStringBuilder, Bold.class, new StyleSpan(Typeface.BOLD)); Application application = ActivityThread.currentApplication(); int fontWeightAdjustment = application.getResources().getConfiguration().fontWeightAdjustment; end(mSpannableStringBuilder, Bold.class, new StyleSpan(Typeface.BOLD, fontWeightAdjustment)); } else if (tag.equalsIgnoreCase("b")) { end(mSpannableStringBuilder, Bold.class, new StyleSpan(Typeface.BOLD)); Application application = ActivityThread.currentApplication(); int fontWeightAdjustment = application.getResources().getConfiguration().fontWeightAdjustment; end(mSpannableStringBuilder, Bold.class, new StyleSpan(Typeface.BOLD, fontWeightAdjustment)); } else if (tag.equalsIgnoreCase("em")) { end(mSpannableStringBuilder, Italic.class, new StyleSpan(Typeface.ITALIC)); } else if (tag.equalsIgnoreCase("cite")) { Loading Loading @@ -1028,8 +1036,11 @@ class HtmlToSpannedConverter implements ContentHandler { // Their ranges should not include the newlines at the end Heading h = getLast(text, Heading.class); if (h != null) { Application application = ActivityThread.currentApplication(); int fontWeightAdjustment = application.getResources().getConfiguration().fontWeightAdjustment; setSpanFromMark(text, h, new RelativeSizeSpan(HEADING_SIZES[h.mLevel]), new StyleSpan(Typeface.BOLD)); new StyleSpan(Typeface.BOLD, fontWeightAdjustment)); } endBlockElement(text); Loading
core/java/android/text/style/StyleSpan.java +43 −3 Original line number Diff line number Diff line Loading @@ -17,8 +17,10 @@ package android.text.style; import android.annotation.NonNull; import android.content.res.Configuration; import android.graphics.Paint; import android.graphics.Typeface; import android.graphics.fonts.FontStyle; import android.os.Parcel; import android.text.ParcelableSpan; import android.text.TextPaint; Loading @@ -45,6 +47,7 @@ import android.text.TextUtils; public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan { private final int mStyle; private final int mFontWeightAdjustment; /** * Creates a {@link StyleSpan} from a style. Loading @@ -54,7 +57,23 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan { * in {@link Typeface}. */ public StyleSpan(int style) { this(style, Configuration.FONT_WEIGHT_ADJUSTMENT_UNDEFINED); } /** * Creates a {@link StyleSpan} from a style and font weight adjustment. * * @param style An integer constant describing the style for this span. Examples * include bold, italic, and normal. Values are constants defined * in {@link Typeface}. * @param fontWeightAdjustment An integer describing the adjustment to be made to the font * weight. * @see Configuration#fontWeightAdjustment This is the adjustment in text font weight * that is used to reflect the current user's preference for increasing font weight. */ public StyleSpan(@Typeface.Style int style, int fontWeightAdjustment) { mStyle = style; mFontWeightAdjustment = fontWeightAdjustment; } /** Loading @@ -64,6 +83,7 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan { */ public StyleSpan(@NonNull Parcel src) { mStyle = src.readInt(); mFontWeightAdjustment = src.readInt(); } @Override Loading Loading @@ -91,6 +111,7 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan { @Override public void writeToParcelInternal(@NonNull Parcel dest, int flags) { dest.writeInt(mStyle); dest.writeInt(mFontWeightAdjustment); } /** Loading @@ -100,17 +121,24 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan { return mStyle; } /** * Returns the font weight adjustment specified by this span. */ public int getFontWeightAdjustment() { return mFontWeightAdjustment; } @Override public void updateDrawState(TextPaint ds) { apply(ds, mStyle); apply(ds, mStyle, mFontWeightAdjustment); } @Override public void updateMeasureState(TextPaint paint) { apply(paint, mStyle); apply(paint, mStyle, mFontWeightAdjustment); } private static void apply(Paint paint, int style) { private static void apply(Paint paint, int style, int fontWeightAdjustment) { int oldStyle; Typeface old = paint.getTypeface(); Loading @@ -129,6 +157,18 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan { tf = Typeface.create(old, want); } // Base typeface may already be bolded by auto bold. Bold further. if ((style & Typeface.BOLD) != 0) { if (fontWeightAdjustment != 0 && fontWeightAdjustment != Configuration.FONT_WEIGHT_ADJUSTMENT_UNDEFINED) { int newWeight = Math.min( Math.max(tf.getWeight() + fontWeightAdjustment, FontStyle.FONT_WEIGHT_MIN), FontStyle.FONT_WEIGHT_MAX); boolean italic = (want & Typeface.ITALIC) != 0; tf = Typeface.create(tf, newWeight, italic); } } int fake = want & ~tf.getStyle(); if ((fake & Typeface.BOLD) != 0) { Loading