Reflection в помощь:
https://stackoverflow.com/questions/2711858/is-it-...
У класса Typeface определены стандартные шрифты, достаточно переопределить нужные значения и будет Вам счастье.
public class Typeface {
...
/** The default NORMAL typeface object */
public static final Typeface DEFAULT;
/**
* The default BOLD typeface object. Note: this may be not actually be
* bold, depending on what fonts are installed. Call getStyle() to know
* for sure.
*/
public static final Typeface DEFAULT_BOLD;
/** The NORMAL style of the default sans serif typeface. */
public static final Typeface SANS_SERIF;
/** The NORMAL style of the default serif typeface. */
public static final Typeface SERIF;
/** The NORMAL style of the default monospace typeface. */
public static final Typeface MONOSPACE;
...
}
Можно ещё сделать примерно так:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay">
<TextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</android.support.v7.widget.Toolbar>
Потом в коде установить шрифт:
Typeface typeface = Typeface.createFromAsset(context.getAssets(), fontAssetName);
TextView toolbarTitle = (TextView) findViewById(R.id.toolbar_title);
toolbarTitle.setTypeface(typeface);