Android中自定义字体上的水平条纹

时间:2013-01-03 11:27:31

标签: android image fonts appearance typeface

我正在尝试在文本中添加自定义字体,但问题是文本上面会出现垂直条纹。它们不是字体,问题似乎只出现在某些Android设备上。

这是我的TextView

<TextView
    android:id="@+id/header"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:layout_marginTop="4dip"
    android:layout_marginBottom="4dip"
    android:textColor="#00fff0"
    android:textSize="14sp"
    android:text="Header"/>

我在onCreate()函数

中设置了如下字体
((TextView) findViewById(R.id.header)).setTypeface(Typeface.createFromAsset(this.getAssets(), "bitbold2.ttf"));

在初始化时在画布上绘制文本时也会出现同样的问题:

Typeface bitNanoFont = Typeface.createFromAsset(asset, "bitbold2.ttf");
Paint textPaint = new Paint();
textPaint.setARGB(255, 0, 255, 240);
textPaint.setTextSize(24);
textPaint.setTypeface(bitNanoFont);

画得像这样:

canvas.drawText("Text", 320, 50, textPaint);

生成的文本如下所示(TextView):

The text looks like this.

图片已向上缩放,背景色彩鲜艳,因为此图片是直接从应用程序中拍摄的。

1 个答案:

答案 0 :(得分:0)

这不是一个完美的解决方案,但我能够通过在文本中应用假粗体来修复垂直间隙。这意味着Android会在字母上添加一些额外的笔划,从而填补空白。

在TextView上

Typeface font = Typeface.createFromAsset(asset, "bitbold2.ttf");
TextView tw = (TextView) findViewById(R.id.header);
tw.setTypeface(font);
tw.setPaintFlags(Paint.FAKE_BOLD_TEXT_FLAG);

和Canvas

Typeface font = Typeface.createFromAsset(asset, "bitbold2.ttf");
Paint paint = new Paint();
paint.setTypeface(font);
paint.setFakeBoldText(true);