여러분이 사용하고 계신 브라우저는 HTML5를 지원하지 않기 때문에 몇몇 요소가 제대로 보이도록 JScript를 사용하고 있습니다. 하지만 여러분의 브라우저 설정에서 스크립트 기능이 꺼져있으므로, 현재 페이지를 제대로 확인하시려면 스크립트 기능을 켜주셔야 합니다. HTML Canvas - 텍스트

HTML Canvas – 텍스트

1개월전 작성

HTML Canvas 텍스트

HTML Canvas는 캔버스에 텍스트를 그릴 수 있는 강력한 기능을 제공한다. 텍스트를 그리고, 스타일을 적용하고, 정렬하는 다양한 방법을 알아보자.

텍스트 그리기 메서드

Canvas에서 텍스트를 그리는 두 가지 주요 메서드가 있다.

  • fillText(text, x, y) – 채워진 텍스트를 그린다
  • strokeText(text, x, y) – 텍스트의 윤곽선만 그린다
매개변수 설명
text 그릴 텍스트 문자열
x 텍스트 시작 위치의 x 좌표
y 텍스트 기준선의 y 좌표

기본 텍스트 그리기

fillText() 메서드를 사용하여 기본 텍스트를 그릴 수 있다.

<canvas id="myCanvas1" width="300" height="150" style="border:1px solid #d3d3d3;">
브라우저가 HTML5 Canvas를 지원하지 않습니다.
</canvas>
<script>
var c = document.getElementById("myCanvas1");
var ctx = c.getContext("2d");
ctx.font = "30px Arial";
ctx.fillText("Hello World", 10, 50);
</script>

이 예제는 Arial 폰트 30픽셀 크기로 “Hello World” 텍스트를 그린다. font 속성으로 폰트 스타일을 설정한다.

텍스트 윤곽선 그리기

strokeText() 메서드를 사용하여 텍스트의 윤곽선만 그릴 수 있다.

<canvas id="myCanvas2" width="300" height="150" style="border:1px solid #d3d3d3;">
브라우저가 HTML5 Canvas를 지원하지 않습니다.
</canvas>
<script>
var c = document.getElementById("myCanvas2");
var ctx = c.getContext("2d");
ctx.font = "30px Arial";
ctx.strokeText("Hello World", 10, 50);
</script>

이 예제는 텍스트의 윤곽선만 그려서 속이 비어있는 텍스트를 만든다.

텍스트 색상 설정

fillStyle과 strokeStyle 속성을 사용하여 텍스트 색상을 설정할 수 있다.

<canvas id="myCanvas3" width="300" height="150" style="border:1px solid #d3d3d3;">
브라우저가 HTML5 Canvas를 지원하지 않습니다.
</canvas>
<script>
var c = document.getElementById("myCanvas3");
var ctx = c.getContext("2d");
ctx.font = "30px Arial";
ctx.fillStyle = "red";
ctx.fillText("Hello World", 10, 50);
ctx.strokeStyle = "blue";
ctx.strokeText("Hello World", 10, 100);
</script>

이 예제는 빨간색으로 채워진 텍스트와 파란색 윤곽선을 가진 텍스트를 보여준다.

폰트 설정

font 속성을 사용하여 폰트 크기, 스타일, 패밀리를 설정할 수 있다.

<canvas id="myCanvas4" width="300" height="150" style="border:1px solid #d3d3d3;">
브라우저가 HTML5 Canvas를 지원하지 않습니다.
</canvas>
<script>
var c = document.getElementById("myCanvas4");
var ctx = c.getContext("2d");
ctx.font = "italic bold 20px Arial";
ctx.fillText("Italic Bold", 10, 30);
ctx.font = "20px Georgia";
ctx.fillText("Georgia Font", 10, 60);
ctx.font = "small-caps 20px Verdana";
ctx.fillText("Small Caps", 10, 90);
</script>

이 예제는 다양한 폰트 스타일과 패밀리를 적용한 텍스트를 보여준다.

텍스트 정렬

textAlign 속성을 사용하여 텍스트의 수평 정렬을 설정할 수 있다.

<canvas id="myCanvas5" width="300" height="150" style="border:1px solid #d3d3d3;">
브라우저가 HTML5 Canvas를 지원하지 않습니다.
</canvas>
<script>
var c = document.getElementById("myCanvas5");
var ctx = c.getContext("2d");
ctx.strokeStyle = "red";
ctx.moveTo(150, 0);
ctx.lineTo(150, 150);
ctx.stroke();
ctx.font = "20px Arial";
ctx.textAlign = "start";
ctx.fillText("start", 150, 30);
ctx.textAlign = "center";
ctx.fillText("center", 150, 60);
ctx.textAlign = "end";
ctx.fillText("end", 150, 90);
ctx.textAlign = "left";
ctx.fillText("left", 150, 120);
</script>

이 예제는 빨간색 기준선을 중심으로 다양한 textAlign 값의 효과를 보여준다.

텍스트 베이스라인

