为了账号安全,请及时绑定邮箱和手机立即绑定

第一次使用@ font-face将文本绘制到<canvas>无效

第一次使用@ font-face将文本绘制到<canvas>无效

海绵宝宝撒 2019-12-17 14:34:08
当我在具有通过@ font-face加载的字体的画布中绘制文本时,该文本无法正确显示。它根本不显示(在Chrome 13和Firefox 5中),或者字体错误(Opera 11)。此类意外行为仅在带有字体的第一个图形上发生。之后,一切正常。这是标准行为还是什么?谢谢。PS:以下是测试用例的源代码<!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>
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 924 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信