Jak ustawić pogrubienie i / lub kursywę w tekście kanwy HTML5?


85

Drukuję tekst na płótnie w dość prosty sposób:

var ctx = canvas.getContext('2d');
ctx.font = "10pt Courier";
ctx.fillText("Hello World", 100, 100);

Ale jak mogę zmienić tekst na pogrubiony, kursywę lub oba? Jakieś sugestie, jak naprawić ten prosty przykład?

Odpowiedzi:


157

Możesz użyć dowolnego z tych:

ctx.font = "italic 10pt Courier";

ctx.font = "bold 10pt Courier";

ctx.font = "italic bold 10pt Courier";

Aby uzyskać więcej informacji, oto kilka zasobów:


2
Arg beat me to it, +1 Great site, aby uzyskać więcej informacji, diveintohtml5.org/canvas.html#divingin
Loktar

@Loktar Dzięki za link, zawarłem go w odpowiedzi.
Donut


4
Możesz także określić grubość czcionki:ctx.font = "400 10pt Courier"
Ivan P

Waga czcionki przez ctx.font = "400 10pt Open Sans"nie działała dla mnie w Chrome przy użyciu Calibri lub Open Sans w najnowszych wersjach przeglądarki
sean2078

12

Tylko dodatkowe ostrzeżenie dla każdego, kto się na to natknie: pamiętaj, aby postępować zgodnie z kolejnością podaną w zaakceptowanej odpowiedzi.

Wystąpiły problemy z różnymi przeglądarkami, gdy miałem złą kolejność. Pogrubiona czcionka „10px Verdana bold” działa w przeglądarce Chrome, ale nie w przeglądarce IE ani Firefox. Przełączenie go na „pogrubioną 10px Verdana”, jak wskazano, rozwiązało te problemy. Jeśli napotkasz podobne problemy, sprawdź dokładnie zamówienie.


Wygląda na to, że Chrome zmienił się i jest zgodny z przeglądarką Firefox. Zobacz to pióro: codepen.io/anon/pen/BXNZxO
ecc521

2

Więc nie ma sposobu, aby po prostu ustawić font-weight( font-sizelub font-family...) w jednym poleceniu JS? To wszystko musi być w jednym pełnym ciągu czcionek?



0

Jeśli chcesz pozwolić na różnice w formatowaniu, możesz ustawić styl czcionki, narysować tekst, zmierzyć go za pomocą measureText, ustawić nowy styl, a następnie narysować następny blok w następujący sposób:

// get canvas / context
var can = document.getElementById('my-canvas');
var ctx = can.getContext('2d')

// draw first text
var text = '99%';
ctx.font = 'bold 12pt Courier';
ctx.fillText(text, 50, 50);

// measure text
var textWidth = ctx.measureText(text).width;

// draw second text
ctx.font = 'normal 12pt Courier';
ctx.fillText(' invisible', 50 + textWidth, 50);
<canvas id="my-canvas" width="250" height="150"></canvas>

Dalsze czytanie

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.