如何在HTML画布上绘制“真棒字体”图标[版本<5]

Kanishk pipariya

如何在HTML5画布上绘制“超赞字体”字符(图标字形)?我正在使用旧版的Font Awesome。

如何为绘制的字符设置样式?

<script>

    var canvas = document.getElementById('myCanvas');
    var context = canvas.getContext('2d');
    context.font = '';
    context.fillText();

</script>

语言:lang-html

<canvas id="myCanvas" class="canvas" width="500" height="500" ></canvas>html>

<script>

    var canvas = document.getElementById('myCanvas');
    var context = canvas.getContext('2d');
    context.font = '';
    context.fillText();

</script>

语言:lang-html

<canvas id="myCanvas" class="canvas" width="500" height="500" ></canvas>
品牌

在此处输入图片说明

这是在html5画布上绘制Font Awsome字形的方法:

  1. 字体真棒链接:

    <link rel="stylesheet" 
        href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
    
  2. 将上下文字体设置为Font Awesome:

    // set the canvas context's font-size and font-face
    context.font='14px FontAwesome';
    
  3. 在画布上绘制一个“真棒字体”字符:

    // specify the desired character code with the Unicode prefix (\u) 
    context.fillText('\uF047',20,50);
    

这是示例代码和演示:

var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");

ctx.font='12px verdana';
ctx.fillText('Please wait for Font Awesome to load...',20,30);

// give font awesome time to load
setTimeout(start,2000);

function start(){
  ctx.clearRect(0,0,canvas.width,canvas.height);
  ctx.font='30px FontAwesome';
  ctx.fillText('\uF047',20,50);
}
body{ background-color: ivory; }
#canvas{border:1px solid red; margin:0 auto; }
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<h4>Font Awesome glyph drawn onto html5 canvas</h4>
<canvas id="canvas" width=300 height=100></canvas>

[附加:另一种加载FontAwesome的方式]

作为@Kaiido注释,您可以通过font-family:fontawesome在canvas元素(或其他元素)上设置来使浏览器开始加载FontAwesome

该演示演示了如何“即时”加载自定义字体(包括FontAwesome)。

[添加:FontAwesome加载功能]

像img一样,字体是异步加载的,因此在尝试在画布上绘制字体之前,必须等待它们完全加载。但是与imgs不同,字体没有内置的.onload方法来告诉我们何时完全加载字体

这是一个变通方法onload函数,当FontAwesome已完全加载并准备好在fillText画布上时,可以用来触发回调

<!doctype html>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<style>
    body{ background-color: ivory; }
    #canvas{border:1px solid red; margin:0 auto; }
</style>
<script>
$(function(){

    var canvas=document.getElementById("canvas");
    var ctx=canvas.getContext("2d");
    var cw,ch;

    AwesomeFontOnload(start,3000);

    function start(){
        ctx.font='48px fontawesome';
        ctx.fillText('\uF064\uF065 \uF0a5',20,75);
    }

    function AwesomeFontOnload(callback,failAfterMS){
        var c=document.createElement("canvas");
        var cctx=c.getContext("2d");
        var ccw,cch;
        var fontsize=36;
        var testCharacter='\uF047';
        ccw=c.width=fontsize*1.5;
        cch=c.height=fontsize*1.5;
        cctx.font=fontsize+'px fontawesome';
        cctx.textAlign='center';
        cctx.textBaseline='middle';
        var startCount=pixcount();
        var t1=performance.now();
        var failtime=t1+failAfterMS;
        //
        requestAnimationFrame(fontOnload);
        //
        function fontOnload(time){
            var currentCount=pixcount();
            if(time>failtime){
                alert('Font Awsome failed to load after '+failAfterMS+'ms.');
            }else if(currentCount==startCount){
                requestAnimationFrame(fontOnload);
            }else{
                callback();
            }
        }
        //
        function pixcount(){
            cctx.clearRect(0,0,ccw,cch);
            cctx.fillText(testCharacter,ccw/2,cch/2);
            var data=cctx.getImageData(0,0,ccw,cch).data;
            var count=0;
            for(var i=3;i<data.length;i+=4){
                if(data[i]>10){count++;}
            }
            return(count);
        }
    }

}); // end $(function(){});
</script>
</head>
<body>
    <h4>Font Awesome glyphs drawn onto html5 canvas</h4>
    <canvas id="canvas" width=300 height=300></canvas>
</body>
</html>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在多个画布HTML5上绘制圆?

