Home » Android » types – Custom ttf fonts are not showing properly in TextView on Android 4.4 KitKat

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

Posted by: admin June 15, 2020 Leave a comment

Questions:

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?

How to&Answers:

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.

Answer:

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

Answer:

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…

Answer:

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)

Answer:

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.