【发布时间】:2015-05-06 18:31:53
【问题描述】:
我在自定义 webfonts 和 fabric.js 方面一直存在问题。 我的应用程序使用了很多自定义网络字体,我在向画布添加 iText 时对其进行了初始化:
var text = new fabric.IText("My Text", {
fontFamily: "Some Custom Font Family",
fontSize: 50,
top: 0,
left: 0,
fill: "#000000"
});
canvas.add(text);
canvas.bringToFront(text);
canvas.setActiveObject(text);
canvas.renderAll();
只有当我点击画布上的 iText 并与之交互时才有效。然后,一旦加载了字体,它就不再是问题了。问题是最初和第一次添加 iText。
我研究了很多,来到了这个帖子:
Init loaded text with remote web font in Fabric.js
但这对我没有帮助。那里提供的 jsfiddle 有完全相同的问题:
只需使用清除缓存的新浏览器(例如 Chrome CMD+Shift+R)打开此小提琴。打开 fiddle 后,您会看到自定义的 webfont 没有加载,而是在您单击右侧的 iText 时立即加载。
现在,我们该如何解决这个问题?
建议的方法是将 useNative 设置为 false 并让 Cufon 呈现文本,但这不起作用。
我将我的网络字体加载到这样的 CSS 文件中:
@font-face {
font-family: 'ApolloASM';
src: url('ApolloASM-webfont.eot');
src: url('ApolloASM-webfont.eot?#iefix') format('embedded-opentype'),
url('ApolloASM-webfont.woff2') format('woff2'),
url('ApolloASM-webfont.woff') format('woff'),
url('ApolloASM-webfont.ttf') format('truetype'),
url('ApolloASM-webfont.svg#apollo_asmregular') format('svg');
font-weight: normal;
font-style: normal;
}
【问题讨论】:
-
你解决了这个问题吗?
-
不,不幸的是:-(
-
我不知道为什么,但对我来说,它通过请求
https://fonts.googleapis.com/css?family=Font而不是https://fonts.googleapis.com/css?family=Font:100, 200,400,900来工作,我猜这是因为加载时间较短。 “足够快”可以在canvas之前加载
标签: javascript canvas fabricjs