自定义字体无法正确显示某些字符

时间:2013-11-22 11:44:52

标签: android android-custom-view android-fonts

我住在匈牙利,我们有一些特殊字符,如:ő,ű...等

在我的Android应用程序中,我制作了自定义TextView。这个自定义TextView在其构造函数中设置了一个自定义字体,它可以正常工作,除了一个小bug。

特殊字符如:“ő”,不会转换新字体,它仍然是相同的默认字体。

See my pic here

(也许有些字符编码稀薄或我真的不知道...)

(我使用的字体是Helvetica Neue Light,如果我从我的电脑中的Windows / Fonts文件夹打开,我可以看到特殊字符,所以这意味着这个字体确实有“ő”字符,但有些原因android不能妥善处理。)

如果可以,请帮忙!谢谢!

E D I T:

我的自定义textView类:

public class FlexiTextView extends TextView {

public FlexiTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    initView(context);
}

public FlexiTextView(Context context) {
    super(context);
    initView(context);
}

public FlexiTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    initView(context);
}

private void initView(Context context) {


    try {
        Typeface typeface = Typeface.createFromAsset(context.getAssets(), "fonts/helveticaneue.ttf");
        this.setTypeface(typeface);
    } catch (Exception ex) {
        ex.printStackTrace();
    }

}

}

2 个答案:

答案 0 :(得分:1)

看起来很简单,你使用的字体不支持某些字符。像öœâ这样的字符不仅仅是带有重音的基本字母,它们(在字体中)被设计为新的和不同的字符。这就是为什么你必须选择支持你的语言特殊字符的字体。否则,可能会使用默认的系统字体。

答案 1 :(得分:0)

问题在于您尝试设置它的设备。只是尝试找到具有相同字体的其他.ttf。并且不要这样设置字体! Typeface.createFromAsset()太贵了。为此使用缓存。 link which saves your performance