首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过webfont loader获取字体资源url

如何通过webfont loader获取字体资源url
EN

Stack Overflow用户
提问于 2016-08-22 12:02:39
回答 2查看 1.2K关注 0票数 3

我使用webfont-loader通过css文件动态加载字体,代码如下

代码语言:javascript
复制
WebFont.load({
    custom: {
        families: 'Lobster',
        urls:'mydomain.com/lobster.css'
    }
}

在css文件中,它是这样的

代码语言:javascript
复制
@font-face {
    font-family: 'Lobster';
    src: url('Lobster_1.3-webfont.woff') format('woff'),
         url('Lobster_1.3-webfont.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
}

我想知道是否有一种方法可以获得字体的url,就像css中定义的"Lobster_1.3-webfont.ttf“和"Lobster_1.3-webfont.woff”一样。

在webfont-loader中没有这样的api,如果没有直接的方法,我必须先把css作为文本文件加载,但我真的不想做这样的事情

你们有什么线索吗?

PS:我之所以需要字体的url,是因为我在节点端使用fabric.js来创建svg文件,并通过phantom.js将其渲染成PDF,但看起来phantom.js不支持带有@import url('xxx.css')的svg。所以我必须在src中使用@font-face。

EN

回答 2

Stack Overflow用户

发布于 2016-08-22 13:22:55

好吧,假设您使用的是您选择的字体子集,但用户没有更新,因此您知道当前使用的字体的路径。Fabricjs有一个可以填充的内部对象,名为:

代码语言:javascript
复制
fabric.fontPaths = { };

如果您将url信息存储在其中:

代码语言:javascript
复制
fabric.fontPaths = {Lobster: 'Lobster_1.3-webfont.woff'};

您将在导出时将字体嵌入到svg中。这应该允许您在phantomjs中正确加载svg。

票数 0
EN

Stack Overflow用户

发布于 2020-02-19 04:19:26

首先获取带有URL的字体名称。

代码语言:javascript
复制
var fontArray = [];
$.get("https://www.googleapis.com/webfonts/v1/webfonts?key={your key}&sort=popularity", {}, function (data) {
    var count = 0;
    $.each(data.items, function (index, value) {
        count++
        fontArray.push(value);
    });
});

然后添加到fabric.fontPaths。

代码语言:javascript
复制
    $.each(fontArray, function (i, item) {
     if (fontName == item.family) {
     var ttfFile  = item.files.regular;
     var dataFile = [];
    fabric.fontPaths[fontName] = "data:font/opentype;charset=utf-8;base64," + ttfFile;
      }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39071236

复制
相关文章

相似问题

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