本节我们来学习如何绘制文字。

绘制文字有两个主要的方法:

文字样式

有一些属性用来设置文字的样式:

下面这张图展示了textBaseline属性各个值得对齐的基线:

【canvas学习笔记四】绘制文字-LMLPHP

其中说明一下top和bottom对齐的是em square的顶部和底部。em是印刷术里的一种单位,学过CSS的都是知道em这个单位,em就是一个字元的高度。而em square就是一个字元的方块。就像下面这样:【canvas学习笔记四】绘制文字-LMLPHP每个字母都占据着一个固定方块的大小。

例子

function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
ctx.font = '48px serif';
ctx.textBaseline = 'hanging';
ctx.fillText('Hello world', 10, 50);
}

【canvas学习笔记四】绘制文字-LMLPHP

function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
ctx.font = '48px serif';
ctx.textBaseline = 'hanging';
ctx.strokeText('Hello world', 10, 50);
}

【canvas学习笔记四】绘制文字-LMLPHP

文字规格

canvas还提供了一个方法测量字体的宽度:

TextMetrics对象还包含很多属性,但是很多还没有得到完全支持,width属性是得到现代浏览器支持的(当然IE8是不行的啦)。

例子

function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
var text = ctx.measureText('foo'); // TextMetrics object
text.width; // 16;
}

Notes

在Gecko内核浏览器或其他应用中,旧版本的一些含有moz前缀的绘图相关API已经弃用了,在这里可以查看。

05-11 16:54
查看更多