У меня была та же проблема, я не думаю, что это зависит от устройства.
Я решил ее, убедившись в следующем:
Если у вас есть большечем один проект, убедитесь, что ваш файл шрифта хранится в папке активов вашего основного проекта - это не проект зависимости.
для безопасности переименуйте ваш шрифт ввсе в нижнем регистре и ссылаться на него как таковой в вашем коде.
FontUtils.setDefaultFont(this, "DEFAULT", "fonts/arimo-regular.ttf");
Вот класс для переопределения шрифта по умолчанию для всего моего приложения.
public class FontUtils {
/**
* Sets the default font.
*
* @param context the context
* @param staticTypefaceFieldName the static typeface field name
* @param fontAssetName the font asset name
*/
public static void setDefaultFont(Context context,
String staticTypefaceFieldName, String fontAssetName) {
final Typeface regular = Typefaces.get(context, fontAssetName);
replaceFont(staticTypefaceFieldName, regular);
}
/**
* Replace a font.
*
* @param staticTypefaceFieldName the static typeface field name
* @param newTypeface the new typeface
*/
protected static void replaceFont(String staticTypefaceFieldName,
final Typeface newTypeface) {
try {
final Field StaticField = Typeface.class
.getDeclaredField(staticTypefaceFieldName);
StaticField.setAccessible(true);
StaticField.set(null, newTypeface);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
static class Typefaces {
private static final Hashtable<String, Typeface> cache = new Hashtable<String, Typeface>();
public static Typeface get(Context c, String assetPath) {
synchronized (cache) {
if (!cache.containsKey(assetPath)) {
try {
Typeface t = Typeface.createFromAsset(c.getAssets(),
assetPath);
cache.put(assetPath, t);
} catch (Exception e) {
System.out.println("Could not get typeface '" + assetPath + "' because " + e.getMessage());
return null;
}
}
return cache.get(assetPath);
}
}
}
}