Fontinator

Additional

Language
Java
Version
1.1 (Aug 30, 2015)
Created
Nov 28, 2014
Updated
Jul 12, 2016
Owner
Sven Nähler (svendvd)
Activity
Badge
Generate
Download
Source code

Promotion

Fontinator

Fontinator is an Android-Library that make it simply easy to use custom Fonts.

Version

1.1.3

How to Use:

1. Add fonts to the /assets/fonts folder of your Android Studio Project
2. add compile 'de.morrox.fontinator:Fontinator:1.1.3' to your Application Gradle file
dependencies {
    compile 'de.morrox.fontinator:Fontinator:1.1.3'
    ...
}
3. add xmlns:app to the Layout XML root
xmlns:app="http://schemas.android.com/apk/res-auto"
4. Replace Android Widgets in Layout XML with the Fontinator Widgets

For Example simply replace:

<TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textAllCaps="true"
  android:textStyle="bold"
  android:text="@string/hello_world"
  android:textColor="@android:color/black"
  ... />

whit this XML Code

<de.morrox.fontinator.FontTextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  app:font="My Custom Font Bold.otf"
  app:textTransform="uppercase"
  app:letterSpace="1.4"
  android:text="@string/hello_world"
  android:textColor="@android:color/black"
  ...
  />

To set font file from /assets/fonts/ (use splited fonts without android:textStyle!)

  font="My Custom Font Bold.otf"

Replace textAllCaps=true with

  textTransform="uppercase"

[Optional] Add LetterSpace

  letterSpace="1.4"
5. Enjoy Fonted Widgets

How it works

Fontinator extend TextView based Android Widgets like the Button to inject a Cached Fontface loader

Issues

Please Note that the Android Layout Editor currently can't Preview Custom Fonts

Make Custom Widgets from a TextView based Widget

Option 1: simply extend

Option 2: Use TypefaceLoader and Typefaceable Interface

    import de.morrox.fontinator.utilities.TypefaceLoader;
    import de.morrox.fontinator.utilities.Typefaceable;
    
    public class MyCustomFontView extends Button implements Typefaceable{
        private TypefaceLoader typefaceLoader;
        public MyCustomFontView(Context context, AttributeSet attrs) {
            super(context, attrs);
            typefaceLoader = TypefaceLoader.get(this, context, attrs);
        }
    
        @Override
        public void setText(CharSequence text, BufferType type) {
            Pair<CharSequence, BufferType> pair = TypefaceLoader.inject(typefaceLoader, text, type);
            super.setText(pair.first, pair.second);
        }
        
        public void setFont(String font) {
            typefaceLoader.setFont(font);
        }
    
        public void setFont(@StringRes int font) {
            typefaceLoader.setFont(getResources().getString(font));
        }
    }