来自分类Dev

HTML5 Canvas-如何在画布上的图像上绘制矩形

来自分类Dev

如何在HTML5画布上绘制背景图像

来自分类Dev

在画布HTML5上绘制视频

来自分类Dev

真棒字体5-图标位置反转

来自分类Dev

如何在移动设备上调出键盘以捕获用于在HTML5画布上绘制的输入?

来自分类Dev

如何在Javascript和HTML5画布上以2D模式在对象前面绘制圆圈

来自分类Dev

如何在 HTML5 画布上使用二次贝塞尔曲线绘制小写 b

来自分类常见问题

伪元素上的字体真棒5

来自分类Dev

真棒字体5-如何将图标放在圆圈内?

来自分类Dev

真棒字体5-如何仅旋转图标的蒙版?

来自分类Dev

如何获取在HTML5画布上绘制的图像的X / Y值?

来自分类Dev

RXJS在HTML5画布上绘制线条

来自分类Dev

无法在html5画布上绘制

来自分类Dev

如何在HTML5画布内旋转图像而不绘制图像?

来自分类Dev

如何在HTML画布上渲染图标字体,尤其是在Material Design图标字体上?

来自分类Dev

尽管设置了fa-5,但字体真棒图标不会变大

来自分类Dev

是否可以在单击时旋转字体真棒 5 个图标?

来自分类Dev

如何在具有更好插值的html5画布上缩放图像?

来自分类Dev

如何在HTML5中使绘图在画布上可拖动

来自分类Dev

如何在变形的HTML5画布上获取鼠标位置

来自分类Dev

真棒字体5-调整字体系列时,为什么图标会消失?

来自分类Dev

如何下载HTML5画布上的图像?

来自分类Dev

在画布HTML5和Fabric js中的图像上添加删除图标

来自分类Dev

如何在HTML图像上绘制p5.js圆

来自分类Dev

如何在 HTML5 Canvas 上使用外部 CSS 绘制 SVG

来自分类Dev

在HTML5画布上绘制多个圆的问题

来自分类Dev

在html5画布上绘制多个粒子元素而无需渲染终止

来自分类Dev

在HTML5画布上绘制多个图像有时不起作用

Related 相关文章

  1. 1

    如何在多个画布HTML5上绘制圆?

  2. 2

    HTML5 Canvas-如何在画布上的图像上绘制矩形

  3. 3

    如何在HTML5画布上绘制背景图像

  4. 4

    在画布HTML5上绘制视频

  5. 5

    真棒字体5-图标位置反转

  6. 6

    如何在移动设备上调出键盘以捕获用于在HTML5画布上绘制的输入?

  7. 7

    如何在Javascript和HTML5画布上以2D模式在对象前面绘制圆圈

  8. 8

    如何在 HTML5 画布上使用二次贝塞尔曲线绘制小写 b

  9. 9

    伪元素上的字体真棒5

  10. 10

    真棒字体5-如何将图标放在圆圈内?

  11. 11

    真棒字体5-如何仅旋转图标的蒙版?

  12. 12

    如何获取在HTML5画布上绘制的图像的X / Y值?

  13. 13

    RXJS在HTML5画布上绘制线条

  14. 14

    无法在html5画布上绘制

  15. 15

    如何在HTML5画布内旋转图像而不绘制图像?

  16. 16

    如何在HTML画布上渲染图标字体,尤其是在Material Design图标字体上?

  17. 17

    尽管设置了fa-5,但字体真棒图标不会变大

  18. 18

    是否可以在单击时旋转字体真棒 5 个图标?

  19. 19

    如何在具有更好插值的html5画布上缩放图像?

  20. 20

    如何在HTML5中使绘图在画布上可拖动

  21. 21

    如何在变形的HTML5画布上获取鼠标位置

  22. 22

    真棒字体5-调整字体系列时,为什么图标会消失?

  23. 23

    如何下载HTML5画布上的图像?

  24. 24

    在画布HTML5和Fabric js中的图像上添加删除图标

  25. 25

    如何在HTML图像上绘制p5.js圆

  26. 26

    如何在 HTML5 Canvas 上使用外部 CSS 绘制 SVG

  27. 27

    在HTML5画布上绘制多个圆的问题

  28. 28

    在html5画布上绘制多个粒子元素而无需渲染终止

  29. 29

    在HTML5画布上绘制多个图像有时不起作用

热门标签

归档