Android 4.4 KitKat上的TextView中无法正确显示自定义ttf字体

时间:2013-11-20 21:09:27

标签: android types fonts textview android-fonts

我有一些文字有一些粗体部分。直到KitKat这个策略(as mentioned in this post)运作得非常好

我的字符串资源文件:

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

片段中的我的应用程序代码:

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

目前(在KitKat中),粗体部分未显示在自定义字体中,非粗体部分显示在自定义字体中。在以前的Android版本中,所有文本都以自定义字体显示。

是什么给出了?

5 个答案:

答案 0 :(得分:22)

所以,在被这个bug感到沮丧之后,我四处搜索并找到了问题的解决方案。 在我目前的项目中,我们使用calibri.ttf字体。这工作正常,达到4.4。一旦我得到了我的nexus 4的更新,所有带Calibri字体的TextViews都显示“ff”而不是整个文本。

THE FIX - 获取字体的.otf(开放式字体)版本,并放入项目,就像一个魅力。太糟糕的谷歌并没有告知开发人员这方面的事情,而且关于此事的文件很少。

答案 1 :(得分:2)

答案 2 :(得分:0)

将自定义字体放在文件夹名称“font”或任何您想要的

下的android资源中

试试这个

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

onCreate()然后

[use youcontroll].setTypeface(myTypeface);

最好的运气......

答案 3 :(得分:0)

我通过将file.ttf转换为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);

仅供参考:.otf格式适用于所有Android版本(不仅仅适用于kitkat)

答案 4 :(得分:0)

经过几个小时搜索roboto.otf(2014年),我明白这是一个错误。只需从https://www.fontsquirrel.com/fonts/roboto-2014下载普通的ttf字体并复制到assets文件夹,然后使用setTypeface。 您也可以使用任何网站将其转换为otf。