content: /*
   * Created by LuaView.
   * Copyright (c) 2017, Alibaba Group. All rights reserved.
   *
   * This source code is licensed under the MIT.
   * For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
   */
  
  package com.taobao.luaview.extend;
  
  import android.graphics.Paint;
  import android.graphics.Typeface;
  import android.text.TextPaint;
  import android.text.style.TypefaceSpan;
  
  /**
   * 自定义 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);
      }
  }