Я пытаюсь нарисовать текст на флагом, используя простой скрипт. Он отлично работает, за исключением того, что Шрифт не загружается.Javascript canvas draw text после загрузки шрифта
Я попытался загрузить шрифт локально и из Интернета, но оба они не работают на моем сервере.
Однако код работает отлично на w3 schools tryit editor
Я думаю, что он должен делать с шрифт не загружен неправильно или слишком поздно. Каков наилучший способ убедиться, что шрифт загружен правильно?
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Ubuntu:regular,bold&subset=Latin">
<style>body { font-family: Ubuntu, sans-serif; }</style>
</head>
<body>
<canvas style="border-radius: 100px;" id="myCanvas" width="200" height="200">
Your browser does not support the HTML5 canvas tag.</canvas>
<script>
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
var size = 200
var textSize=size * 0.55;
var countryCode = "nl";
var text = "123";
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var img = new Image;
img.onload = function(){
ctx.drawImage(img,-1,-1,size,size); // removes the 1px border the flags sometimes have
ctx.font = textSize+"px Ubuntu";
ctx.textAlign="center";
ctx.fillStyle = "#260C4D";
ctx.fillText(text,size/2,size/2 + textSize/2.85);
};
img.src = "http://www.geonames.org/flags/x/"+countryCode+".gif";
</script>
</body>
</html>
, что заставляет вас думать, что шрифт уже доступны, когда ваш холст пинки JS код в? Я не вижу никакого кода, который проверяет, чтобы шрифт даже выполнял загрузку/разбор/прикрепление к графическому контексту ...? –