{ tmp = tmp + row; // 16文字の場合に配列に入れる if (tmp.length === 16) { results.push(tmp); // 文字カウント用の変数をクリ…">

canvasで特定の幅で文字を折り返して表示する (original) (raw)

やりたいこと

canvasを使った文字の描画で、特定の幅で文字を折り返して表示したかった。
何も処理しないと↓みたいに文字が詰まって表示される

canvasで表示される文字列

実装

①文字を任意の文字数ごとに分割して配列に入れていく

const src = "あ".repeat(30); const results = []; let tmp = ""; src.split("").map((row) => { tmp = tmp + row;

if (tmp.length === 16) { results.push(tmp);

tmp = "";

} });

const length = results.join("").length; results.push(src.slice(length));

②配列の文字列をfillText()で描画していく

ctx.fillStyle = "black"; ctx.font = "16px serif"; results.map((result, index) => {

ctx.fillText(result, 0, 30 + (16 * index)); });

canvasで表示される文字列(おり返しあり)

コード全文

See the Pen Untitled by miyata (@m1y474) on CodePen.