トップページ >  HTML5 >  canvas要素(5) テキスト
初版2011/07/18: 最終更新日2011/07/18
canvas要素(5) テキスト
目次
テキストを書く
テキストを配置する
フォントを指定する
位置を指定する
テキストを書く

<canvas>要素に、テキストを書くことが出来ます。
既にご紹介した「canvas要素(2) 色とスタイル」や「canvas要素(3) グラデーション」などと組み合わせることで視覚効果を施したテキストを表現することも可能です。
但し、あくまでもスクリプト内で定義しますので、SEOなどでは無視されます。

※<canvas>要素に対応しません。

テキストを配置する

テキストを配置します。
テキストは「canvas要素(1) 簡単な図形 : 四角形を描く」同様、枠線と塗りつぶしそれぞれのメソッドを用いて配置します。
また、線色及び塗りつぶし色は「canvas要素(2) 色とスタイル」に従います。

strokeText(text, x, y [, maxWidth ] )
座標(x,y)に文字列 textの枠線を描きます。
maxWidthで、テキストの描画領域の最大幅を指定できます。(省略可)
fillText(text, x, y [, maxWidth ] )
座標(x,y)に文字列 textの塗りつぶしを描きます。
maxWidthで、テキストの描画領域の最大幅を指定できます。(省略可)

リスト1. テキストの配置方法

context.strokeText("枠線", 10, 50);
context.fillText("塗りつぶし", 10, 100);
context.fillText("幅80に制限", 10, 150, 80);

コーディング例

※<canvas>要素に対応しません。

フォントを指定する

フォントのサイズや形状などを指定することが出来ます。
CSS3のfontプロパティに対応します。(WEBフォントも対応可)

font = "CSSのfont定義"
CSSのfontプロパティと同様の指定(スタイル・サイズ・種類)が可能です。

リスト2. フォントの指定

context.font = "italic 40px 'MS 明朝'";

コーディング例

※<canvas>要素に対応しません。

位置を指定する

寄せ位置や揃え位置を指定することが出来ます。

textAlign = "寄せ位置"
左寄せ(startまたはleft)、右寄せ(endまたはright)、中央寄せ(center)を定義出来ます。
デフォルトはstartです。 ※startとleft,endとrightはほぼ同様です。
textBaseline = "揃え位置"
上揃え(top)、頭揃え(hanging)、中央揃え(middle)、通常(alphabetic)、脚部揃え(ideographic)、下揃え(bottom)を定義出来ます。
デフォルトはalphabeticです。

リスト3. 位置の指定

/* 寄せ位置 */
context.textAlign = 'start';
context.textAlign = 'left';
context.textAlign = 'end';
context.textAlign = 'right';
context.textAlign = 'center';

/* 揃え位置 */
context.textBaseline = 'top';
context.textBaseline = 'hanging';
context.textBaseline = 'middle';
context.textBaseline = 'alphabetic';
context.textBaseline = 'ideographic';
context.textBaseline = 'bottom';

コーディング例

※<canvas>要素に対応しません。

テキストの幅を知る

measureTextメソッドでテキストの描画情報を知ることが出来ます。

measureText(text)
文字列 text の描画情報を取得します。
返り値はオブジェクトです。
width
widthプロパティで描画幅を得られます。
measureTextメソッドで取得したオブジェクトのプロパティです。

リスト4. 描画幅

var text = 'この文字列の幅はxxxです。';
var metrics = context.measureText(text);
text = text.replace('xxx', metrics.width);
context.fillText(text, 10, 100);

コーディング例

※<canvas>要素に対応しません。