我正在使用 Fabric JS 开发一个大型自定义应用程序,我已经做得很好了。但是我对使用网络字体的初始化加载文本对象有疑问。
只要该字体在客户端计算机上是本地的,我就可以正常工作,否则不会加载 webfont,并且画布上的文本对象会以默认的无衬线字体系列呈现。
简而言之,这就是我所做的(在这个例子中,我使用“allstar”作为我的网络字体):
CSS: css在fabric.js之前的头部的fonts.css中加载
@font-face{
font-family:'allstar';
src:
url('/path-to-fonts/all_star-webfont.eot');
src:
url('/path-to-fonts/all_star-webfont.eot?#iefix') format('embedded-opentype'),
url('/path-to-fonts/all_star-webfont.woff') format('woff'),
url('/path-to-fonts/all_star-webfont.ttf') format('truetype'),
url('/path-to-fonts/all_star-webfont.svg#allstarregular') format('svg');
font-weight:normal;
font-style:normal
}
Javascript: 这是在 $(document).ready(function(){}) 内的页面底部加载的
var textSample = new fabric.Text(text, {
fontFamily: "allstar",
});
canvas.add(textSample);
canvas.renderAll();
如果我在页面的其他地方使用字体(例如:在带有点和字体的透明跨度标签中),它可以正常工作。但我认为这不是正确的编码方式。
我使用 fabric.js 版本 1.3.0