当我尝试在与 Fabric.js 关联的画布之外使用 Cufon lib 时,我遇到了问题。我正在尝试在我的应用程序中创建一个文本字体选择器,以显示可用的字体。选择器会将字体名称显示为字体样本(如 Photoshop 等)。因此,为了构建示例名称,我尝试使用 Cufon 替换字体样式,但 Fabric.js 不允许在画布之外使用。Fabric.js 显示了 Cufon 在画布内替换的文本。有人知道如何解决这个问题吗?谢谢。
问问题
450 次
1 回答
1
我找到了一种在fabric.js 之外使用Cufon 的方法,但这确实是一个肮脏的hack。
首先,我从 github 向页面添加了另一个 cufon.js。然后我在编辑器中打开它并将“Cufon”自动重命名为“CufonBase”。
我已经为 registerFont 编写了一个包装函数,它为 Cufon 和 CufonBase 调用了两次:
var makeWrap = function(fn1, fn2){
return function(){
try{
fn2.apply(this, arguments);
return fn1.apply(this, arguments);
}catch(ex){
ErrorHandler.Exception(ex);
}
};
};
Cufon.registerFont = makeWrap(Cufon.registerFont, CufonBase.registerFont);
这会覆盖加载字体并调用 CufonBase.registerFont 的 Cufon 的基本方法,因此您不必修改字体 js。
然后你可以打电话:
CufonBase.replace('h1', {fontFamily: 'font_name'});
它对我有用。
于 2012-05-23T10:33:41.947 回答