在Android 4.0上测试使用Helvetica Neue作为主要字体的应用程序时,我发现与多个不同版本的Android相比,字体呈现存在不一致.我们在2.1,2.2.2,2.3.5,3.2,4.0和4.0.3上对此进行了测试,每次都得到相同的结果.我们还使用不同的字体二进制文件进行了这些测试,结果相同.
任何输入或解决方法将不胜感激.
下面是一个示例应用程序的屏幕截图,显示了不需要的结果,第一个是2.3.5,第二个是4.0.3.


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
textView.setText("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.");
textView.setTypeface(Typeface.createFromAsset(getAssets(), "Helvetica Neue.ttf"));
textView.setTextSize(9);
setContentView(textView);
}
Run Code Online (Sandbox Code Playgroud)
虽然我们从未找到Helvetica渲染错误的解决方案,但我们能够说服客户在我们向他们展示Galaxy Nexus上的错误后切换到Roboto.
更新:
public class TextViewCompat extends TextView {
public TextViewCompat(Context context) {
super(context);
setup(context, null, 0);
}
public TextViewCompat(Context context, AttributeSet attrs) {
super(context, attrs);
setup(context, attrs, 0);
}
public TextViewCompat(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setup(context, attrs, defStyle);
}
private void setup(Context context, AttributeSet attrs, int defStyle) {
setPaintFlags(getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6105 次 |
| 最近记录: |