// Path: MagicViews/src/main/java/com/ivankocijan/magicviews/MagicFontSpan.java
// public class MagicFontSpan extends TypefaceSpan {
// 
//     public static final float ITALIC_SKEW = -0.25f;
// 
//     private final Typeface typeface;
// 
//     public MagicFontSpan(Context context, String typeface) {
//         super("");
//         this.typeface = MagicFont.getInstance(context).getTypeface(typeface);
//     }
// 
//     @Override
//     public void updateDrawState(TextPaint ds) {
//         apply(ds);
//     }
// 
//     @Override
//     public void updateMeasureState(TextPaint paint) {
//         apply(paint);
//     }
// 
//     private void apply(final Paint paint) {
//         final Typeface oldTypeface = paint.getTypeface();
//         final int oldStyle = oldTypeface != null ? oldTypeface.getStyle() : 0;
//         final int fakeStyle = oldStyle & ~typeface.getStyle();
// 
//         if ((fakeStyle & Typeface.BOLD) != 0) {
//             paint.setFakeBoldText(true);
//         }
// 
//         if ((fakeStyle & Typeface.ITALIC) != 0) {
//             paint.setTextSkewX(ITALIC_SKEW);
//         }
// 
//         paint.setTypeface(typeface);
//     }
// }
// 
// Path: MagicViews/src/main/java/com/ivankocijan/magicviews/views/MagicTextView.java
// public class MagicTextView extends AppCompatTextView implements MagicView {
// 
// 
//     public MagicTextView(Context context) {
//         this(context, null);
//     }
// 
//     public MagicTextView(Context context, AttributeSet attrs) {
//         this(context, attrs, 0);
//     }
// 
//     public MagicTextView(Context context, AttributeSet attrs, int defStyle) {
//         super(context, attrs, defStyle);
//         init(attrs);
//     }
// 
//     private void init(AttributeSet attrs) {
//         if (!isInEditMode()) {
//             AttrsUtils.setAttributes(getContext(), attrs, this);
//         }
//     }
// 
//     @Override
//     public void setFont(String fontName) {
//         if (!isInEditMode()) {
//             FontUtils.setTypeface(getContext(), fontName, this);
//         }
//     }
// }


import com.ivankocijan.TestApp.R;
import com.ivankocijan.magicviews.MagicFontSpan;
import com.ivankocijan.magicviews.views.MagicTextView;
import android.app.Activity;
import android.os.Bundle;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import butterknife.ButterKnife;
import butterknife.InjectView;
package com.ivankocijan.TestApp.activites;




/**
 * Created by jmarkovic on 24/02/16.
 */
public class MagicFontSpanExampleActivity extends Activity {

    @InjectView(R.id.tv_long_text) MagicTextView tvLongText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_magic_font_span_example);
        ButterKnife.inject(this);

        SpannableStringBuilder builder = new SpannableStringBuilder(getString(R.string.magic_font_span_text));

        builder.setSpan(new MagicFontSpan(this, "open_sans_semi_bold.ttf"), 15, 23, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
// Path: MagicViews/src/main/java/com/ivankocijan/magicviews/MagicFontSpan.java
// public class MagicFontSpan extends TypefaceSpan {
// 
//     public static final float ITALIC_SKEW = -0.25f;
// 
//     private final Typeface typeface;
// 
//     public MagicFontSpan(Context context, String typeface) {
//         super("");
//         this.typeface = MagicFont.getInstance(context).getTypeface(typeface);
//     }
// 
//     @Override
//     public void updateDrawState(TextPaint ds) {
//         apply(ds);
//     }
// 
//     @Override
//     public void updateMeasureState(TextPaint paint) {
//         apply(paint);
//     }
// 
//     private void apply(final Paint paint) {
//         final Typeface oldTypeface = paint.getTypeface();
//         final int oldStyle = oldTypeface != null ? oldTypeface.getStyle() : 0;
//         final int fakeStyle = oldStyle & ~typeface.getStyle();
// 
//         if ((fakeStyle & Typeface.BOLD) != 0) {
//             paint.setFakeBoldText(true);
//         }
// 
//         if ((fakeStyle & Typeface.ITALIC) != 0) {
//             paint.setTextSkewX(ITALIC_SKEW);
//         }
// 
//         paint.setTypeface(typeface);
//     }
// }
// 
// Path: MagicViews/src/main/java/com/ivankocijan/magicviews/views/MagicTextView.java
// public class MagicTextView extends AppCompatTextView implements MagicView {
// 
// 
//     public MagicTextView(Context context) {
//         this(context, null);
//     }
// 
//     public MagicTextView(Context context, AttributeSet attrs) {
//         this(context, attrs, 0);
//     }
// 
//     public MagicTextView(Context context, AttributeSet attrs, int defStyle) {
//         super(context, attrs, defStyle);
//         init(attrs);
//     }
// 
//     private void init(AttributeSet attrs) {
//         if (!isInEditMode()) {
//             AttrsUtils.setAttributes(getContext(), attrs, this);
//         }
//     }
// 
//     @Override
//     public void setFont(String fontName) {
//         if (!isInEditMode()) {
//             FontUtils.setTypeface(getContext(), fontName, this);
//         }
//     }
// }


// Path: TestApp/src/main/java/com/ivankocijan/TestApp/activites/MagicFontSpanExampleActivity.java
import com.ivankocijan.TestApp.R;
import com.ivankocijan.magicviews.MagicFontSpan;
import com.ivankocijan.magicviews.views.MagicTextView;
import android.app.Activity;
import android.os.Bundle;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import butterknife.ButterKnife;
import butterknife.InjectView;

package com.ivankocijan.TestApp.activites;




/**
 * Created by jmarkovic on 24/02/16.
 */
public class MagicFontSpanExampleActivity extends Activity {

    @InjectView(R.id.tv_long_text) MagicTextView tvLongText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_magic_font_span_example);
        ButterKnife.inject(this);

        SpannableStringBuilder builder = new SpannableStringBuilder(getString(R.string.magic_font_span_text));

        builder.setSpan(new MagicFontSpan(this, "open_sans_semi_bold.ttf"), 15, 23, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
        builder.setSpan(new MagicFontSpan(this, "open_sans_light.ttf"), 27, 44, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);