首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SVG中绘制DOM对象时如何在画布中使用Google字体?

在SVG中绘制DOM对象时如何在画布中使用Google字体?
EN

Stack Overflow用户
提问于 2017-02-22 21:26:29
回答 1查看 5.4K关注 0票数 9

根据Mozilla的文档,您可以在画布上(如 )绘制复杂的HTML。

我想不出的是让Google字体和它一起工作的方法。

参见下面的示例:

代码语言:javascript
复制
var canvas = document.getElementById('canvas');
    var ctx    = canvas.getContext('2d');
    
    var data   = '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200">' +
                   '<foreignObject width="100%" height="100%">' +
                     '<div xmlns="http://www.w3.org/1999/xhtml" style="font-size:40px;font-family:Pangolin">' +
                       'test' +
                     '</div>' +
                   '</foreignObject>' +
                 '</svg>';
    
    var DOMURL = window.URL || window.webkitURL || window;
    
    var img = new Image();
    var svg = new Blob([data], {type: 'image/svg+xml;charset=utf-8'});
    var url = DOMURL.createObjectURL(svg);
    
    img.onload = function () {
      ctx.drawImage(img, 0, 0);
      DOMURL.revokeObjectURL(url);
    }
    
    img.src = url;
代码语言:javascript
复制
<link href="https://fonts.googleapis.com/css?family=Pangolin" rel="stylesheet">

<div style="font-size:40px;font-family:Pangolin">test</div><hr>
<canvas id="canvas" style="border:2px solid black;" width="200" height="200"></canvas>

EN

回答 1

Stack Overflow用户

发布于 2017-02-22 22:15:57

您可以尝试的第一件事是使用Google字体加载器,因为您在浏览器加载字体之前生成svg。

因此,您需要确保加载了字体,然后生成svg/映像

如果这不起作用,您可以在svg中创建文本标记,并为字体字体尝试以下选项

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42402584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档