/* Swisscom Safe Connect Copyright (C) 2014 Swisscom This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.swisscom.safeconnect.utils; import android.content.Context; import android.graphics.Paint; import android.graphics.Typeface; import android.text.TextPaint; import android.text.style.RelativeSizeSpan; import android.text.style.TypefaceSpan; public class Fonts { public static Typeface FONT_BOLD; public static Typeface FONT_NORMAL; public static TypefaceSpan FONT_BOLD_SPAN; public static TypefaceSpan FONT_NORMAL_SPAN; public static RelativeSizeSpan SIZE_TAB_TITLE; public static void init(Context context) { if (FONT_BOLD != null) return; Context appCtx = context.getApplicationContext(); FONT_BOLD = Typeface.createFromAsset(appCtx.getAssets(), "Ftb.ttf"); FONT_NORMAL = Typeface.createFromAsset(appCtx.getAssets(), "Ftc.ttf"); FONT_BOLD_SPAN = new CustomTypefaceSpan("", FONT_BOLD); FONT_NORMAL_SPAN = new CustomTypefaceSpan("", FONT_NORMAL); SIZE_TAB_TITLE = new RelativeSizeSpan(1.2f); } public static boolean isInitialized() { return FONT_BOLD != null; } public static 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 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); } } }