Custom ttf fonts are not showing properly in TextView on Android 4.4 KitKat

柔情痞子 提交于 2019-11-30 09:00:22

问题


I have some text which has some bolded parts. Until KitKat this strategy (as mentioned in this post) worked perfectly well

My strings resources file:

<string name="multi_style_text">NON-BOLD TEXT \n<b>BOLD</b></string>

My application code in fragment:

txtView.setTypeface(FontUtils.getOstrichRegular(this.getActivity()));
...
public static Typeface getOstrichRegular(Context context) {
   return Typeface.createFromAsset(context.getAssets(),
                                "fonts/ostrich_regular.ttf");
}

Currently (in KitKat), the bolded part is not shown in the custom font, the non-bolded part is shown in the custom font. In previous versions of Android, all of the text was shown in the custom font.

What gives?


回答1:


So, after being frustrated by this bug, I searched around and found a solution to the problem. In my current project we use calibri.ttf font. that was working fine up to 4.4. Once i got the update to my nexus 4, All the TextViews with Calibri font were showing "ff" instead of the entire text.

THE FIX - get an .otf (open type font) version of your font, and put in the project, works like a charm. Too bad google didn't inform the developers on this and there's very little documentation on the matter.




回答2:


Apparently this is a bug in KitKat and has been fixed in an internal tree.




回答3:


Put your custom font in android assets under folder name "font" or whatever you want

Try this

myTypeface = Typeface.createFromAsset(this.getAssets(),
            "fonts/<<your font>>.ttf");

in onCreate() then

[use youcontroll].setTypeface(myTypeface);

Best of Luck...




回答4:


I resolved the problem by converting my file.ttf to file.otf

remplace :

Typeface typeface = Typeface.createFromAsset(activity.getAssets(), "fonts/ostrich_regular.ttf");
yourTextView.setTypeface(typeface);

by :

Typeface typeface = Typeface.createFromAsset(activity.getAssets(), "fonts/ostrich_regular.otf");
yourTextView.setTypeface(typeface);

FYI : the .otf format work for all android version (not only on kitkat)




回答5:


After many hours searching for roboto.otf (2014 year) I understood that it was a mistake. Simply download a normal ttf font from https://www.fontsquirrel.com/fonts/roboto-2014 and copy to assets folder, then use setTypeface. Also you may convert it to otf with any web-site.



来源:https://stackoverflow.com/questions/20107072/custom-ttf-fonts-are-not-showing-properly-in-textview-on-android-4-4-kitkat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!