Raphael的`getFont`方法不起作用(?)

时间:2012-10-31 18:16:48

标签: javascript svg raphael

我在使用 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”字体。毕竟,这两个是标准的,所以我们不是在谈论自定义字体。

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:8)

Raphael的print方法要求您使用Cufon-font-files。来自getFont上的文档:

  

通过给定参数查找已注册字体中的字体对象。

并在registerFont进一步阅读:

  

将给定字体添加到Raphaël的已注册字体集中。应该   用作Cufón字体文件中的内部调用。

有点扭曲.....

因此,如果您需要/需要使用print方法,您必须转换并提供正确格式的字体文件,请参阅cufon here

如果您想使用系统字体(或 webfonts ),您可以使用非常容易使用的 Paper.text() 方法,并为文字添加样式用CSS等等。