For custom fonts in EditText you can use following class: 
public class CustomEditText extends AppCompatEditText {
public CustomEditText (Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init(attrs);
}
public CustomEditText (Context context, AttributeSet attrs) {
    super(context, attrs);
    init(attrs);
}
public CustomEditText (Context context) {
    super(context);
    init(null);
}
Typeface myTypeface;
private void init(AttributeSet attrs) {
    if (attrs != null) {
        TypedArray a = getContext().obtainStyledAttributes(attrs,
                R.styleable.CustomTextView);
        String fontName = "Orkney Medium.otf";
        if (fontName != null && !isInEditMode()) {
            myTypeface = Typeface.createFromAsset(getContext().getAssets(),
                    fontName);
        }
        setTypeface(myTypeface);
        a.recycle();
    }
}
}
XML Code : 
  <com.utils.CustomEditText
                    android:id="@+id/edt_first_name_register"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@null"
                    android:hint="@string/hint_first_name"
                    android:inputType="textCapWords"
                    android:imeOptions="actionNext"
                    android:singleLine="true"
                    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
                    android:paddingTop="@dimen/15dp"
                    android:textColor="@color/black"
                    android:textSize="20sp" />
For TextInputLayout custom classes does not work in all cases, But you can do something like this for optimized solution.
Put this in your Java Class :
 public static void setTextInputLayoutTypeFace(Context mContext, TextInputLayout... textInputLayout) {
    for (TextInputLayout til : textInputLayout) {
        Typeface typeface = Typeface.createFromAsset(mContext.getAssets(), "Orkney Regular.otf");
        til.setTypeface(typeface);
    }
}
Call the above method using : 
setTextInputLayoutTypeFace(mContext, tlFirstNameRegister, tlLastNameRegister,
            tlUsernameRegister, tlEmailIdRegister, tlDateOfBirthRegister, tlMobileRegister, tlPasswordRegister,
            tlConfPasswordRegister);
Its not the best solution. But it will work.