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?
javascript
html
canvas
typography
Ritchie
źródło
źródło
ctx.font = "400 10pt Courier"
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ądarkiTylko 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.
źródło
Więc nie ma sposobu, aby po prostu ustawić
font-weight
(font-size
lubfont-family
...) w jednym poleceniu JS? To wszystko musi być w jednym pełnym ciągu czcionek?źródło
Podkreślenie nie jest możliwe za pomocą żadnej metody lub właściwości płótna. Ale trochę popracowałem, żeby to zrobić. Możesz to sprawdzić @ http://scriptstock.wordpress.com/2012/06/12/html5-canvas-text-underline-workaround
Implementację można znaleźć tutaj http://jsfiddle.net/durgesh0000/KabZG/
źródło
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
źródło