Created
May 12, 2014 23:19
-
-
Save kzim44/d2c8efaf2947caca839f to your computer and use it in GitHub Desktop.
Android: Support class to enable setting a custom type face in a spannable string.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package my.app; | |
import android.graphics.Paint; | |
import android.graphics.Typeface; | |
import android.text.TextPaint; | |
import android.text.style.TypefaceSpan; | |
public class CustomTypefaceSpan extends TypefaceSpan { | |
private final Typeface newType; | |
public CustomTypefaceSpan(String family, Typeface type) { | |
super(family); | |
newType = type; | |
} | |
@Override | |
public void updateDrawState(TextPaint ds) { | |
applyCustomTypeFace(ds, newType); | |
} | |
@Override | |
public void updateMeasureState(TextPaint paint) { | |
applyCustomTypeFace(paint, newType); | |
} | |
private static void applyCustomTypeFace(Paint paint, Typeface tf) { | |
int oldStyle; | |
Typeface old = paint.getTypeface(); | |
if (old == null) { | |
oldStyle = 0; | |
} else { | |
oldStyle = old.getStyle(); | |
} | |
int fake = oldStyle & ~tf.getStyle(); | |
if ((fake & Typeface.BOLD) != 0) { | |
paint.setFakeBoldText(true); | |
} | |
if ((fake & Typeface.ITALIC) != 0) { | |
paint.setTextSkewX(-0.25f); | |
} | |
paint.setTypeface(tf); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment