Skip to content

Commit

Permalink
Added checks before generating styled typeface
Browse files Browse the repository at this point in the history
Other changes:
  • Added flag for enabling merging of styles
  • Loading branch information
c-b-h authored and noties committed Oct 9, 2020
1 parent 89e89c7 commit 132756a
Showing 1 changed file with 27 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,34 +23,48 @@ public static CustomTypefaceSpan create(@NonNull Typeface typeface) {
return new CustomTypefaceSpan(typeface);
}

@NonNull
public static CustomTypefaceSpan create(@NonNull Typeface typeface, boolean mergeStyles) {
return new CustomTypefaceSpan(typeface, mergeStyles);
}

private final Typeface typeface;

private final boolean mergeStyles;

public CustomTypefaceSpan(@NonNull Typeface typeface) {
this(typeface, false);
}

public CustomTypefaceSpan(@NonNull Typeface typeface, boolean mergeStyles) {
this.typeface = typeface;
this.mergeStyles = mergeStyles;
}


@Override
public void updateMeasureState(@NonNull TextPaint p) {
updatePaint(p);
public void updateMeasureState(@NonNull TextPaint paint) {
updatePaint(paint);
}

@Override
public void updateDrawState(@NonNull TextPaint tp) {
updatePaint(tp);
public void updateDrawState(@NonNull TextPaint paint) {
updatePaint(paint);
}

private void updatePaint(@NonNull TextPaint paint) {
final Typeface old = paint.getTypeface();
final int oldStyle;
if (old == null) {
oldStyle = Typeface.NORMAL;
final Typeface oldTypeface = paint.getTypeface();
if (!mergeStyles ||
oldTypeface == null ||
oldTypeface.getStyle() == Typeface.NORMAL) {
paint.setTypeface(typeface);
} else {
oldStyle = old.getStyle();
}
final int oldStyle = oldTypeface.getStyle();

@SuppressLint("WrongConstant") final int want = oldStyle | typeface.getStyle();
final Typeface styledTypeface = Typeface.create(typeface, want);
@SuppressLint("WrongConstant") final int want = oldStyle | typeface.getStyle();
final Typeface styledTypeface = Typeface.create(typeface, want);

paint.setTypeface(styledTypeface);
paint.setTypeface(styledTypeface);
}
}
}

0 comments on commit 132756a

Please sign in to comment.