textBaseline 속성을 사용하여 텍스트의 수직 정렬을 설정할 수 있다.

<canvas id="myCanvas6" width="300" height="150" style="border:1px solid #d3d3d3;">
브라우저가 HTML5 Canvas를 지원하지 않습니다.
</canvas>
<script>
var c = document.getElementById("myCanvas6");
var ctx = c.getContext("2d");
ctx.strokeStyle = "red";
ctx.moveTo(0, 75);
ctx.lineTo(300, 75);
ctx.stroke();
ctx.font = "20px Arial";
ctx.textBaseline = "top";
ctx.fillText("top", 10, 75);
ctx.textBaseline = "middle";
ctx.fillText("middle", 60, 75);
ctx.textBaseline = "bottom";
ctx.fillText("bottom", 130, 75);
ctx.textBaseline = "alphabetic";
ctx.fillText("alphabetic", 200, 75);
</script>

이 예제는 빨간색 기준선을 중심으로 다양한 textBaseline 값의 효과를 보여준다.

그라데이션 텍스트

그라데이션을 fillStyle로 설정하여 그라데이션 효과가 있는 텍스트를 만들 수 있다.

<canvas id="myCanvas7" width="300" height="150" style="border:1px solid #d3d3d3;">
브라우저가 HTML5 Canvas를 지원하지 않습니다.
</canvas>
<script>
var c = document.getElementById("myCanvas7");
var ctx = c.getContext("2d");
var gradient = ctx.createLinearGradient(0, 0, 300, 0);
gradient.addColorStop(0, "magenta");
gradient.addColorStop(0.5, "blue");
gradient.addColorStop(1, "red");
ctx.font = "40px Arial";
ctx.fillStyle = gradient;
ctx.fillText("Gradient", 30, 80);
</script>

이 예제는 마젠타에서 파랑, 빨강으로 변하는 선형 그라데이션이 적용된 텍스트를 만든다.

텍스트와 윤곽선 조합

fillText()와 strokeText()를 함께 사용하여 채우기와 윤곽선이 모두 있는 텍스트를 만들 수 있다.

<canvas id="myCanvas8" width="300" height="150" style="border:1px solid #d3d3d3;">
브라우저가 HTML5 Canvas를 지원하지 않습니다.
</canvas>
<script>
var c = document.getElementById("myCanvas8");
var ctx = c.getContext("2d");
ctx.font = "40px Arial";
ctx.fillStyle = "yellow";
ctx.fillText("Canvas", 50, 80);
ctx.strokeStyle = "black";
ctx.lineWidth = 2;
ctx.strokeText("Canvas", 50, 80);
</script>

이 예제는 노란색으로 채워지고 검은색 윤곽선을 가진 텍스트를 만든다.

텍스트 크기 측정

measureText() 메서드를 사용하여 텍스트의 너비를 측정할 수 있다.

<canvas id="myCanvas9" width="300" height="150" style="border:1px solid #d3d3d3;">
브라우저가 HTML5 Canvas를 지원하지 않습니다.
</canvas>
<script>
var c = document.getElementById("myCanvas9");
var ctx = c.getContext("2d");
ctx.font = "30px Arial";
var text = "Hello World";
ctx.fillText(text, 10, 50);
var metrics = ctx.measureText(text);
ctx.strokeStyle = "red";
ctx.strokeRect(10, 20, metrics.width, 40);
</script>

이 예제는 텍스트의 너비를 측정하고 그 크기만큼 빨간색 사각형을 그려서 텍스트 경계를 표시한다.

💡 텍스트 그리기 팁:
• font 속성은 CSS 폰트 문법과 동일하다 (예: “italic bold 20px Arial”)
• textAlign의 기본값은 “start”이고, textBaseline의 기본값은 “alphabetic”이다
• measureText()는 텍스트의 너비만 반환하며, 높이는 제공하지 않는다

여러 줄 텍스트

Canvas는 자동 줄바꿈을 지원하지 않으므로 여러 줄 텍스트는 수동으로 구현해야 한다.

<canvas id="myCanvas10" width="300" height="150" style="border:1px solid #d3d3d3;">
브라우저가 HTML5 Canvas를 지원하지 않습니다.
</canvas>
<script>
var c = document.getElementById("myCanvas10");
var ctx = c.getContext("2d");
ctx.font = "20px Arial";
var lines = ["First Line", "Second Line", "Third Line"];
var lineHeight = 25;
for (var i = 0; i < lines.length; i++) { ctx.fillText(lines[i], 10, 30 + i * lineHeight); } </script>[/code]

이 예제는 배열과 반복문을 사용하여 여러 줄 텍스트를 구현한다.

Canvas의 텍스트 기능을 활용하면 다양한 텍스트 효과와 레이아웃을 만들 수 있다. 그라데이션, 색상, 정렬 등을 조합하여 시각적으로 매력적인 텍스트를 구현할 수 있다.

참고
Mingg`s Diary
밍구
공부 목적 블로그