我在使用 Raphael.js 的print
方法创建文本时遇到了一些问题。更准确地说,getFont
方法所需的print
方法会返回undefined
值。我把一个非常简单的小提琴here放在一起试图找到问题的根源,但到目前为止没有运气。同样的小提琴代码如下:
<div id="canvas" style="width:500px; height:300px; outline: 1px solid #000;"></div>
JavaScript:
var canvas, font, text;
canvas = new Raphael(document.getElementById("canvas", 500, 300));
font = canvas.getFont("Arial");
text = canvas.print(0, 0, "Some text", font, 24).attr({ "fill": "#C00" });
创建画布,甚至绘制路径(尽管 font 的值未定义),但字体对象未定义返回。我也试过“Arial”字体。毕竟,这两个是标准的,所以我们不是在谈论自定义字体。
为什么会发生这种情况?
答案 0 :(得分:8)
Raphael的print
方法要求您使用Cufon-font-files。来自getFont
上的文档:
通过给定参数查找已注册字体中的字体对象。
并在registerFont
进一步阅读:
将给定字体添加到Raphaël的已注册字体集中。应该 用作Cufón字体文件中的内部调用。
有点扭曲.....
因此,如果您需要/需要使用print
方法,您必须转换并提供正确格式的字体文件,请参阅cufon here 。
如果您想使用系统字体(或 webfonts ),您可以使用非常容易使用的 Paper.text()
方法,并为文字添加样式用CSS等等。