Le dessin du texte <canvas> avec @font-face ne fonctionne pas la première fois

Lorsque je dessine un texte dans une toile avec une police de caractères qui est chargé via @font-face, le texte n'est pas affiché correctement. Il ne montre pas du tout (dans Chrome 13 et Firefox 5), ou la police de caractère est mal (Opera 11). Ce type de comportement inattendu se produit uniquement lors de la première du dessin avec la police de caractères. Après, tout fonctionne bien.

C'est le comportement standard ou quelque chose?

Merci.

PS: voici le code source du cas de test

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>@font-face and &lt;canvas&gt;</title>
<style id="css">
@font-face {
font-family: 'Press Start 2P';
src: url('fonts/PressStart2P.ttf');
}
</style>
<style>
canvas, pre {
border: 1px solid black;
padding: 0 1em;
}
</style>
</head>
<body>
<h1>@font-face and &lt;canvas&gt;</h1>
<p>
Description: click the button several times, and you will see the problem.
The first line won't show at all, or with a wrong typeface even if it does.
<strong>If you have visited this page before, you may have to refresh (or reload) it.</strong>
</p>
<p>
<button id="draw">#draw</button>
</p>
<p>
<canvas width="250" height="250">
Your browser does not support the CANVAS element.
Try the latest Firefox, Google Chrome, Safari or Opera.
</canvas>
</p>
<h2>@font-face</h2>
<pre id="view-css"></pre>
<h2>Script</h2>
<pre id="view-script"></pre>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script id="script">
var x = 30,
y = 10;
$('#draw').click(function () {
var canvas = $('canvas')[0],
ctx = canvas.getContext('2d');
ctx.font = '12px "Press Start 2P"';
ctx.fillStyle = '#000';
ctx.fillText('Hello, world!', x, y += 20);
ctx.fillRect(x - 20, y - 10, 10, 10);
});
</script>
<script>
$('#view-css').text($('#css').text());
$('#view-script').text($('#script').text());
</script>
</body>
</html>
InformationsquelleAutor lemonedo | 2010-05-03