diff --git a/markwon-core/src/main/java/io/noties/markwon/core/spans/CustomTypefaceSpan.java b/markwon-core/src/main/java/io/noties/markwon/core/spans/CustomTypefaceSpan.java index b12a80d6..2d5ac089 100644 --- a/markwon-core/src/main/java/io/noties/markwon/core/spans/CustomTypefaceSpan.java +++ b/markwon-core/src/main/java/io/noties/markwon/core/spans/CustomTypefaceSpan.java @@ -1,5 +1,6 @@ package io.noties.markwon.core.spans; +import android.annotation.SuppressLint; import android.graphics.Typeface; import android.text.TextPaint; import android.text.style.MetricAffectingSpan; @@ -34,11 +35,22 @@ public class CustomTypefaceSpan extends MetricAffectingSpan { } @Override - public void updateDrawState(TextPaint tp) { + public void updateDrawState(@NonNull TextPaint tp) { updatePaint(tp); } private void updatePaint(@NonNull TextPaint paint) { - paint.setTypeface(typeface); + final Typeface old = paint.getTypeface(); + final int oldStyle; + if (old == null) { + oldStyle = Typeface.NORMAL; + } else { + oldStyle = old.getStyle(); + } + + @SuppressLint("WrongConstant") final int want = oldStyle | typeface.getStyle(); + final Typeface styledTypeface = Typeface.create(typeface, want); + + paint.setTypeface(styledTypeface); } }