Ich versuche, Text auf eine Flagge mit einem einfachen Skript zu zeichnen. Es funktioniert gut, außer dass die Schriftart nicht geladen wird.Javascript Leinwand zeichnen Text nach Laden Schriftart
Ich habe versucht, die Schriftart lokal und aus dem Internet zu laden, aber beide funktionieren nicht auf meinem Server.
jedoch der Code läuft gut auf w3 schools tryit editor
ich denke, es mit der Schrift nicht korrekt geladen zu tun hat, ist oder zu spät. Was ist der beste Weg, um sicherzustellen, dass die Schriftart korrekt geladen ist?
<!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>
was denken lassen Sie die Schrift schon, wenn in Ihrer Leinwand JS-Code Tritte vorhanden ist? Ich sehe keinen Code, der überprüft, um sicherzustellen, dass die Schriftart sogar heruntergeladen/analysiert/an den Grafikkontext angehängt wird ...? –