テキストの描画
前の章でスタイルや色を適用する方法を見た後は、キャンバスにテキストを描画する方法を見ていきます。
テキストの描画
キャンバスの描画コンテキストでは、 2 種類のテキスト描画方法を提供しています。
fillText(text, x, y [, maxWidth])-
(x,y) で指定した位置にテキストを塗りつぶして描画します。任意で最大描画幅を指定できます。
strokeText(text, x, y [, maxWidth])-
(x,y) で指定した位置にテキストの輪郭を描画します。任意で最大描画幅を指定できます。
fillText の例
現在の fillStyle を使用して、テキストを塗りつぶして描画します。
js
function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
ctx.font = '48px serif';
ctx.fillText('Hello world', 10, 50);
}
strokeText の例
現在の strokeStyle を使用して、テキストの輪郭を描画します。
js
function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
ctx.font = '48px serif';
ctx.strokeText('Hello world', 10, 50);
}
テキストのスタイル付け
上記の例では、テキストを既定のサイズより若干大きくするため、すでに font プロパティを使用していました。キャンバスにテキストを表示する形式を調整できるプロパティは、さらにいくつかあります。
font = value-
テキストを描画する際に使用するテキストのスタイルです。 CSS の
fontプロパティと同じ構文に則った文字列です。既定のフォントは 10px sans-serif です。 textAlign = value-
テキストの配置を設定します。使用できる値は
start、end、left、right、centerです。既定値はstartです。 textBaseline = value-
ベースラインの位置ぞろえを設定します。使用できる値は
top、hanging、middle、alphabetic、ideographic、bottomです。既定値はalphabeticです。 direction = value-
書字方向を設定します。使用できる値は
ltr、rtl、inheritです。既定値はinheritです。
以前に CSS を扱ったことがあれば、これらのプロパティも見慣れているでしょう。
以下は WHATWG 提供の、textBaseline 属性によってサポートされている様々なベースラインを示した図です。
textBaseline の例
以下のコードを編集すると、canvas の変更個所をその場で確認できます。
高度なテキスト測定
テキストのより詳細な情報を得る必要がある場合は、以下のメソッドで測定することができます。
measureText()-
指定したテキストを現在のテキストスタイルで描画したときの幅をピクセル単位で表した情報を持つ、
TextMetrics(en-US) オブジェクトを返します。
以下のコードスニペットは、テキストを測定して幅を得る方法を示しています。
js
function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
var text = ctx.measureText('foo'); // TextMetrics object
text.width; // 16;
}