Android中通过typeface类来实现绘制字符的粗斜体,如果想把绘制的字体变成斜体,只需要在绘制前调用
paint.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC)); 即可。
下面是绘制出来的普通字体,粗体,斜体,粗斜体的样子:
从上图可以发现一个问题,通过typeface接口设置的字体样式,对中文是无效的,原因是android系统带的这几个默认字体本来就不支持中文的粗斜体。
想要解决这个问题,需要自己做点手脚,首先是粗体,可以通过paint.setFakeBoldText来让paint实现一个伪装的粗体,比较简单。
至于斜体,可以通过设置canvas的矩阵来自己实现倾斜的效果。
canvas.save();
canvas.translate(x, y);
canvas.skew(-0.2f, 0);
canvas.drawText(text, 0, 0, paint);
canvas.restore();
下面是绘制出来的普通字体,粗体,斜体,粗斜体的样子:
可以看到不管是中文还是英文都能实现粗斜体了。
上面介绍的只是一种伪造的手段,如果想要更好的显示效果,其实还是找一个可以支持中英文粗斜体的字体比较靠谱哈哈。